-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Native Management contract allows to deploy contract with invalid method offset #2848
Comments
I dont think we have |
Seems like the manifest is for the old contract version, because new NEF looks like this:
And
|
We have it since #2263. |
This check is performed here: neo/src/Neo/SmartContract/Helper.cs Lines 81 to 82 in e786ab4
|
Just to add this is me doing this upgrade , and yes turns out I ran an upgrade where I had the new NEF and the old manifest , so one of them was mismatching. but yes if that caused an offset issue it shouldn’t have been allowed in the first place |
@roman-khimov This was removed in #2266 9770748 . I am not sure why, but we can still bring it back, with a fork maybe. The existing checking logic is: public static void Check(this Script script, ContractAbi abi)
{
foreach (ContractMethodDescriptor method in abi.Methods)
script.GetInstruction(method.Offset);
abi.GetMethod(string.Empty,
0); // Trigger the construction of ContractAbi.methodDictionary to check the uniqueness of the method names.
_ = abi.Events.ToDictionary(p => p.Name); // Check the uniqueness of the event names.
} Which is not the same as what we have in Go. I have tested the old checking logic, it captures the offset errors. |
😲 Well, it's just an accident to me. Of course transaction and witness scripts have no methods, but that's just a separate check mode.
Currently it only affects testnet, so not an issue at all. |
@Liaojinghui, @roman-khimov This was probably just moved to neo-vm, see the And this checking code is still there and invoked during contract ABI check inside native Management's deploy: neo/src/Neo/SmartContract/Helper.cs Line 70 in ec7ac2b
But at the same time it works slightly different than #2263 and somehow doesn't catch the error in ABI offsets. |
This check is good and was present here since #1729, but it was accidently removed from the reference implementation (see the discussion in neo-project/neo#2848). The removal of this check from the C# node leaded to the T5 testnet state diff since 1670095 heigh which causes inability to process new blocks since 2272533 height (see #3049). This check was added back to the C# node in neo-project/neo#2849, but it is planned to be the part of the upcoming 3.6.0 C# node release. We need to keep our testnet healthy, thus, strict contract script check will be temporary removed from the node code and is planned to be added back to be a part of the next 3.6.0-compatible release. Close #3049.
This check is good and was present here since #1729, but it was accidently removed from the reference implementation (see the discussion in neo-project/neo#2848). The removal of this check from the C# node leaded to the T5 testnet state diff since 1670095 heigh which causes inability to process new blocks since 2272533 height (see #3049). This check was added back to the C# node in neo-project/neo#2849, but it is planned to be the part of the upcoming 3.6.0 C# node release. We need to keep our testnet healthy, thus, strict contract script check will be temporary removed from the node code and is planned to be added back to be a part of the next 3.6.0-compatible release. Close #3049. Signed-off-by: Anna Shaleva <[email protected]>
This check is good and was present here since #1729, but it was accidently removed from the reference implementation (see the discussion in neo-project/neo#2848). The removal of this check from the C# node leaded to the T5 testnet state diff since 1670095 heigh which causes inability to process new blocks since 2272533 height (see #3049). This check was added back to the C# node in neo-project/neo#2849, but it is planned to be the part of the upcoming 3.6.0 C# node release. We need to keep our testnet healthy, thus, strict contract script check will be temporary removed from the node code and is planned to be added back to be a part of the next 3.6.0-compatible release. Close #3049. Signed-off-by: Anna Shaleva <[email protected]>
This check is good and was present here since #1729, but it was accidently removed from the reference implementation (see the discussion in neo-project/neo#2848). The removal of this check from the C# node leaded to the T5 testnet state diff since 1670095 heigh which causes inability to process new blocks since 2272533 height (see #3049). This check was added back to the C# node in neo-project/neo#2849, but it is planned to be the part of the upcoming 3.6.0 C# node release. We need to keep our testnet healthy, thus, strict contract script check will be temporary removed from the node code and is planned to be added back to be a part of the next 3.6.0-compatible release. Close #3049. Signed-off-by: Anna Shaleva <[email protected]>
Describe the bug
The issue is descovered due to states diff at block 1670095 of the current testnet between neo-go and C# nodes:
Found states diff
At block 1670095 there's a single transaction (
0xc42252ccc37f37f80c8e38c6411b7ea0d1ff66ce8045265b1d61f495d906eba6
) that calls theupdate
method of the contractb531a2ec582c2806023c63cba7c3e752a459afaa
:Block 1670095
``` anna@kiwi:~/Documents/GitProjects/nspcc-dev/neo-go$ curl -d '{ "jsonrpc": "2.0", "id": 1, "method": "getblock", "params": ["0xdeb23875ed455ecc5a4e7106c23d6728aaeb77dc8ffad712d2177ab6bfe0ba10", 1] }' localhost:20332 | json_pp % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 54365 0 54229 100 136 17.2M 45333 --:--:-- --:--:-- --:--:-- 17.2M { "jsonrpc" : "2.0", "result" : { "merkleroot" : "0xc42252ccc37f37f80c8e38c6411b7ea0d1ff66ce8045265b1d61f495d906eba6", "confirmations" : 7616, "witnesses" : [ { "verification" : "FQwhAwCbdUDhDyVi5f2PrJ6uwlFmpYsm5BI0j/WoaSe/rCKiDCEDAgXpzvrqWh38WAryDI1aokaLsBSPGl5GBfxiLIDmBLoMIQIUuvDO6jpm8X5+HoOeol/YvtbNgua7bmglAYkGX0T/AQwhAj6bMuqJuU0GbmSbEk/VDjlu6RNp6OKmrhsRwXDQIiVtDCEDQI3NQWOW9keDrFh+oeFZPFfZ/qiAyKahkg6SollHeAYMIQKng0vpsy4pgdFXy1u9OstCz9EepcOxAiTXpE6YxZEPGwwhAroscPWZbzV6QxmHBYWfriz+oT4RcpYoAHcrPViKnUq9F0Ge0Nw6", "invocation" : "DEBo8O75yBksvOn2nOzrGsM6y2ifA6xzb2eW8OFQQUyiZ5xek6Y6oB8FukkHiEsifj6kRseAOkYCEkSS1WQvHws5DECk2FVhcMpKLjzIm1x8C+j5+36tOGgsZPHVkV5vB/BkzbBrGPT5NBICEEIpsglKJpQjLie0YBh1657Q/hO+z2OUDEAoXtiKkioT4aR3GPQybhyHv+/1XEPwXpfaCF5AAytfvJd3TUYloDabzSzSTIPtIw1VRubpIY86ZFcV2JnyutyfDECL2pZ1oxiPa+B57BUd7yUvr0rlNyHPAaVyklCOfU/vGr43+N8DDc5OjQucLwPrHrvLCs6GKp07TKDiMLQquFiuDEAR7K9BbdHepMQQiHs9Z99JV1AAQwuLeommC9aw+yNe3Ndw/rjed70UmNOtjn10BPabnNuNyBJOtWDi9++8ru4N" } ], "size" : 40084, "index" : 1670095, "primary" : 0, "nextblockhash" : "0x875755fd0c869692ea7f20c0ef6bf500255dd8650b89f9d4f3f9049489c7a4b0", "nonce" : "63619CEEED79E7A0", "time" : 1678317362301, "hash" : "0xdeb23875ed455ecc5a4e7106c23d6728aaeb77dc8ffad712d2177ab6bfe0ba10", "tx" : [ { "witnesses" : [ { "invocation" : "DEDbE731jSe+vzdr57L/Z6rVqocpBklfzKWcEnb0OrlJ9kq0hHqyTyY9puh6ZBRyDtRD0TXnmWVwCX2nYAUaGfmc", "verification" : "DCEClkkylEcekEm1xvWDSjGUq0/zMyfVO7TWXnY141EtUN5BVuezJw==" } ], "signers" : [ { "account" : "0x8b2b6082c4726d74107a52feff8bc836e91dde09", "scopes" : "CalledByEntry" } ], "netfee" : "4037052", "attributes" : [], "size" : 39387, "hash" : "0xc42252ccc37f37f80c8e38c6411b7ea0d1ff66ce8045265b1d61f495d906eba6", "validuntilblock" : 1675853, "nonce" : 727405985, "script" : "DX4veyJuYW1lIjoiR2hvc3RNYXJrZXQiLCJncm91cHMiOltdLCJmZWF0dXJlcyI6e30sInN1cHBvcnRlZHN0YW5kYXJkcyI6W10sImFiaSI6eyJtZXRob2RzIjpbeyJuYW1lIjoiYWRtaW5DYW5jZWxTYWxlIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImF1Y3Rpb25JZCIsInR5cGUiOiJCeXRlQXJyYXkifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjowLCJzYWZlIjpmYWxzZX0seyJuYW1lIjoidm90ZSIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJ0YXJnZXQiLCJ0eXBlIjoiUHVibGljS2V5In1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6MTE5OCwic2FmZSI6ZmFsc2V9LHsibmFtZSI6ImFkZE1hbmRhdG9yeUN1cnJlbmN5IiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImN1cnJlbmN5IiwidHlwZSI6Ikhhc2gxNjAifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjoxMzAzLCJzYWZlIjpmYWxzZX0seyJuYW1lIjoiZGVsZXRlTWFuZGF0b3J5Q3VycmVuY3kiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiY3VycmVuY3kiLCJ0eXBlIjoiSGFzaDE2MCJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjE4MTMsInNhZmUiOmZhbHNlfSx7Im5hbWUiOiJhZGRHZnVuZEN1cnJlbmN5IiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImN1cnJlbmN5IiwidHlwZSI6Ikhhc2gxNjAifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjoyMDA2LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoiZGVsZXRlR2Z1bmRDdXJyZW5jeSIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJjdXJyZW5jeSIsInR5cGUiOiJIYXNoMTYwIn1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6MjM0Mywic2FmZSI6ZmFsc2V9LHsibmFtZSI6InNldFByb3BlcnR5TWF0Y2hlckNvbnRyYWN0IiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImNvbnRyYWN0IiwidHlwZSI6Ikhhc2gxNjAifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjoyNTIzLCJzYWZlIjpmYWxzZX0seyJuYW1lIjoidXBkYXRlRmVlIiwicGFyYW1ldGVycyI6W3sibmFtZSI6InRyYWRlRmVlIiwidHlwZSI6IkludGVnZXIifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjoyNzg4LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoidXBkYXRlR2Z1bmRGZWUiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiZnVuZEZlZSIsInR5cGUiOiJJbnRlZ2VyIn1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6Mjk3OCwic2FmZSI6ZmFsc2V9LHsibmFtZSI6InVwZGF0ZU1heE9yaWdpbkZlZSIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJtYXhPcmlnaW5GZWUiLCJ0eXBlIjoiSW50ZWdlciJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjMxNzEsInNhZmUiOmZhbHNlfSx7Im5hbWUiOiJ1cGRhdGVGZWVBZGRyZXNzIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImFkZHJlc3MiLCJ0eXBlIjoiSGFzaDE2MCJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjMzODMsInNhZmUiOmZhbHNlfSx7Im5hbWUiOiJ1cGRhdGVHZnVuZENvbnRyYWN0QWRkcmVzcyIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJhZGRyZXNzIiwidHlwZSI6Ikhhc2gxNjAifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjozNTk2LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoidXBkYXRlTWluQmlkSW5jcmVhc2UiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoibWluQmlkSW5jcmVhc2UiLCJ0eXBlIjoiSW50ZWdlciJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjM4MTcsInNhZmUiOmZhbHNlfSx7Im5hbWUiOiJ3aXRoZHJhd05lcDExIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImNvbnRyYWN0IiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJ0b2tlbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6InRhcmdldCIsInR5cGUiOiJIYXNoMTYwIn1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6NDAzMywic2FmZSI6ZmFsc2V9LHsibmFtZSI6IndpdGhkcmF3QWxsTmVwMTEiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiY29udHJhY3QiLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6InRhcmdldCIsInR5cGUiOiJIYXNoMTYwIn1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6NDY1NSwic2FmZSI6ZmFsc2V9LHsibmFtZSI6IndpdGhkcmF3RXhjZXNzaXZlQmFsYW5jZSIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJjb250cmFjdCIsInR5cGUiOiJIYXNoMTYwIn1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6NTM5OSwic2FmZSI6ZmFsc2V9LHsibmFtZSI6ImdldEdmdW5kSGFzaCIsInBhcmFtZXRlcnMiOltdLCJyZXR1cm50eXBlIjoiSGFzaDE2MCIsIm9mZnNldCI6NTkxNiwic2FmZSI6dHJ1ZX0seyJuYW1lIjoiZ2V0UHJvcGVydHlNYXRjaGVySGFzaCIsInBhcmFtZXRlcnMiOltdLCJyZXR1cm50eXBlIjoiSGFzaDE2MCIsIm9mZnNldCI6NjAwMCwic2FmZSI6dHJ1ZX0seyJuYW1lIjoiZ2V0R2Z1bmRGZWVzIiwicGFyYW1ldGVycyI6W10sInJldHVybnR5cGUiOiJJbnRlZ2VyIiwib2Zmc2V0Ijo2MDUzLCJzYWZlIjp0cnVlfSx7Im5hbWUiOiJnZXRHZnVuZEN1cnJlbmNpZXMiLCJwYXJhbWV0ZXJzIjpbXSwicmV0dXJudHlwZSI6IkFycmF5Iiwib2Zmc2V0IjoyMjUyLCJzYWZlIjp0cnVlfSx7Im5hbWUiOiJnZXRNYW5kYXRvcnlDdXJyZW5jaWVzIiwicGFyYW1ldGVycyI6W10sInJldHVybnR5cGUiOiJBcnJheSIsIm9mZnNldCI6MTY3OSwic2FmZSI6dHJ1ZX0seyJuYW1lIjoiZ2V0TWF0Y2hBdHRyaWJ1dGVzUGVyT2ZmZXIiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9XSwicmV0dXJudHlwZSI6IkFycmF5Iiwib2Zmc2V0Ijo2MDg2LCJzYWZlIjp0cnVlfSx7Im5hbWUiOiJnZXRNYXRjaEF0dHJpYnV0ZXNFbmFibGVkQ29udHJhY3RzIiwicGFyYW1ldGVycyI6W3sibmFtZSI6InN0YXJ0IiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJyZXN1bHRDb3VudCIsInR5cGUiOiJJbnRlZ2VyIn1dLCJyZXR1cm50eXBlIjoiTWFwIiwib2Zmc2V0Ijo2MTk0LCJzYWZlIjp0cnVlfSx7Im5hbWUiOiJnZXRSZWdpc3RlcmVkQ3VycmVuY3lDb250cmFjdHMiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoic3RhcnQiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6InJlc3VsdENvdW50IiwidHlwZSI6IkludGVnZXIifV0sInJldHVybnR5cGUiOiJNYXAiLCJvZmZzZXQiOjY1MTAsInNhZmUiOnRydWV9LHsibmFtZSI6ImdldFJlZ2lzdGVyZWRSb3lhbHR5UGVyQ29udHJhY3QiLCJwYXJhbWV0ZXJzIjpbXSwicmV0dXJudHlwZSI6Ik1hcCIsIm9mZnNldCI6NjgxMywic2FmZSI6dHJ1ZX0seyJuYW1lIjoiZ2V0Q3VzdG9tUm95YWx0aWVzIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImNvbnRyYWN0IiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJ0b2tlbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6InJveWFsdHlUb2tlbiIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoic2FsZVByaWNlIiwidHlwZSI6IkludGVnZXIifV0sInJldHVybnR5cGUiOiJNYXAiLCJvZmZzZXQiOjY5MTcsInNhZmUiOnRydWV9LHsibmFtZSI6ImdldEV4Y2Vzc2l2ZUJhbGFuY2UiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoidG9rZW4iLCJ0eXBlIjoiSGFzaDE2MCJ9XSwicmV0dXJudHlwZSI6IkludGVnZXIiLCJvZmZzZXQiOjU2NDEsInNhZmUiOnRydWV9LHsibmFtZSI6ImdldEdNUHJvcCIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJwcm9wIiwidHlwZSI6IlN0cmluZyJ9XSwicmV0dXJudHlwZSI6IkJ5dGVBcnJheSIsIm9mZnNldCI6NTk1Nywic2FmZSI6dHJ1ZX0seyJuYW1lIjoiaXNPd25lciIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJvd25lciIsInR5cGUiOiJIYXNoMTYwIn1dLCJyZXR1cm50eXBlIjoiQm9vbGVhbiIsIm9mZnNldCI6Nzc2NSwic2FmZSI6dHJ1ZX0seyJuYW1lIjoiZ2V0T3duZXJzIiwicGFyYW1ldGVycyI6W10sInJldHVybnR5cGUiOiJBcnJheSIsIm9mZnNldCI6Nzg3NSwic2FmZSI6dHJ1ZX0seyJuYW1lIjoiaXNQYXVzZWQiLCJwYXJhbWV0ZXJzIjpbXSwicmV0dXJudHlwZSI6IkJvb2xlYW4iLCJvZmZzZXQiOjc5NTksInNhZmUiOnRydWV9LHsibmFtZSI6ImdldEF1Y3Rpb24iLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9XSwicmV0dXJudHlwZSI6IkFycmF5Iiwib2Zmc2V0Ijo4MDA4LCJzYWZlIjp0cnVlfSx7Im5hbWUiOiJnZXRBdWN0aW9uSWRzIiwicGFyYW1ldGVycyI6W3sibmFtZSI6InN0YXJ0IiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJyZXN1bHRDb3VudCIsInR5cGUiOiJJbnRlZ2VyIn1dLCJyZXR1cm50eXBlIjoiQXJyYXkiLCJvZmZzZXQiOjgwODMsInNhZmUiOnRydWV9LHsibmFtZSI6ImdldEF1Y3Rpb25zIiwicGFyYW1ldGVycyI6W3sibmFtZSI6InN0YXJ0IiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJyZXN1bHRDb3VudCIsInR5cGUiOiJJbnRlZ2VyIn1dLCJyZXR1cm50eXBlIjoiTWFwIiwib2Zmc2V0Ijo4MzIwLCJzYWZlIjp0cnVlfSx7Im5hbWUiOiJhZGRPd25lciIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJvd25lciIsInR5cGUiOiJIYXNoMTYwIn1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6ODU2MSwic2FmZSI6ZmFsc2V9LHsibmFtZSI6ImRlbGV0ZU93bmVyIiwicGFyYW1ldGVycyI6W3sibmFtZSI6Im93bmVyIiwidHlwZSI6Ikhhc2gxNjAifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0Ijo4ODA5LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoic2V0UGF1c2VkIiwicGFyYW1ldGVycyI6W3sibmFtZSI6InBhdXNlZCIsInR5cGUiOiJJbnRlZ2VyIn1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6OTAwMiwic2FmZSI6ZmFsc2V9LHsibmFtZSI6Il9kZXBsb3kiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiZGF0YSIsInR5cGUiOiJBbnkifSx7Im5hbWUiOiJ1cGRhdGUiLCJ0eXBlIjoiQm9vbGVhbiJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjkxNjIsInNhZmUiOmZhbHNlfSx7Im5hbWUiOiJ1cGRhdGUiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoibmVmRmlsZSIsInR5cGUiOiJCeXRlQXJyYXkifSx7Im5hbWUiOiJtYW5pZmVzdCIsInR5cGUiOiJTdHJpbmcifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0Ijo5Mzc3LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoib25ORVAxMVBheW1lbnQiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiZnJvbSIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiYW1vdW50IiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJ0b2tlbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6ImRhdGEiLCJ0eXBlIjoiQW55In1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6OTQ0NSwic2FmZSI6dHJ1ZX0seyJuYW1lIjoib25ORVAxN1BheW1lbnQiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiZnJvbSIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiYW1vdW50IiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJkYXRhIiwidHlwZSI6IkFueSJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjk3MDYsInNhZmUiOnRydWV9LHsibmFtZSI6InVwZ3JhZGVEb25lIiwicGFyYW1ldGVycyI6W3sibmFtZSI6InVwZ3JhZGVNZXRob2QiLCJ0eXBlIjoiU3RyaW5nIn1dLCJyZXR1cm50eXBlIjoiQm9vbGVhbiIsIm9mZnNldCI6OTk5NSwic2FmZSI6dHJ1ZX0seyJuYW1lIjoic2V0TWF0Y2hBdHRyaWJ1dGVzRW5hYmxlZEZvckNvbnRyYWN0IiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImNvbnRyYWN0IiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJlbmFibGVkIiwidHlwZSI6IkJvb2xlYW4ifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjoxMDA4OCwic2FmZSI6ZmFsc2V9LHsibmFtZSI6InNldEN1cnJlbmNpZXNGb3JDb250cmFjdCIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJjb250cmFjdCIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiY3VycmVuY2llcyIsInR5cGUiOiJBcnJheSJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjEwNTIyLCJzYWZlIjpmYWxzZX0seyJuYW1lIjoic2V0Um95YWx0aWVzRm9yQ29udHJhY3QiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiY29udHJhY3QiLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6InJveWFsdGllcyIsInR5cGUiOiJBcnJheSJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjExMjU5LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoicGxhY2VPZmZlciIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJiYXNlU2NyaXB0SGFzaCIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiZnJvbSIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoicXVvdGVTY3JpcHRIYXNoIiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJ0b2tlbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6InByaWNlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJzdGFydERhdGUiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImVuZERhdGUiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImF0dHJpYnV0ZXMiLCJ0eXBlIjoiQXJyYXkifV0sInJldHVybnR5cGUiOiJCeXRlQXJyYXkiLCJvZmZzZXQiOjEyMDg0LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoicGxhY2VPZmZlciIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJiYXNlU2NyaXB0SGFzaCIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiZnJvbSIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoicXVvdGVTY3JpcHRIYXNoIiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJ0b2tlbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6InByaWNlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJzdGFydERhdGUiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImVuZERhdGUiLCJ0eXBlIjoiSW50ZWdlciJ9XSwicmV0dXJudHlwZSI6IkJ5dGVBcnJheSIsIm9mZnNldCI6MTUxMzQsInNhZmUiOmZhbHNlfSx7Im5hbWUiOiJsaXN0VG9rZW4iLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiYmFzZVNjcmlwdEhhc2giLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6ImZyb20iLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6InF1b3RlU2NyaXB0SGFzaCIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoidG9rZW5JZCIsInR5cGUiOiJCeXRlQXJyYXkifSx7Im5hbWUiOiJwcmljZSIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoiZW5kUHJpY2UiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6InN0YXJ0RGF0ZSIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoiZW5kRGF0ZSIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoiZXh0ZW5zaW9uUGVyaW9kIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJhdWN0aW9uVHlwZSIsInR5cGUiOiJJbnRlZ2VyIn1dLCJyZXR1cm50eXBlIjoiQnl0ZUFycmF5Iiwib2Zmc2V0IjoxNTE2MSwic2FmZSI6ZmFsc2V9LHsibmFtZSI6ImNhbmNlbFNhbGUiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjE2OTY2LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoiY2FuY2VsT2ZmZXIiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjIwMDE3LCJzYWZlIjpmYWxzZX0seyJuYW1lIjoiZWRpdFNhbGUiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiZnJvbSIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6InByaWNlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJlbmRQcmljZSIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoic3RhcnREYXRlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJlbmREYXRlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJleHRlbnNpb25QZXJpb2QiLCJ0eXBlIjoiSW50ZWdlciJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjIwMjkyLCJzYWZlIjpmYWxzZX0seyJuYW1lIjoiYWNjZXB0T2ZmZXIiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiZnJvbSIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6InRva2VuSWQiLCJ0eXBlIjoiQnl0ZUFycmF5In1dLCJyZXR1cm50eXBlIjoiVm9pZCIsIm9mZnNldCI6MjEyNDksInNhZmUiOmZhbHNlfSx7Im5hbWUiOiJhY2NlcHRPZmZlciIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJmcm9tIiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJhdWN0aW9uSWQiLCJ0eXBlIjoiQnl0ZUFycmF5In0seyJuYW1lIjoidG9rZW5JZCIsInR5cGUiOiJCeXRlQXJyYXkifSx7Im5hbWUiOiJvcmlnaW5BZGRyZXNzIiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJvcmlnaW5GZWUiLCJ0eXBlIjoiSW50ZWdlciJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjIyOTgxLCJzYWZlIjpmYWxzZX0seyJuYW1lIjoiYmlkVG9rZW4iLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiZnJvbSIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6InByaWNlIiwidHlwZSI6IkludGVnZXIifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjoyMzM1NCwic2FmZSI6ZmFsc2V9LHsibmFtZSI6ImJpZFRva2VuIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImZyb20iLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6ImF1Y3Rpb25JZCIsInR5cGUiOiJCeXRlQXJyYXkifSx7Im5hbWUiOiJwcmljZSIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoib3JpZ2luQWRkcmVzcyIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoib3JpZ2luRmVlIiwidHlwZSI6IkludGVnZXIifV0sInJldHVybnR5cGUiOiJWb2lkIiwib2Zmc2V0IjoyNTYzOSwic2FmZSI6ZmFsc2V9LHsibmFtZSI6InJlbW92ZUV4cGlyZWRBdWN0aW9ucyIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJvZmZlcnMiLCJ0eXBlIjoiQm9vbGVhbiJ9XSwicmV0dXJudHlwZSI6IlZvaWQiLCJvZmZzZXQiOjI1OTk3LCJzYWZlIjpmYWxzZX1dLCJldmVudHMiOlt7Im5hbWUiOiJPcmRlckNyZWF0ZWQiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6InRva2VuSWQiLCJ0eXBlIjoiQnl0ZUFycmF5In0seyJuYW1lIjoiYmFzZVNjcmlwdEhhc2giLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6InF1b3RlU2NyaXB0SGFzaCIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoicHJpY2UiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImVuZFByaWNlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJzdGFydERhdGUiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImVuZERhdGUiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImV4dGVuc2lvblBlcmlvZCIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoiYXVjdGlvblR5cGUiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImF1Y3Rpb25GZWUiLCJ0eXBlIjoiSW50ZWdlciJ9XX0seyJuYW1lIjoiT3JkZXJDYW5jZWxsZWQiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiYXVjdGlvbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9XX0seyJuYW1lIjoiT2ZmZXJDcmVhdGVkIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImF1Y3Rpb25JZCIsInR5cGUiOiJCeXRlQXJyYXkifSx7Im5hbWUiOiJ0b2tlbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6ImJhc2VTY3JpcHRIYXNoIiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJxdW90ZVNjcmlwdEhhc2giLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6InByaWNlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJlbmRQcmljZSIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoic3RhcnREYXRlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJlbmREYXRlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJleHRlbnNpb25QZXJpb2QiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImF1Y3Rpb25UeXBlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJhdWN0aW9uRmVlIiwidHlwZSI6IkludGVnZXIifV19LHsibmFtZSI6Ik9mZmVyQ2FuY2VsbGVkIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImF1Y3Rpb25JZCIsInR5cGUiOiJCeXRlQXJyYXkifV19LHsibmFtZSI6Ik9yZGVyQmlkIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImF1Y3Rpb25JZCIsInR5cGUiOiJCeXRlQXJyYXkifSx7Im5hbWUiOiJ0b2tlbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6ImJhc2VTY3JpcHRIYXNoIiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJxdW90ZVNjcmlwdEhhc2giLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6InByaWNlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJlbmRQcmljZSIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoic3RhcnREYXRlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJlbmREYXRlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJleHRlbnNpb25QZXJpb2QiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImF1Y3Rpb25UeXBlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJhdWN0aW9uRmVlIiwidHlwZSI6IkludGVnZXIifV19LHsibmFtZSI6Ik9yZGVyRmlsbGVkIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImF1Y3Rpb25JZCIsInR5cGUiOiJCeXRlQXJyYXkifSx7Im5hbWUiOiJ0b2tlbklkIiwidHlwZSI6IkJ5dGVBcnJheSJ9LHsibmFtZSI6ImJhc2VTY3JpcHRIYXNoIiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJxdW90ZVNjcmlwdEhhc2giLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6InByaWNlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJlbmRQcmljZSIsInR5cGUiOiJJbnRlZ2VyIn0seyJuYW1lIjoic3RhcnREYXRlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJlbmREYXRlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJleHRlbnNpb25QZXJpb2QiLCJ0eXBlIjoiSW50ZWdlciJ9LHsibmFtZSI6ImF1Y3Rpb25UeXBlIiwidHlwZSI6IkludGVnZXIifSx7Im5hbWUiOiJhdWN0aW9uRmVlIiwidHlwZSI6IkludGVnZXIifV19LHsibmFtZSI6IlJveWFsdGllc1NldEZvckNvbnRyYWN0IiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImNvbnRyYWN0IiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJhZGRyZXNzIiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJJbnRlZ2VyIn1dfSx7Im5hbWUiOiJDdXJyZW5jaWVzU2V0Rm9yQ29udHJhY3QiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiY29udHJhY3QiLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6ImN1cnJlbmNpZXMiLCJ0eXBlIjoiQXJyYXkifV19LHsibmFtZSI6Ik1hdGNoQXR0cmlidXRlc1NldEZvckNvbnRyYWN0IiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImNvbnRyYWN0IiwidHlwZSI6Ikhhc2gxNjAifSx7Im5hbWUiOiJlbmFibGVkIiwidHlwZSI6IkJvb2xlYW4ifV19LHsibmFtZSI6IlJveWFsdGllc1RyYW5zZmVycmVkIiwicGFyYW1ldGVycyI6W3sibmFtZSI6InJveWFsdHlUb2tlbiIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoicm95YWx0eVJlY2lwaWVudCIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiYnV5ZXIiLCJ0eXBlIjoiSGFzaDE2MCJ9LHsibmFtZSI6InRva2VuSWQiLCJ0eXBlIjoiQnl0ZUFycmF5In0seyJuYW1lIjoiYW1vdW50IiwidHlwZSI6IkludGVnZXIifV19LHsibmFtZSI6IkF1dGhvcml6ZWQiLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiYWRkcmVzcyIsInR5cGUiOiJIYXNoMTYwIn0seyJuYW1lIjoiYWRkZWQiLCJ0eXBlIjoiQm9vbGVhbiJ9XX1dfSwicGVybWlzc2lvbnMiOlt7ImNvbnRyYWN0IjoiKiIsIm1ldGhvZHMiOiIqIn1dLCJ0cnVzdHMiOltdLCJleHRyYSI6eyJBdXRob3IiOiJNYXRoaWFzIEVuemVuc2JlcmdlciwgVmluY2VudCBHZW5lc3RlIiwiRW1haWwiOiJoZWxsb0BnaG9zdG1hcmtldC5pbyIsIkRlc2NyaXB0aW9uIjoiR2hvc3RNYXJrZXQgRXhjaGFuZ2UgQ29udHJhY3QifX0NkWlORUYzTmVvLkNvbXBpbGVyLkNTaGFycCAzLjUuMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsDvOc7g5OklxsKgannhRA3Yb86sBGl0b2EBAAEPwO85zuDk6SXGwqBqeeFEDdhvzqwLZGVzZXJpYWxpemUBAAEPwO85zuDk6SXGwqBqeeFEDdhvzqwJc2VyaWFsaXplAQABD/Vj6kC8KD1NDgXEjqMFs/Kgc0DvBHZvdGUCAAEP/aP6Q0bqUyolj8SX3a3bZDfJ/f8LZ2V0Q29udHJhY3QBAAEP/aP6Q0bqUyolj8SX3a3bZDfJ/f8JaGFzTWV0aG9kAwABD8DvOc7g5OklxsKgannhRA3Yb86sD2pzb25EZXNlcmlhbGl6ZQEAAQ/A7znO4OTpJcbCoGp54UQN2G/OrARhdG9pAgABD8DvOc7g5OklxsKgannhRA3Yb86sEWJhc2U1OENoZWNrRGVjb2RlAQABD/2j+kNG6lMqJY/El92t22Q3yf3/BnVwZGF0ZQMAAA8AAP3tZ1cDASELDC9BZG1pbkNhbmNlbFNhbGUgLSBjYWxsZXIgbmVlZHMgdG8gYmUgYXV0aG9yaXplZDV5AQAANWUBAAA1bAIAABA1XAIAAHB4aDVkAgAAcQsMIUFkbWluQ2FuY2VsU2FsZSAtIGludmFsaWQgYXVjdGlvbmkLmDUlAQAAaTU8AgAAchHbIGp4NTUCAABqGc4RlycNAAAAEdsgIwsAAAAhahnOEpchJ1oAAAAhahrONZcDAACYJ0kAAAAhCwwmQWRtaW5DYW5jZWxTYWxlIC0gTkVQLTE3IHJlZnVuZCBmYWlsZWQLahzOahrONZkDAABqFM41agMAADWkAAAAISEhIWoZzhSXJw0AAAAR2yAjCwAAACFqGc4VlyEnJQAAACHCSnjPDA5PZmZlckNhbmNlbGxlZEGVAW9hISNgAAAAISELDChBZG1pbkNhbmNlbFNhbGUgLSBORVAtMTEgdHJhbnNmZXIgZmFpbGVkC2oVzmoQzmoTzjUUAwAANSEAAADCSnjPDA5PcmRlckNhbmNlbGxlZEGVAW9hISFAVwADIXiqJwcAAAB5OiFAVwQAITXLAAAAcAsMKlZhbGlkYXRlQ29udHJhY3RPd25lciAtIGNhbGxlciBub3Qgc2lnbmVyIGgTzjWbAAAANbL///8LDC5WYWxpZGF0ZUNvbnRyYWN0T3duZXIgLSBwcm94eSBjYWxsIG5vdCBhbGxvd2VkNWYAAAA1ZwAAAJc1cf///wH/ADcAAGgTzovbKHFpNVoAAAA1TwAAAErYJQ8AAABKygAUKQYAAAA6IXJqc2sLl6onDwAAACER2yAjDwAAACEhENsgIwUAAABAQS1RCDBAQfgn7IxAQTlTbjxAQfm04jhAQZJd6DFAQfa0a+JAEYhOEFHQUBLAQEGb9mfOQMFFU4tQQZJd6DFANwEAQFcKAyE15////xA11////3A12////wAiNcr///9xNc7///8AMzW9////cnqqJ5YAAAAheTUpAQAASnhoNSUBAABFeRXOC5gndQAAACF5Fc5KeGk1DgEAAEV5Fc5qNQ8BAABzawuXJy4AAAAhNQsBAAB0eEp4bFM1AgEAAEVsNd8AAABKeRXOajXZAAAARSEjKwAAACEhazVm////dXhKeG1TNdcAAABFbTW0AAAASnkVzmo1rgAAAEUhISEhISOdAAAAISF4aDUr////dgsMJVBlcnNpc3RBdWN0aW9uU3RhdGUgLSBpbnZhbGlkIGF1Y3Rpb25uC5g16P3//241//7//3cHbwcVzguYJ0cAAAAhbwcVzmo13P7//3cIbwgLmCcoAAAAIW8INdT+//93CW8JeDVIAAAAJw8AAAAhbwl4NTwAAAAhISEheGk1MwAAACEheGg1KgAAACEhQDcCAEDBRVOLUEHmPxiEQMFFU4tQQZJd6DFAyEDQQMtA0kDBRVOLUEEvWMXtQAwUAAAAAAAAAAAAAAAAAAAAAAAAAABAVwAFIXx7enkUwB8MCHRyYW5zZmVyeDULAAAAIwUAAABAQWJ9W1JAQdv+qHRAVwAEIXt6eRPAHwwIdHJhbnNmZXJ4Nd////8jBQAAAEBXAAEhCwwkVm90ZSAtIGNhbGxlciBuZWVkcyB0byBiZSBhdXRob3JpemVkNdb8//81wvz//wsMHFZvdGUgLSB2b3RlIHdhcyB1bnN1Y2Nlc3NmdWx4NYX///81CwAAADWT/P//QDcDAEBXAgEhCww0QWRkTWFuZGF0b3J5Q3VycmVuY3kgLSBjYWxsZXIgbmVlZHMgdG8gYmUgYXV0aG9yaXplZDVd/P//NUn8//8LDDdBZGRNYW5kYXRvcnlDdXJyZW5jeSAtIGN1cnJlbmN5IGRvZXMgbm90IHN1cHBvcnQgTkVQLTE3DAZORVAtMTd4NX8AAAA1/Pv//zXmAAAANd8AAABwCww1QWRkTWFuZGF0b3J5Q3VycmVuY3kgLSBjdXJyZW5jeSBjb3VudCBoYXMgdG8gYmUgPD0gMTBoGrY1sfv//wwUTUFOREFUT1JZX0NVUlJFTkNJRVM1ovz//zXgAAAAcXh4aTXyAAAAQFcHAiF4NWYAAABweHFpC5eqJQ0AAAAQ2yAjDAAAACFocmoLl6ohJzsAAAAhaBTOE85Kc8p0EHUjIQAAAGttznYhbnmXJw8AAAAhEdsgIx0AAAAhISFtnHVtbDHi////ISEhENsgIwUAAABANwQAQMpAVwUAIQwUTUFOREFUT1JZX0NVUlJFTkNJRVM18/v//zVBAAAAcBJoNTwAAABxNT4AAAByIWk1OAAAACceAAAAIWk1MgAAAHNrEc50amw1LAAAACEj4P///yFqIwUAAABAEsBAwUVB3zC4mkDCQEGcCO2cQEHzVL8dQM9AwUVTi1BB5j8YhEBXAQEhCww3RGVsZXRlTWFuZGF0b3J5Q3VycmVuY3kgLSBjYWxsZXIgbmVlZHMgdG8gYmUgYXV0aG9yaXplZDVc+v//NUj6//8LDDpEZWxldGVNYW5kYXRvcnlDdXJyZW5jeSAtIGN1cnJlbmN5IGRvZXMgbm90IHN1cHBvcnQgTkVQLTE3DAZORVAtMTd4NXv+//81+Pn//wwUTUFOREFUT1JZX0NVUlJFTkNJRVM16fr//zUn////cHhoNW/8//9AVwIBIQsMMEFkZEdmdW5kQ3VycmVuY3kgLSBjYWxsZXIgbmVlZHMgdG8gYmUgYXV0aG9yaXplZDWi+f//NY75//8LDDNBZGRHZnVuZEN1cnJlbmN5IC0gY3VycmVuY3kgZG9lcyBub3Qgc3VwcG9ydCBORVAtMTcMBk5FUC0xN3g1yP3//zVF+f//NWwAAAA1KP7//3ALDDFBZGRHZnVuZEN1cnJlbmN5IC0gY3VycmVuY3kgY291bnQgaGFzIHRvIGJlIDw9IDEwaBq2Nf74//8MD0ZVTkRfQ1VSUkVOQ0lFUzX0+f//NTL+//9xeHhpNUT+//9AVwUAIQwPRlVORF9DVVJSRU5DSUVTNbv5//81Cf7//3ASaDUE/v//cTUG/v//ciFpNQD+//8nHgAAACFpNfr9//9zaxHOdGpsNfT9//8hI+D///8haiMFAAAAQFcBASELDDNEZWxldGVHZnVuZEN1cnJlbmN5IC0gY2FsbGVyIG5lZWRzIHRvIGJlIGF1dGhvcml6ZWQ1Tvj//zU6+P//Cww2RGVsZXRlR2Z1bmRDdXJyZW5jeSAtIGN1cnJlbmN5IGRvZXMgbm90IHN1cHBvcnQgTkVQLTE3DAZORVAtMTd4NXH8//817vf//wwPRlVORF9DVVJSRU5DSUVTNeT4//81Iv3//3B4aDVq+v//QFcBASELDDpTZXRQcm9wZXJ0eU1hdGNoZXJDb250cmFjdCAtIGNhbGxlciBuZWVkcyB0byBiZSBhdXRob3JpemVkNZP3//81f/f//wsMNFNldFByb3BlcnR5TWF0Y2hlckNvbnRyYWN0IC0gY29udHJhY3QgZG9lcyBub3QgZXhpc3R4NUkAAAA1Pff//wwNR01fUFJPUEVSVElFUzU1+P//NXP8//9weAwbR01fUFJPUEVSVFlfTUFUQ0hFUl9BRERSRVNT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IQsMJ09uTkVQMTdQYXltZW50IC0gaW52YWxpZCBwYXltZW50IGFtb3VudHkQtzWy2v//QAwUz3bii9AGLEpHjuNVYQETGfPPpNJAVwIBIQwJVVBHUkFERV9YeIvbKHBoNXzb//81cdv//3FoaZcnDwAAACER2yAjDwAAACEhENsgIwUAAABAVwEBIQwJVVBHUkFERV9YeIvbKHBoaDVP2///NQH7//9AVwICIQsMNlNldE1hdGNoQXR0cmlidXRlc0VuYWJsZWRGb3JDb250cmFjdCAtIGNvbnRyYWN0IHBhdXNlZDVy9///qjX12f//CwxzU2V0TWF0Y2hBdHRyaWJ1dGVzRW5hYmxlZEZvckNvbnRyYWN0IC0gb25seSBjYWxsYWJsZSBieSBhIHRyYWRpbmcgY29udHJhY3Qgb3duZXIgb3IgYnkgYSB0aGlyZCBwYXJ0eSBjb250cmFjdCBvd25lcjWJ2f//Jw0AAAAR2yAjDAAAACF4NUra//8hNWDZ//8LDEdTZXRNYXRjaEF0dHJpYnV0ZXNFbmFibGVkRm9yQ29udHJhY3QgLSBjb250cmFjdCBkb2VzIG5vdCBzdXBwb3J0IE5FUC0xMQwGTkVQLTExeDWG3f//NQPZ//8MGEFUVFJJQlVURVNfT0ZGRVJfRU5BQkxFRDXw2f//NS7e//9weScbAAAAIXk1Ttv//3FpeGg1Mt7//yEjDwAAACEheGg1WNv//yEhwkp4z0p5zwwdTWF0Y2hBdHRyaWJ1dGVzU2V0Rm9yQ29udHJhY3RBlQFvYUBXDAIhCwwqU2V0Q3VycmVuY2llc0ZvckNvbnRyYWN0IC0gY29udHJhY3QgcGF1c2VkNcz1//+qNU/Y//8LDGdTZXRDdXJyZW5jaWVzRm9yQ29udHJhY3QgLSBvbmx5IGNhbGxhYmxlIGJ5IGEgdHJhZGluZyBjb250cmFjdCBvd25lciBvciBieSBhIHRoaXJkIHBhcnR5IGNvbnRyYWN0IG93bmVyNe/X//8nDQAAABHbICMMAAAAIXg1sNj//yE1xtf//wsMO1NldEN1cnJlbmNpZXNGb3JDb250cmFjdCAtIGNvbnRyYWN0IGRvZXMgbm90IHN1cHBvcnQgTkVQLTExDAZORVAtMTF4Nfjb//81ddf//wsMO1NldEN1cnJlbmNpZXNGb3JDb250cmFjdCAtIHRvdGFsIGN1cnJlbmNpZXMgY2FuIG5vdCBiZSA+IDEwecoatjUu1///DBNDVVJSRU5DWV9DT0xMRUNUSU9ONSDY//81Xtz//3B5yhC3JyYBAAAheUpxynIQcyPUAAAAaWvOdCELDDtTZXRDdXJyZW5jaWVzRm9yQ29udHJhY3QgLSBjdXJyZW5jeSBkb2VzIG5vdCBzdXBwb3J0IE5FUC0xNwwGTkVQLTE3bDUl2///NaLW//81jNv//3VtSnbKdwcQdwgjXAAAAG5vCM53CSELDD5TZXRDdXJyZW5jaWVzRm9yQ29udHJhY3QgLSBjdXJyZW5jeSBpcyBhbHJlYWR5IGEgbWFuZGF0b3J5IG9uZW8JbJg1Pdb//yFvCJx3CG8Ibwcxpf///yEha5xza2oxL////yF5NZjY//93Cm8KeGg1etv//8JKeM9Kec8MGEN1cnJlbmNpZXNTZXRGb3JDb250cmFjdEGVAW9hISM9AAAAISF4aDV62P//NTDb//93C8JKeM9KbwvPDBhDdXJyZW5jaWVzU2V0Rm9yQ29udHJhY3RBlQFvYSEhQFcHAiELDClTZXRSb3lhbHRpZXNGb3JDb250cmFjdCAtIGNvbnRyYWN0IHBhdXNlZDXs8v//qjVv1f//CwxmU2V0Um95YWx0aWVzRm9yQ29udHJhY3QgLSBvbmx5IGNhbGxhYmxlIGJ5IGEgdHJhZGluZyBjb250cmFjdCBvd25lciBvciBieSBhIHRoaXJkIHBhcnR5IGNvbnRyYWN0IG93bmVyNRDV//8nDQAAABHbICMMAAAAIXg10dX//yE159T//wsMOlNldFJveWFsdGllc0ZvckNvbnRyYWN0IC0gY29udHJhY3QgZG9lcyBub3Qgc3VwcG9ydCBORVAtMTEMBk5FUC0xMXg1Gtn//zWX1P//CwxEU2V0Um95YWx0aWVzRm9yQ29udHJhY3QgLSB0b3RhbCByb3lhbHRpZXMgcmVjaXBpZW50cyBjYW4gbm90IGJlID4gMTB5yhq2NUfU//8MElJPWUFMVFlfQ09MTEVDVElPTjU61f//NXjZ//9wecoQtyd7AQAAIRBxeUpyynMQdCMDAQAAamzOdSELDEBTZXRSb3lhbHRpZXNGb3JDb250cmFjdCAtIHJveWFsdHkgYWRkcmVzcyBpcyBub3QgYSB2YWxpZCBVSW50MTYwbRDONR/g//8lDQAAABDbICMPAAAAIW0QzjUT4P//qiE1o9P//wsMNlNldFJveWFsdGllc0ZvckNvbnRyYWN0IC0gcm95YWx0eSB2YWx1ZSBjYW4ndCBiZSA+IDUwJW0RzhC3JQ0AAAAQ2yAjDQAAACFtEc4BiBO2ITVK0///aW0Rzp5KcUXCSnjPSm0Qzs9KbRHOzwwXUm95YWx0aWVzU2V0Rm9yQ29udHJhY3RBlQFvYSFsnHRsazEA////IQsMP1NldFJveWFsdGllc0ZvckNvbnRyYWN0IC0gdG90YWwgcm95YWx0aWVzIHZhbHVlcyBjYW4ndCBiZSA+IDUwJWkBiBO2Nb7S//95NTXV//92bnhoNRnY//8hIzsAAAAhIXhoNT/V///CSnjPSjVA1f//z0oQzwwXUm95YWx0aWVzU2V0Rm9yQ29udHJhY3RBlQFvYSEhQFcACCF/B359fHt6eXg1CwAAACMFAAAAQFcLCCELDCRQbGFjZU9mZmVySW50ZXJuYWwgLSBjb250cmFjdCBwYXVzZWQ1oO///6o1I9L//wsMMFBsYWNlT2ZmZXJJbnRlcm5hbCAtIGZyb20gaXMgbm90IGEgdmFsaWQgVUludDE2MHk1Sd7//yUNAAAAENsgIw0AAAAheTU/3v//qiE1z9H//wsMJFBsYWNlT2ZmZXJJbnRlcm5hbCAtIGludmFsaWQgd2l0bmVzc3k1htL//zWd0f//Cww0UGxhY2VPZmZlckludGVybmFsIC0gY2FuJ3QgYmUgY2FsbGVkIGZyb20gYSBjb250cmFjdDVL0v//NWPa//+qNVbR//8LDDRQbGFjZU9mZmVySW50ZXJuYWwgLSBjYW4ndCBiZSBjYWxsZWQgZnJvbSBhIGNvbnRyYWN0eTUg2v//qjUT0f//Cww7UGxhY2VPZmZlckludGVybmFsIC0gYmFzZVNjcmlwdEhhc2ggZG9lcyBub3Qgc3VwcG9ydCBORVAtMTEMBk5FUC0xMXg1RdX//zXC0P//Cww8UGxhY2VPZmZlckludGVybmFsIC0gcXVvdGVTY3JpcHRIYXNoIGRvZXMgbm90IHN1cHBvcnQgTkVQLTE3DAZORVAtMTd6NfPU//81cND//wsMRlBsYWNlT2ZmZXJJbnRlcm5hbCAt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NcjF//8LDCNMaXN0VG9rZW5JbnRlcm5hbCAtIGludmFsaWQgd2l0bmVzc3k1gMb//zWXxf//CwwzTGlzdFRva2VuSW50ZXJuYWwgLSBjYW4ndCBiZSBjYWxsZWQgZnJvbSBhIGNvbnRyYWN0NUbG//81Xs7//6o1UcX//wsMM0xpc3RUb2tlbkludGVybmFsIC0gY2FuJ3QgYmUgY2FsbGVkIGZyb20gYSBjb250cmFjdHk1HM7//6o1D8X//wsMOkxpc3RUb2tlbkludGVybmFsIC0gYmFzZVNjcmlwdEhhc2ggZG9lcyBub3Qgc3VwcG9ydCBORVAtMTEMBk5FUC0xMXg1Qsn//zW/xP//Cww7TGlzdFRva2VuSW50ZXJuYWwgLSBxdW90ZVNjcmlwdEhhc2ggZG9lcyBub3Qgc3VwcG9ydCBORVAtMTcMBk5FUC0xN3o18cj//zVuxP//CwxHTGlzdFRva2VuSW50ZXJuYWwgLSBiYXNlU2NyaXB0SGFzaCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgcXVvdGUgY29udHJhY3R6eDXR+P//NRjE//9+NYj5//+1Jw8AAAAhNXz5//9KhkUhIQsMIUxpc3RUb2tlbkludGVybmFsIC0gaW52YWxpZCBvd25lcnt4NW75//95lzXPw///CwwETE9MMxDbIDXAw///CwwnTGlzdFRva2VuSW50ZXJuYWwgLSBwcmljZSBoYXMgdG8gYmUgPiAwfBC3NY7D//8LDCtMaXN0VG9rZW5JbnRlcm5hbCAtIGVuZFByaWNlIGhhcyB0byBiZSA+PSAwfRC4NVjD//8LDDpMaXN0VG9rZW5JbnRlcm5hbCAtIGVuZCBkYXRlIG11c3QgYmUgbGF0ZXIgdGhhbiBzdGFydCBkYXRlfwd+tzUSw///NYP4//8DALD4ngMAAACeShAvCgAAACMcAAAASgT//////////wAAAAAAAAAAMxcAAAAE//////////8AAAAAAAAAAJEhcAsMMkxpc3RUb2tlbkludGVybmFsIC0gZW5kIGRhdGUgaXMgdG9vIGRpc3RhbnQsIG1heDogaDcAAIvbKAwMLCByZWNlaXZlZDogi9sofwc3AACL2yh/B2i2NW7C//8LDDJMaXN0VG9rZW5JbnRlcm5hbCAtIGV4dGVuc2lvblBlcmlv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dUUhCwwpQmlkVG9rZW5JbnRlcm5hbCAtIGJpZCBoYXMgdG8gYmUgbWluaW11bSBsAGShNwAAi9soDBYlIGhpZ2hlciB0aGFuIGxhc3QgYmlki9soem24NUmi//8hIWoRznZqEs53B2oRzhCXJ1kAAAAhNaTX//9KdkU1nNf//wIAXCYFnkoQLwoAAAAjHAAAAEoE//////////8AAAAAAAAAADMXAAAABP//////////AAAAAAAAAACRIUp3B0UhIzAAAAAhahLONU3X//+fahjOAegDoLUnGAAAACE1Odf//2oYzgHoA6CeSncHRSEhIWoUzjUo1///dwhvCHpqNX3Z//93CXs1Q6T//5gnFQAAACFvCXp8Nabt//+eSncJRSEhbwl6nkp3CUULDClCaWRUb2tlbkludGVybmFsIC0gTkVQLTE3IHRyYW5zZmVyIGZhaWxlZAtvCTUupP//eGoUzjX+o///NTih//9qGs412qP//5gnSgAAACELDCdCaWRUb2tlbkludGVybmFsIC0gTkVQLTE3IHJlZnVuZCBmYWlsZWQLahzOahrONduj//9qFM41rKP//zXmoP//ISHFSgvPShDPShDPSgvPSgvPSgvPShDPShDPShDPShDPSgvPShDPShDPbwlqG854ahnOahjOemoWzmoVzmoUzmoTzm8HbmoQzh1NNQvY//9Kc0UQ2yBreTWqof//wkp5z0prFc7PSmsTzs9KaxTOz0prFs7PSnrPSmsRzs9KbwfPSmsYzs9KaxnOz0prG87PDAhPcmRlckJpZEGVAW9hISFqGc4Tlyd9AQAAIQsMN0JpZFRva2VuSW50ZXJuYWwgLSB5b3UgY2FuIG5vdCBiaWQgb24geW91ciBvd24gYXVjdGlvbnN4ahDOmDX2n///ahbOahfOn3cKahLOahHOn3cLNVXV//9qEc6fdwxvDG8KoG8LoXcNahbObw2fdw5vDmoXzrUnDgAAACFqF85Kdw5FISHFSgvPShDPShDPSgvPSgvPSgvPShDPShDPShDPShDPSgvPShDPShDPbw5qG854ahnOahjObw5qFs5qFc5qFM5qE85qEs5qEc5qEM4dTTXV1v//SnNFfHtreXg1IuH//8JKec9KaxXOz0prE87PSmsUzs9KaxbOz0pvDs9KaxHOz0o1otT//89KaxjOz0prGc7PSmsbzs8MCE9yZGVyQmlkQZUBb2HCSnnPSmsVzs9KaxPOz0prFM7PSmsWzs9Kbw7PSmsRzs9KNVzU///PSmsYzs9KaxnOz0prG87PDAtPcmRlckZpbGxlZEGVAW9hISFqGc4QlycsAQAAIQsML0JpZFRva2VuSW50ZXJuYWwgLSB5b3UgY2FuIG5vdCBidXkgeW91ciBvd24gTkZUeGoQzpg1e57//wsMN0JpZFRva2VuSW50ZXJuYWwgLSBiaWQgaGFzIHRvIGJlIGVxdWFsIHRvIGN1cnJlbnQgcHJpY2V6ahbOlzU3nv//xUoLz0oQz0oQz0oLz0oLz0oLz0oQz0oQz0oQz0oQz0oLz0oQz0oQz3pqG854ahnOahjOEGoWzmoVzmoUzmoTzmoSzmoRzmoQzh1NNVzV//9Kc0V8e2t5eDWp3///wkp5z0prFc7PSmsTzs9KaxTOz0prFs7PShDPSmsRzs9KNSrT///PSmsYzs9KaxnOz0prG87PDAtPcmRlckZpbGxlZEGVAW9hISEhIUBXAQUhCwwqQmlkVG9rZW4gLSBjYW4ndCBiZSBjYWxsZWQgZnJvbSBhIGNvbnRyYWN0eDVdpv//qjVQnf//CwwqQmlkVG9rZW4gLSBjYW4ndCBiZSBjYWxsZWQgZnJvbSBhIGNvbnRyYWN0NQie//81IKb//6o1E53//wwRR01fTUFYX09SSUdJTl9GRUU1oLL//zUTs///cAsMJEJpZFRva2VuIC0gb3JpZ2luVmFsdWUgaGFzIHRvIGJlIDw9IGgAZKE3AACL2ygMASWL2yh8aLY1tpz//wsMJUJpZFRva2VuIC0gb3JpZ2luQWRkcmVzcyBpcyBub3QgdmFsaWR7Neeo//8lDQAAABDbICMNAAAAIXs13aj//6ohNW2c//8LDCxCaWRUb2tlbiAtIG9yaWdpbkFkZHJlc3MgY2FuJ3QgYmUgYSBjb250cmFjdHs1P6X//6o1Mpz//3x7enl4NTz2//9AVwkBIQsMJ1JlbW92ZUV4cGlyZWRBdWN0aW9ucyAtIGNvbnRyYWN0IHBhdXNlZDVruf//qjXum///NfWc//8QNeWc//9weDUIAQAAcWk1fKv//xC3J/gAAAAhaUpyynMQdCPiAAAAamzOdSFtaDXHnP//dniqJ2oAAAAhCwwnUmVtb3ZlRXhwaXJlZEF1Y3Rpb25zIC0gaW52YWxpZCBhdWN0aW9ubguYNXqb//9uNZGc//93BxHbIG8HbTWInP//wkptzwwOT3JkZXJDYW5jZWxsZWRBlQFvYSEjZAAAACEhCwwlUmVtb3ZlRXhwaXJlZEF1Y3Rpb25zIC0gaW52YWxpZCBvZmZlcm4LmDUWm///bjUtnP//dwgR2yBvCG01JJz//8JKbc8MDk9mZmVyQ2FuY2VsbGVkQZUBb2EhISFsnHRsazEh////ISEhQFcGASE1zJv//xA1zJv//3AaaDUUoP//cTVFq///ciFpNRCg//8n2gAAACFpNQqg//9zaxHOdGk1/5///xDOdXiqJ2AAAAAhbBnOFJglDQAAABDbICMLAAAAIWwZzhWYISUNAAAAENsgIwsAAAAhbBLOEJghJQ0AAAAQ2yAjDwAAACE1yM///2wSzrchJw4AAAAham01zar//yEhISNcAAAAISFsGc4UlyUNAAAAENsgIwsAAAAhbBnOFZghJQ0AAAAQ2yAjCwAAACFsEs4QmCElDQAAABDbICMPAAAAITVsz///bBLOtyEnDgAAACFqbTVxqv//ISEhISEjJP///yFqIwUAAABAVwABIcIVDAZzeW1ib2x4NaCc//8jBQAAAEBidB/eEsAfDAZ1cGRhdGUMFKqvWaRS58Ony2M8AgYoLFjsojG1QWJ9W1I=", "sender" : "NLp9MRxBHH2YJrsF1D1VMXg3mvze3WSTqn", "version" : 0, "sysfee" : "392322297" } ], "nextconsensus" : "NZHf1NJvz1tvELGLWZjhpb3NqZJFFUYpxT", "previousblockhash" : "0x79ac0aa5523d1d8668cf2d15b17d7c459a9a53b10c7be22aebc07ee441d8f2d0", "version" : 0 }, "id" : 1 } ```State of the contract by the moment of 1670095 block acceptance: contract_state.txt
Parsed contract script by the moment of 1670095 block acceptance: parsed_contract_script.txt
Method
update
(9377 offset) performs some witness checks and callsupdate
method of native Management. It has the following script:The transaction
0xc42252ccc37f37f80c8e38c6411b7ea0d1ff66ce8045265b1d61f495d906eba6
successfully updates the contract in the C# node and fails to update it in the neo-go node. The reason of failure in neo-go is that some of updated contract's methods do not have proper offsets (this can be seen from the arguments ofupdate
method by comparing NEF script and methods offsets taken from manifest):Updated contract manifest (JSON marshalled manifest representation): updated_manifest.txt
Parsed updated contract script got from updated NEF: updated_parsed_contract_script.txt
Methods that have wrong offset set in manifest:
cancelSale
(1 argument): 16966 offsetcancelOffer
(1 argument): 20017 offseteditSale
(7 arguments): 20292 offsetacceptOffer
(3 arguments): 21249 offsetacceptOffer
(5 arguments): 22981 offsetbidToken
(3 arguments): 23354 offsetbidToken
(5 arguments): 25639 offsetremoveExpiredAuctions
(1 argument): 25997 offsetTo Reproduce
The issue is reproduced in the testnet (see the description above).
Expected behavior
Management contract should forbid updating the contract if some methods have wrong offsets specified in manifest.
Platform:
(Optional) Additional context
I believe that the problem is somewhere inside this method:
neo/src/Neo/SmartContract/Native/ContractManagement.cs
Line 298 in e786ab4
neo-go's implementation successfully finds wrong offsets and fails to update the contract as expected, see the https://github.com/nspcc-dev/neo-go/blob/31ee21a83afc59ccb139b53398ebb6fc96b3d85a/pkg/vm/contract_checks.go#L140.
The text was updated successfully, but these errors were encountered: