From db3822d0c49e204135d41c0cd2858873a6afb337 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Thu, 1 Feb 2024 12:45:00 +0100 Subject: [PATCH 01/25] adds definitions and types according to ink v5 changes --- .../interfaces/contractsAbi/definitions.ts | 27 ++++++++++++++--- .../src/interfaces/contractsAbi/types.ts | 30 +++++++++++++++++-- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index c1abad77711f..a15ec5117572 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2024 @polkadot/types authors & contributors +// Copyright 2017-2023 @polkadot/types authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { Definitions } from '../../types/index.js'; @@ -120,6 +120,13 @@ const spec = { docs: 'Vec', environment: 'ContractEnvironmentV4' }, + ContractContractSpecV5: { + constructors: 'Vec', + messages: 'Vec', + events: 'Vec', + docs: 'Vec', + environment: 'ContractEnvironmentV4' + }, ContractDisplayName: 'SiPath', ContractEventParamSpecV0: { @@ -149,6 +156,13 @@ const spec = { args: 'Vec', docs: 'Vec' }, + ContractEventSpecV3: { + label: 'Text', + args: 'Vec', + docs: 'Vec', + module_path: 'SiPath', + signature_topic: "[u8; 32]" + }, ContractMessageParamSpecV0: { name: 'Text', type: 'ContractTypeSpec' @@ -203,11 +217,11 @@ const spec = { const latest = { ContractConstructorSpecLatest: 'ContractConstructorSpecV4', - ContractEventSpecLatest: 'ContractEventSpecV2', + ContractEventSpecLatest: 'ContractEventSpecV3', ContractEventParamSpecLatest: 'ContractEventParamSpecV2', ContractMessageParamSpecLatest: 'ContractMessageParamSpecV2', ContractMessageSpecLatest: 'ContractMessageSpecV3', - ContractMetadataLatest: 'ContractMetadataV4' + ContractMetadataLatest: 'ContractMetadataV5' }; export default { @@ -241,13 +255,18 @@ export default { types: 'Vec', spec: 'ContractContractSpecV4' }, + ContractMetadataV5: { + types: 'Vec', + spec: 'ContractContractSpecV5' + }, ContractMetadata: { _enum: { V0: 'ContractMetadataV0', V1: 'ContractMetadataV1', V2: 'ContractMetadataV2', V3: 'ContractMetadataV3', - V4: 'ContractMetadataV4' + V4: 'ContractMetadataV4', + V5: 'ContractMetadataV5' } }, ContractProjectV0: { diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index f24cea30d7b0..355aa36e16a8 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -94,6 +94,15 @@ export interface ContractContractSpecV4 extends Struct { readonly environment: ContractEnvironmentV4; } +/** @name ContractContractSpecV5 */ +export interface ContractContractSpecV5 extends Struct { + readonly constructors: Vec; + readonly messages: Vec; + readonly events: Vec; + readonly docs: Vec; + readonly environment: ContractEnvironmentV4; +} + /** @name ContractCryptoHasher */ export interface ContractCryptoHasher extends Enum { readonly isBlake2x256: boolean; @@ -138,7 +147,7 @@ export interface ContractEventParamSpecV2 extends Struct { } /** @name ContractEventSpecLatest */ -export interface ContractEventSpecLatest extends ContractEventSpecV2 {} +export interface ContractEventSpecLatest extends ContractEventSpecV3 {} /** @name ContractEventSpecV0 */ export interface ContractEventSpecV0 extends Struct { @@ -161,6 +170,15 @@ export interface ContractEventSpecV2 extends Struct { readonly docs: Vec; } +/** @name ContractEventSpecV3 */ +export interface ContractEventSpecV3 extends Struct { + readonly label: Text; + readonly args: Vec; + readonly docs: Vec; + readonly module_path: SiPath; + readonly signature_topic: U8aFixed; +} + /** @name ContractLayoutArray */ export interface ContractLayoutArray extends Struct { readonly offset: ContractLayoutKey; @@ -284,11 +302,11 @@ export interface ContractMetadata extends Enum { readonly asV3: ContractMetadataV3; readonly isV4: boolean; readonly asV4: ContractMetadataV4; - readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4'; + readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; } /** @name ContractMetadataLatest */ -export interface ContractMetadataLatest extends ContractMetadataV4 {} +export interface ContractMetadataLatest extends ContractMetadataV5 {} /** @name ContractMetadataV0 */ export interface ContractMetadataV0 extends Struct { @@ -321,6 +339,12 @@ export interface ContractMetadataV4 extends Struct { readonly spec: ContractContractSpecV4; } +/** @name ContractMetadataV5 */ +export interface ContractMetadataV5 extends Struct { + readonly types: Vec; + readonly spec: ContractContractSpecV5; +} + /** @name ContractProject */ export interface ContractProject extends ITuple<[ContractProjectInfo, ContractMetadata]> {} From 9f93a19b451b8327d379a2ea5cedf8d28160b05e Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Thu, 1 Feb 2024 12:53:11 +0100 Subject: [PATCH 02/25] adds toV5 boilerplate code draft --- packages/api-contract/src/Abi/toLatest.ts | 11 +++++++---- packages/api-contract/src/Abi/toV5.ts | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 packages/api-contract/src/Abi/toV5.ts diff --git a/packages/api-contract/src/Abi/toLatest.ts b/packages/api-contract/src/Abi/toLatest.ts index 26e41a6c4ed1..f5b571201085 100644 --- a/packages/api-contract/src/Abi/toLatest.ts +++ b/packages/api-contract/src/Abi/toLatest.ts @@ -1,17 +1,18 @@ // Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { ContractMetadataLatest, ContractMetadataV4 } from '@polkadot/types/interfaces'; +import type { ContractMetadataLatest, ContractMetadataV5 } from '@polkadot/types/interfaces'; import type { Registry } from '@polkadot/types/types'; import { v0ToV1 } from './toV1.js'; import { v1ToV2 } from './toV2.js'; import { v2ToV3 } from './toV3.js'; import { v3ToV4 } from './toV4.js'; +import { v4ToV5 } from './toV5.js'; // The versions where an enum is used, aka V0 is missing // (Order from newest, i.e. we expect more on newest vs oldest) -export const enumVersions = ['V4', 'V3', 'V2', 'V1'] as const; +export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1'] as const; type Versions = typeof enumVersions[number] | 'V0'; @@ -23,16 +24,18 @@ function createConverter (next: (registry: Registry, input: O) => Contrac next(registry, step(registry, input)); } -export function v4ToLatest (_registry: Registry, v4: ContractMetadataV4): ContractMetadataLatest { - return v4; +export function v5ToLatest (_registry: Registry, v5: ContractMetadataV5): ContractMetadataLatest { + return v5; } +export const v4ToLatest = /*#__PURE__*/ createConverter(v5ToLatest, v4ToV5); export const v3ToLatest = /*#__PURE__*/ createConverter(v4ToLatest, v3ToV4); export const v2ToLatest = /*#__PURE__*/ createConverter(v3ToLatest, v2ToV3); export const v1ToLatest = /*#__PURE__*/ createConverter(v2ToLatest, v1ToV2); export const v0ToLatest = /*#__PURE__*/ createConverter(v1ToLatest, v0ToV1); export const convertVersions: [Versions, Converter][] = [ + ['V5', v5ToLatest], ['V4', v4ToLatest], ['V3', v3ToLatest], ['V2', v2ToLatest], diff --git a/packages/api-contract/src/Abi/toV5.ts b/packages/api-contract/src/Abi/toV5.ts new file mode 100644 index 000000000000..679e40115a2a --- /dev/null +++ b/packages/api-contract/src/Abi/toV5.ts @@ -0,0 +1,20 @@ +// Copyright 2017-2023 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; + +import { objectSpread } from '@polkadot/util'; + +export function v4ToV5 (registry: Registry, v4: ContractMetadataV4): ContractMetadataV5 { + return registry.createType('ContractMetadataV5', objectSpread({}, v4, { + spec: objectSpread({}, v4.spec, { + events: v4.spec.events.map((e) => + registry.createType('ContractEventSpecV3', objectSpread({ + module_path: 'todo::todo', + signature_topic: "0xDEADBEEF" + }, e)) + ) + }) + })); +} From 0cf749e472048943ede82067f9dd7743d60adb62 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Thu, 1 Feb 2024 12:54:13 +0100 Subject: [PATCH 03/25] adds v5 flipper test contract code --- .../contracts/ink/v5/flipper.contract.json | 1 + .../src/test/contracts/ink/v5/flipper.json | 419 ++++++++++++++++++ .../src/test/contracts/ink/v5/flipper.wasm | Bin 0 -> 11930 bytes .../src/test/contracts/ink/v5/index.ts | 5 + 4 files changed, 425 insertions(+) create mode 100644 packages/api-contract/src/test/contracts/ink/v5/flipper.contract.json create mode 100644 packages/api-contract/src/test/contracts/ink/v5/flipper.json create mode 100644 packages/api-contract/src/test/contracts/ink/v5/flipper.wasm create mode 100644 packages/api-contract/src/test/contracts/ink/v5/index.ts diff --git a/packages/api-contract/src/test/contracts/ink/v5/flipper.contract.json b/packages/api-contract/src/test/contracts/ink/v5/flipper.contract.json new file mode 100644 index 000000000000..b4c263983928 --- /dev/null +++ b/packages/api-contract/src/test/contracts/ink/v5/flipper.contract.json @@ -0,0 +1 @@ +{"source":{"hash":"0x536329645b973de35b88a083a0fb769b9a6778dd7daacf1f2069c966a26fcc25","language":"ink! 5.0.0-rc","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001400b60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f017f60000060017f017f60047f7f7f7f0060057f7f7f7f7f006000017f028a0107057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650001057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100333320302030a0703010207000602040302020604060308020304060207010004000101010104020101090508050902010103010204050170010e0e0608017f01418080040b0711020463616c6c0016066465706c6f7900180913010041010b0d0c33263628342327232425212a0ae93e322c01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b1a0b2601017f230041106b22022400200220003a000f20012002410f6a41011008200241106a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741e8990410370240200320044f0440200320054b0d01200420066a200320046b2001200241889a041031200741989a041037200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41033602002000410236020c200041fc8f04360208200041033602242000200041206a3602102000200041046a36022820002000360220200041086a41f89904100d000b2003200541f89904100b000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10012000290308210120002903002102200041206a2400410541042001200284501b0b1b002000418180014f044020004180800141f88104100b000b20000b6b01017f230041306b220324002003200136020420032000360200200341146a42023702002003412c6a41033602002003410236020c200341c88f04360208200341033602242003200341206a3602102003200341046a36022820032003360220200341086a2002100d000b840101017f230041306b22022400200241146a42013702002002410136020c200241dc950436020820024102360224200220002d0000410274220041c49b046a28020036022c2002200041d89b046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10222100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241d88a0436021020024194980436020c2002410c6a1029000b4701027f230041106b22012400200141003a000f20002001410f6a4101100f220045044020012d000f21020b200141106a240041024101410220024101461b410020021b20001b0b3d01027f2000280204220320024922044504402001200220002802002201200241b49b0410312000200320026b3602042000200120026a3602000b20040b3c01027f230041106b22002400200042808001370208200041f89b04360204200041046a2201410010152001410010154100200028020c100a1014000b4401027f230041106b22022400200242808001370208200241f89b04360204200241046a22032001047f20034101101541010541000b10152000200228020c100a1014000bb20102057f017e230041306b220124002001410036021c200142808001370228200141f89b0436022420014100360220200141246a2202200141206a4104100820012001290224370214200141086a200141146a2203200128022c1013200128020c210420012802082105200129021421062001410036022c200120063702242000200210072001200129022437021420012003200128022c1013200520042001280200200128020410041a200141306a24000b4501017f2002200128020422034b044041949804412341b89a04101c000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d00200041f89b0420011005000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41033602002000410236020c200041a88b04360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a41a89a04100d000b900501077f230041306b22002400024002400240024002400240100941ff0171410546044020004180800136021441f89b04200041146a100220002802142201418180014f0d0120002001360218200041f89b0436021420004100360208200041146a200041086a4104100f0d0520002d000b210120002d000a210220002d00092103024020002d00082204412f470440200441e300470d07410121042003413a47200241a5014772200141d1004772450d010c070b41002104200341860147200241db004772200141d90147720d060b20004100360210200042808001370218200041f89b043602142000410036022c200041146a22032000412c6a41041008200020002902143702082000200041086a200028021c10132000280204210520002802002106200028020821012000200028020c2202360214200620052001200310002105200220002802142203490d0202400240024020050e0400060601060b2000200336021820002001360214200041146a100e220141ff017141024704402000280218450d020b200041206a420037020020004101360218200041c483043602140c080b200041206a4200370200200041013602182000419483043602140c070b20040d04230041106b22002400200042808001370208200041f89b04360204200041046a220241001015200141ff0171410047200210074100200028020c100a1014000b200041043a0014200041146a1017000b20014180800141f48004100b000b2003200241f48004100b000b200041206a420037020020004101360218200041a4820436021420004194980436021c200041146a41ac8204100d000b200141ff0171451012410041001011000b410141011011000b20004194980436021c200041146a41ec8204100d000b4801017f230041206b220124002001410c6a420137020020014101360204200141dc95043602002001410136021c200120003602182001200141186a360208200141ec8204100d000b860201057f230041106b22002400024002401009220141ff0171410546044020004180800136020441f89b04200041046a100220002802042201418180014f0d0120002001360208200041f89b043602042000410036020c0240200041046a2000410c6a4104100f0d0020002d000f210120002d000e210220002d000d210320002d000c220441e1004704402004419b0147200341ae0147722002419d0147200141de004772720d01200041046a100e220041ff01714102460d01200010121010000b200341ef0147200241fe0047720d002001413e460d030b410141011011000b200020013a0004200041046a1017000b20014180800141f48004100b000b410010121010000b7601027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002101a2004280208200428020c101b200028020821030b200028020020036a2001200210062003200220036a22014b044041d08304411c41dc8904101c000b20002001360208200441106a24000bbf0301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003101f20022802082105200228020c0c020b200528020021080240200310202205450440410021050c010b20052008200710060b20030c010b20022003101f2002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41f08304412141b88504101c000b1f00024020004181808080784704402000450d012001101d000b0f0b101e000b4601017f230041206b220324002003410c6a4200370200200341013602042003419498043602082003200136021c200320003602182003200341186a36020020032002100d000b860101017f230041306b220124002001200036020c2001411c6a4201370200200141023602142001418887043602102001410336022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c2000419887043602182000200141106a360214200041d88a0436021020004194980436020c2000410c6a1029000b3c01017f230041206b22002400200041146a42003702002000410136020c200041dc8504360208200041949804360210200041086a41e48504100d000b2001017f41fa9b052d00001a20011020210220002001360204200020023602000be70101027f024002400240027f41ec9b042d0000044041f09b042802000c010b3f002202418080044f0d0141f09b0441809c0536020041ec9b0441013a000041f49b04200241107436020041809c050b2101027f4100200020016a22022001490d001a41f49b042802002002490440200041ffff036a220241107640002201417f460d042001418080044f0d032001411074220120024180807c716a22022001490d0441f49b0420023602004100200020016a22022001490d011a0b41f09b04200236020020010b0f0b41e09704412141c49704101c000b41e09704412141849804101c000b41000b0c00200041ac8404200110220bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10352003200329031037021c200341086a20062001103520032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0300010b0c00200020012002101941000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101101a2004280208200428020c101b200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10190b200241106a240041000f0b41d08304411c41cc8904101c000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e220641017441bc8c046a2f00003b0000200241026b2006419c7f6c20046a41ffff037141017441bc8c046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff037141017441bc8c046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a200241017441bc8c046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041949804210420024194980441949804102b20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004102e0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004102e0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004102e0d03200341106a2001200920026b4101102f20032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10300d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101102f20032802082205418080c400460d02200328020c2109200128021422022001280218220120072004102e0d02200220082006200128020c1100000d022005200920022001103021000c020b0c020b41a08a04411c41f48e04101c000b200341406b240020000f0b41f08904412141cc9504101c000b1b00200128021441a484044105200141186a28020028020c1100000b0e0020002802001a03400c000b000bad0301047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141e498043602102001410436022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441e898046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000101f20012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10210d032001280230210020012802382103024041f89b052d000045044041f99b052d00004101710d010b200020031003410947044041f89b0541013a00000b41f99b0541013a00000b000b41d08304411c41bc9504101c000b101e000b2000101d000b230041406a220024002000413336020c200041a8870436020820004194840436021420002001413f6a360210200041246a42023702002000413c6a41063602002000410236021c200041bc8b04360218200041023602342000200041306a3602202000200041106a3602382000200041086a360230200041186a41c88804100d000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200102c22042006200120006b2200417c716a2000410371102c6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b41809104102d200228020c21052002280208210620022002280200200228020422002000417c7141ec9204102d200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41a08a04411c41ac9304101c000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441a08a04411c418c9304101c000b41a08a04411c41fc9204101c000b41a08a04411c419c9304101c000b41a08a04411c41dc9204101c000b20002001102c21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a08a04411c41bc9504101c000b3d00200220034904404194980441232004101c000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41a08a04411c41848f04101c000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b7a002001200346044020002002200110060f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41033602002000410336020c200041d09104360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a2004100d000b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41a08a04411c41b09404101c000bb90301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d002001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1032200228021c418080c400470d010c020b0b200241106a200241246a10322002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200141186a28020028020c11000021000c030b200128020422002003200320046a102b22054d0d01200241086a2001200020056b4100102f4101210020022802082205418080c400460d02200228020c21062001280214220720032004200141186a280200220128020c1100000d022005200620072001103021000c020b200128021420032004200141186a28020028020c11000021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000beb0201057f230041406a22022400200028020021054101210002402001280214220441e88a04410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4103360200200241346a410336020020024103360214200241c08a0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10220d00200528020822030440200441f48a04410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a102221000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441f48a04410220011100000d00200420032802002003280204200111000021000b200241406b240020000b1300200045044041b79804412b2001101c000b0b0be61b0300418080040b910a2f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000000000010071000000e4000000170000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72730084000100730000002701000032000000656e636f756e746572656420756e6578706563746564206572726f72080101001c0000008400010073000000f0000000170000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f666c69707065722f6c69622e72733c01010030000000060000000500000073746f7261676520656e7472792077617320656d707479007c01010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279009c0101002700000000000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000070000000000000001000000080000004572726f72000000090000000c000000040000000a0000000b0000000c0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72730000004402010071000000980100001c0000006361706163697479206f766572666c6f77000000c802010011000000440201007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000006303010015000000780301000d000000f40201006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273db0301006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000005804010071000000610700000d0000005804010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041a08a040bb10d617474656d707420746f206164642077697468206f766572666c6f77293a0000140c0100000000003d050100010000003d050100010000000700000000000000010000000d00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320760501002000000096050100120000003a200000140c010000000000b8050100020000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730407010070000000050500000d00000004070100700000009705000030000000206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e646578200000b6070100100000009407010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000d807010016000000ee0701000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000c08010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820289008010015000000a50801002b0000003c050100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000e8080100720000004700000015000000e8080100720000004f00000032000000e8080100720000005a00000009000000e808010072000000660000000d000000e8080100720000006400000011000000e80801007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000bc0901007100000091000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000400a01007a0000009500000001000000cc05010070000000d201000005000000140c010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167652f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f616c6c6f6361746f722d352e302e302d72632f7372632f62756d702e72735c0b01006800000087000000110041e097040b8b04617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000005c0b0100680000009400000016000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00140c010000000000620c0100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273740c0100740000005c0000003b000000740c0100740000005c00000014000000740c0100740000005d0000000e000000740c0100740000005e00000034000000740c0100740000006800000009000000740c01007400000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e727300480d01006b000000770000000e000000190000001c000000160000001400000019000000e40a0100fd0a0100190b01002f0b0100430b01","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"flipper","version":"5.0.0-rc","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Creates a new flipper smart contract initialized with the given value."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Creates a new flipper smart contract initialized to `false`."],"label":"new_default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x61ef7e3e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":6},"balance":{"displayName":["Balance"],"type":9},"blockNumber":{"displayName":["BlockNumber"],"type":12},"chainExtension":{"displayName":["ChainExtension"],"type":13},"hash":{"displayName":["Hash"],"type":10},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":11}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":4},"messages":[{"args":[],"default":false,"docs":[" Flips the current value of the Flipper's boolean."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":2},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Returns the current value of the Flipper's boolean."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":5},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Flipper"}},"root_key":"0x00000000","ty":1}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"}]}},"path":["flipper","flipper","Flipper"]}},{"id":2,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":4}],"path":["Result"]}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":4}],"path":["Result"]}},{"id":6,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":7,"type":{"def":{"array":{"len":32,"type":8}}}},{"id":8,"type":{"def":{"primitive":"u8"}}},{"id":9,"type":{"def":{"primitive":"u128"}}},{"id":10,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":11,"type":{"def":{"primitive":"u64"}}},{"id":12,"type":{"def":{"primitive":"u32"}}},{"id":13,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/v5/flipper.json b/packages/api-contract/src/test/contracts/ink/v5/flipper.json new file mode 100644 index 000000000000..804edb779d9f --- /dev/null +++ b/packages/api-contract/src/test/contracts/ink/v5/flipper.json @@ -0,0 +1,419 @@ +{ + "source": { + "hash": "0x536329645b973de35b88a083a0fb769b9a6778dd7daacf1f2069c966a26fcc25", + "language": "ink! 5.0.0-rc", + "compiler": "rustc 1.75.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.2.0", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "flipper", + "version": "5.0.0-rc", + "authors": [ + "Parity Technologies " + ] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "init_value", + "type": { + "displayName": [ + "bool" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + "Creates a new flipper smart contract initialized with the given value." + ], + "label": "new", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 2 + }, + "selector": "0x9bae9d5e" + }, + { + "args": [], + "default": false, + "docs": [ + "Creates a new flipper smart contract initialized to `false`." + ], + "label": "new_default", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 2 + }, + "selector": "0x61ef7e3e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 6 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 9 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 12 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 13 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 10 + }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 11 + } + }, + "events": [], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 4 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [ + " Flips the current value of the Flipper's boolean." + ], + "label": "flip", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 2 + }, + "selector": "0x633aa551" + }, + { + "args": [], + "default": false, + "docs": [ + " Returns the current value of the Flipper's boolean." + ], + "label": "get", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 5 + }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "value" + } + ], + "name": "Flipper" + } + }, + "root_key": "0x00000000", + "ty": 1 + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 0, + "typeName": ",>>::Type" + } + ] + } + }, + "path": [ + "flipper", + "flipper", + "Flipper" + ] + } + }, + { + "id": 2, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 4 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 4 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 3, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 5, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 4 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 4 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 7, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 7, + "type": { + "def": { + "array": { + "len": 32, + "type": 8 + } + } + } + }, + { + "id": 8, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 9, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 10, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 7, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 11, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 12, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 13, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } + } + ], + "version": "4" +} \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/v5/flipper.wasm b/packages/api-contract/src/test/contracts/ink/v5/flipper.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e15b683b136efc880416e08a91d80af8a94c6a86 GIT binary patch literal 11930 zcmchdZH!!3dB@LvnU~!=W8Z`YoY-ydObl5!UhnMN?5;_OufaAh3gJVks*2Vg?~a|F zeVO&l>^ep%>wv?%ASt0q>maoV3Ll_?sA^LwDnW`=Dn(UjrIw0_QW3SOiduh&RH)LX zzyCRR*1NV-)Cz2C_S|#sInQ}s|Ic&IjA?Y2J!6b_C^{KzY;1TNC;k3kV@J$MZ^N7n zd8d~~U0T~WCvzI+wedFmPk4n~x7k=4i_SEAC%V0Mr*Wofa(1kC(|TiRt$Cu?X{>Zl zH#?o?yz$+e+``K0TCd+L&o@u4ojI}G>~^)4UG<$2E6%z!_mG%5` zbGh9)?|Xh6OpFJ9FjxpYzhLry82ElZ%m+n32=jiyGokVL7y6zzkSpc}Xqg%2yj5?< zj(iab(+d~EsBn`X&NY^n%$xG_&DEv$d9!Qa4W3E8s9c(OYkhd~_B(Fh`{)`xN(9lc0RwXETQFLqcRwmzW(s;4z?=`Gp!cOM; z>CRT_#YG)#Tn? z_L4Bkw=}e9$$sqj!gwqxq)*UJi?h04+!?_^ZLwb78Vcn;f4z&*Z)Anh9D`m3A z{JLMFdG#~QDe}PZURIbiY1RGMK7~9D>#6Q1yePKPAH!VPMB>UmM<%-0$5%ec-buFi zVKW^-P>smNb$^egwx<<)iP;wvE4DEe^u%U+O`1zXiFNV4yQAG&^3VlOq8p6nr9XZs zjM*kJ(W28bG6u*PBwpPQY2c3Dri?+_moacM2I;q*jDeFeV6u}@PfkXjBx8V#i7yE+ z;!ZLtn^}{JyeAdi4Q9eeP1&!nk#RzlPKA_PfJ${cLMJ z4Wr&9@rL~&{n^Dxu@zS<+M|YAkoYdg1e$eBcyIIeKm-n$Ey0JF``u5#NX)}yPw*ht zO09UGiH>=G=9C`9ywp0S9;{RDtePX}*c&lBD}KbNJTyhRRIGVNcc<{NJ2AVXyP;#9 z77z80S3|o@+aqIDPX5Q2u*241h-7a0#%rc z-zXO2H?l2+OYvYlWTJO&F1GUb7yD_p*wtHHa&L$Ympd-^o- zz6Z4eLz%AOEi;1@F1a%cNd097BwOOeITJnZWri#w96E;baYdQT&0<1UjQ9u$yj>Sf zpe>633z~f8lQt->hb9@6*nmr*0-AgUafr1?a$X^eHGITBbmf0MkiO=fO>;;4Xn@CC zfy6{?r5M6_9s)1GNVKTHup%oojLa!$8)~`z!gyyH;2kkhh1nx!P!Kd?1}cG%9!3m6 zoQ@u2uQ2_gIaV&D9+nN#gU3+Om%L*gtn(dntaGI7l?qX6?8}dMdiyrO6;#~V0^cEMkg*&^42TjJ`o8{*=1H5vtfo%N0Cq#FTLAe>BdkFX5~~`bTnQKm9x%Fa18A+fnd94xcd2 zCyr_)zB!K3P>}w+_3{5^Ci{5l+mDumEeaG~I2@0!u^Gy?MAkQfJR}!cPi2WppI{Mq zBj5m5n?d4RlaO)!DaGU;;c9@HgiW>p^W(hGk51JSGQRNPFx`{B_;H7f*27ut3a)Pk zPW>cM_C@_0%4%8)h2v!d-V$L|-11#zupOm%y{gCuN&fh5CQ%UFOPg+V)7#c71=Q{< z{e_C}UDSTSH*vU!0UIn1%<)2A;C+>xGrf|RB&_EB4M-HA5ZEnAtT`BeQT2z33R4F7m=ztg z9o-C6TM`lt4!o!a#6;k*pol$fpb`)YRM}O5>Ku*?^bya|=@$r^R>ITwY{tDsTQB|C zN5PnwH^`{`?%5*Fg?UR1lWv1pricRy;Hk;F3x1CeIwf;0jY89}&?o&Gncc zij{jZPKxj*hN{I%2rsPR9CXAY zfM3y_M@5DcgH2El(nE_F+lvC@S$7Z~#kX)c_>S)dSw;qy6%7gxfFrXq{%H@NzWhNL za3Ma9-ZHo4Y{cU|XPMMFXm;3MX+8acdYrs?mtWs}T}}hxD~yun)P&TrE+d36*Uxzr zBHMGGOI~)}w$w)qA{fEu9U+jA4k*wDTUjdinRwQ+l=?0qT;X|Vf5J6F^amV?o7dCA z+4Qob5=QYY@-=%#6iB zuI!Lors47O0D|2@1t7HGj$_ARrd_C(4`2R9@WEuqgI~tK!IHD-OJ=1?zUrmVd@5{> z8uK<(!U=ql#PsCGQWCb@wCxkvLB6-+@N3`tyU||-7TGxQg_z|pv)>QRy@aSqeQ=K| z*Rqz4syy_mXf1awP2a+Y|N2`>SA*^fgEAvuBCZX@b8g(#+1?epI`3m#;@K9YTXyuf z%NjX({fcTdTUTA=fkPzB+(WUZ3TyA?<>_6mG_T45P_UPp=`*_S(D9!Bq;!QC_O6sC z)p|2_tjH7D9{Z)={+KJ(n0ojdfAEDr|I`a#|M-}@E`91RKl$S4pT78q3D>64r$cXW zYnGB4xx7ka3o6hGTIqvl34BIPyuV7F;ieddbu0|d#`|^3v3JPuw_eG~s#r94ggX%5 z=H6#Ld^49m>)p3Iz3^xlk0{}m$j>ykc(CPz&B9=yNT)yg?agUfnPU${^@HcDpLM|#CIiRtKh-Sc*tEEwzV^_og|j@`w#C^YT%rO+8M;R=T4yc7R|QA3 zY>A74{4>m02)D5SR8n??EkF`ZFoL}Or*C#|In2WRQ;yTD_bLkH3NPzDx$WJH?wzy} z?^o(~88->+IVVx=nSv5lcY+zS-;kobopU z*yVr7g$PBO+ePOprJ8KLh8MxL!=FYTl!39o|zJ=)K;mV6^(a?JTE=ApHkVp_otey(H||uf6OFj(7bPJ}Xc~zSptk z#AQ!MzyeE3jM#e#Z9yp8L#5?0pWfVq+so#xwhTm|AOam&bD35?g$VkF3{+awF_CIf z7Qs{;>q*-(80u2?biV%e$E;8MS$6KrzQIxXjX)|*l~d4x)sU@YidEAIH6(w)iR|f) zNb;4c^d*k90}TbHHGurU;2K6grDW&hc>LMhipK?)do24IU@=aaa^>YvCY!NbFgxZh zhkX%IWu0MT9&tET3hLplEk*hvE~yBX3L&fS4a{!I!&@E*qCDsznTEt>KN4L0xf)Hb zP}O{i5#L$O-HRf9d5{O0+#+{%qp8P!LjNtb4&4$yAktL|#Vf?C4B2C=N}N2l?w2^P z&j$Rz9*aV|>}#(fW9=lq;8~k^CVHQ{ys#G-HZKW4ILx69xs}d2h{Jq)M3k^;4hv{M z6Upj?sf%*F#VSrw{;$~uEhiV<(pmSQfT$SXDHEJ}nPN=`K?^O_JnU3G9oEsAG($nD zd!oR7IY@~h^k8gq^N9g{Pxoy0Jsr`ctD+hC71~#AKNw-aE9ALX6^IsSFTc{rQGjxK-Zh$jNGvOlF^+Db@HZ4ps{M!y^9=R zUtkV@>py<-^7Eg4>O1Mf>`-iJ=%w%f#lw%h@bLG4>*0&<#bd3rY-2{A3o_zl5VZWs zS$%gHH_;nVuyWX+l6>yOTSz`p^iR73Lqvqpql2UG>oz;x(bd)VQhV+L&Bf6JbB)fK z_GqVhW}(~boFDCW=0+D*=9>>3nCmop&F+DP_DKEo*!2AP_^DHkv8h^Z>@*V=Pw?x3 zk*Nc<1GN!WXjOCN%)&}@w7qg-?*7KY%4qX}-hocn=$~iK^7kb^Z{~9Yd01FpUFwR9 zi|`;`?(mEmr){pxwbxd9O@398tgSR3SZ&Vrc;sgm?M~72%pT_S*IefLx_qBm=t&hL z%?BFn)9j9(URqdPZFWYN7EZA#SB<8|+B}~epX~P?Npl57C+8a7q`AD>J8vFjp6J8T z(tNVg?j@_8He{C0C-cp@_Ixwhw$ePw{5zPhe~n&GM3P=RY0S?j=N5YRC++oS=k!wh z+*R+F*Oqz@%a+P*v5 z?KMs&g%{k{o z@ARDyJpq%l&0J%(F}Kh=zg5_8GlzIJ{kaw2>HP-rYdMEo_mi5$b{oBg_Da$|og}Bu z6HLkJ#==r_Ui=51c_Zxuv}M{?;Jr=z1>{q|k(_RKma*=_%9(_p04?+q`Eqj^=W#^c z&v@|J#)@;>8zkoGWrg+k;CmT9=h1OOdxJK|A4Zqk^Uf!JEp$H7z=5T+e*Xpf@?HJg z5+B{QQz&w-ca{IEq=~*!-ZJr;K-$O6(NIa@Va(k*&jw1r-5NY%VzsfdFt;eP^pb;v z7DVTqwfSJsx%bq&z3jn^h>leMW@y*6E&sm+en#>U3R$0o)m$EL>WW7A_ZW3%J6 z@v-so@rm)t@u~6p`1JV9`0PY&Vr*i3Vq#))Vrrs3F+DLeF*{kC9Ge`UoS2-PoSLjp zPEXEE&Q8^)#-_%nCZ;B*rl#ss(^E53v-MhitUg|!s880X>h=0`eWpG;U7H@89-p3= zo}8YVu1`--&rHwG)MmzJ#%CsGCTFH*>NC?bGc&WZusF;1vyh%;*(^gpS0~-3H|L`v zKbu>{UOCWTzR~YLPG5`L+y~I@^t$pq>sKtZ9rIo0zKOa2Mk_vUj2UEE%kZFt zd5n*E>i6&CS;a=b|LZ&pnEL(GJj)*az7m5HSik=(S^vh#)VG!~&kQ(lee{O%p#4W} zy6cWM=H@K=7;|XQGarDD&+!ooKaZ^ySAR_hciP0qwG|Z|s)hP>Q*(*B4nW&h?Jcgf z&#ffg?AU@;BkxD~++_5fZ1l-+OX7On3a`KLF%}948eL8Swlr}C$-!h9(eAoiN;!Ri zXdK?BAMujKPTsewc?S=!t(@yLR)_bUOekm?$;tP$SDGgi`xE8CO#_@FNyS9QEziZwf)@4#DV&OS(|ZfUx>mjgjr-ymGI*A7Cx$aWjo2D{!0YKfAP5mrx@k) Hj>!8TLVe}I literal 0 HcmV?d00001 diff --git a/packages/api-contract/src/test/contracts/ink/v5/index.ts b/packages/api-contract/src/test/contracts/ink/v5/index.ts new file mode 100644 index 000000000000..1e6423cbddae --- /dev/null +++ b/packages/api-contract/src/test/contracts/ink/v5/index.ts @@ -0,0 +1,5 @@ +// Copyright 2017-2023 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; +export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; From cfba268852e57b6de32065c990b50f7cdfa81861 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Thu, 1 Feb 2024 12:57:55 +0100 Subject: [PATCH 04/25] fix license dates --- packages/api-contract/src/Abi/toV5.ts | 2 +- packages/api-contract/src/test/contracts/ink/v5/index.ts | 2 +- packages/types/src/interfaces/contractsAbi/definitions.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/api-contract/src/Abi/toV5.ts b/packages/api-contract/src/Abi/toV5.ts index 679e40115a2a..92c1f8955102 100644 --- a/packages/api-contract/src/Abi/toV5.ts +++ b/packages/api-contract/src/Abi/toV5.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2023 @polkadot/api-contract authors & contributors +// Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; diff --git a/packages/api-contract/src/test/contracts/ink/v5/index.ts b/packages/api-contract/src/test/contracts/ink/v5/index.ts index 1e6423cbddae..abe6c64bfa33 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/index.ts +++ b/packages/api-contract/src/test/contracts/ink/v5/index.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2023 @polkadot/api-contract authors & contributors +// Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index a15ec5117572..49588248183f 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -1,4 +1,4 @@ -// Copyright 2017-2023 @polkadot/types authors & contributors +// Copyright 2017-2024 @polkadot/types authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { Definitions } from '../../types/index.js'; From 7d404f42768403325824854fb8c9518bd13d58dd Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Thu, 1 Feb 2024 13:46:11 +0100 Subject: [PATCH 05/25] adds test v5 toLatest test --- .../api-contract/src/Abi/toLatest.spec.ts | 21 +- packages/api-contract/src/Abi/toV5.ts | 4 +- .../src/test/compare/ink_v5_erc20.test.json | 370 ++++++ .../src/test/contracts/ink/index.ts | 3 +- .../test/contracts/ink/v5/erc20.contract.json | 1026 +++++++++++++++++ .../src/test/contracts/ink/v5/index.ts | 1 + .../interfaces/contractsAbi/definitions.ts | 2 +- .../src/interfaces/contractsAbi/types.ts | 4 +- 8 files changed, 1425 insertions(+), 6 deletions(-) create mode 100644 packages/api-contract/src/test/compare/ink_v5_erc20.test.json create mode 100644 packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json diff --git a/packages/api-contract/src/Abi/toLatest.spec.ts b/packages/api-contract/src/Abi/toLatest.spec.ts index c703d6bc2eb6..47e78699838f 100644 --- a/packages/api-contract/src/Abi/toLatest.spec.ts +++ b/packages/api-contract/src/Abi/toLatest.spec.ts @@ -6,7 +6,7 @@ import { TypeRegistry } from '@polkadot/types'; import abis from '../test/contracts/index.js'; -import { v0ToLatest, v1ToLatest, v2ToLatest, v3ToLatest, v4ToLatest } from './toLatest.js'; +import { v0ToLatest, v1ToLatest, v2ToLatest, v3ToLatest, v4ToLatest, v5ToLatest } from './toLatest.js'; describe('v0ToLatest', (): void => { const registry = new TypeRegistry(); @@ -137,3 +137,22 @@ describe('v4ToLatest', (): void => { ).toEqual(false); }); }); + +describe('v5ToLatest', (): void => { + const registry = new TypeRegistry(); + const contract = registry.createType('ContractMetadata', { V5: abis['ink_v5_erc20'] }); + const latest = v5ToLatest(registry, contract.asV5); + + it('has new event fields', (): void => { + + expect( + latest.spec.events.every(e=>e.has("module_path")) + ).toEqual(true); + + expect( + latest.spec.events.every(e=>e.has("signature_topic")) + ).toEqual(true); + + }); +}); + diff --git a/packages/api-contract/src/Abi/toV5.ts b/packages/api-contract/src/Abi/toV5.ts index 92c1f8955102..36b12fea5340 100644 --- a/packages/api-contract/src/Abi/toV5.ts +++ b/packages/api-contract/src/Abi/toV5.ts @@ -11,8 +11,8 @@ export function v4ToV5 (registry: Registry, v4: ContractMetadataV4): ContractMet spec: objectSpread({}, v4.spec, { events: v4.spec.events.map((e) => registry.createType('ContractEventSpecV3', objectSpread({ - module_path: 'todo::todo', - signature_topic: "0xDEADBEEF" + module_path: undefined, + signature_topic: undefined, }, e)) ) }) diff --git a/packages/api-contract/src/test/compare/ink_v5_erc20.test.json b/packages/api-contract/src/test/compare/ink_v5_erc20.test.json new file mode 100644 index 000000000000..c8d5fe3675ec --- /dev/null +++ b/packages/api-contract/src/test/compare/ink_v5_erc20.test.json @@ -0,0 +1,370 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 5, + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 6, + "lookupName": "InkStorageTraitsImplsAutoKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::AutoKey" + }, + { + "info": "Null", + "lookupIndex": 7, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "lookupName": "InkStorageTraitsImplsResolverKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 12, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "Erc20", + "type": "{\"totalSupply\":\"u128\",\"balances\":\"Null\",\"allowances\":\"InkStorageLazyMapping\"}", + "docs": [], + "namespace": "erc20::erc20::Erc20", + "sub": [ + { + "docs": [], + "name": "totalSupply", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "namespace": "", + "typeName": "" + }, + { + "docs": [], + "name": "balances", + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + }, + { + "docs": [], + "name": "allowances", + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 17, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 20, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 21, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 23, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 24, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/index.ts b/packages/api-contract/src/test/contracts/ink/index.ts index ef702ec99df2..e2378ace3477 100644 --- a/packages/api-contract/src/test/contracts/ink/index.ts +++ b/packages/api-contract/src/test/contracts/ink/index.ts @@ -7,5 +7,6 @@ import * as v1 from './v1/index.js'; import * as v2 from './v2/index.js'; import * as v3 from './v3/index.js'; import * as v4 from './v4/index.js'; +import * as v5 from './v5/index.js'; -export default createVersionedExport({ v0, v1, v2, v3, v4 }); +export default createVersionedExport({ v0, v1, v2, v3, v4, v5 }); diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json b/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json new file mode 100644 index 000000000000..37d7e5f88d3d --- /dev/null +++ b/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json @@ -0,0 +1,1026 @@ +{ + "source": { + "hash": "0x37cb53e1aa5636a016d38d70a3f8ca2a533c4c6f9da07541f1ae7ce1ed01b5c2", + "language": "ink! 5.0.0-rc", + "compiler": "rustc 1.75.0", + "wasm": "0x0061736d01000000014d0d60027f7f0060037f7f7f0060037f7f7f017f60017f0060000060047f7f7f7f017f60027e7e0060047f7f7f7f0060047f7f7e7e0060037e7e7f0060037f7e7e006000017f60047f7f7e7e017f02b10109057365616c310b6765745f73746f726167650005057365616c3005696e7075740000057365616c300d6465706f7369745f6576656e740007057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e0001057365616c300663616c6c65720000057365616c301176616c75655f7472616e736665727265640000057365616c300f686173685f626c616b65325f323536000103656e76066d656d6f72790201021003222102020202080000090a0001030103000000030100030b0001000604060000040c040616037f01418080040b7f0041c880050b7f0041d080050b0711020463616c6c0026066465706c6f7900280ad932212b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6f01017f0240200020014d04402000210303402002450d02200320012d00003a0000200141016a2101200341016a2103200241016b21020c000b000b200141016b2101200041016b210303402002450d01200220036a200120026a2d00003a0000200241016b21020c000b000b20000b2501017f037f2002200346047f200005200020036a20013a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b9e0101037f230041106b22042400200442808001370208200441c8800436020441b7c380e57e200441046a2205100d20002005100e20012005100e024020042802082206200428020c2200490d00200428020421012004410036020c2004200620006b3602082004200020016a360204200220032005100f200428020c220620042802084b0d00200120002004280204200610031a200441106a24000f0b000b2601017f230041106b220224002002200036020c20012002410c6a41041014200241106a24000b0a0020012000412010140b2a01017f230041106b2203240020032001370308200320003703002002200341101014200341106a24000b980101047f230041106b22032400200342808001370208200341c8800436020441e7b98fb102200341046a2205100d20002005100e024020032802082204200328020c2200490d00200328020421062003410036020c2003200420006b3602082003200020066a360204200120022005100f200328020c220420032802084b0d00200620002003280204200410031a200341106a24000f0b000ba90101057f230041306b2202240002402000280204220420002802082203490d00200028020021052002410036020c2002200420036b22043602082002200320056a22053602042001200241046a2206100e200228020c220120022802084b0d0020062002280204200110122002410036022c20022004360228200220053602242006200241246a100e2003200228022c6a22012003490d0020002001360208200241306a24000f0b000bed0101077f230041406a22032400200341186a22044200370300200341106a22054200370300200341086a22064200370300200342003703000240200241214f0440200341386a22074200370300200341306a22084200370300200341286a220942003703002003420037032020012002200341206a1007200420072903003703002005200829030037030020062009290300370300200320032903203703000c010b20032001200210081a0b20002003290300370000200041186a200341186a290300370000200041106a200341106a290300370000200041086a200341086a290300370000200341406b24000bb40101077f230041306b2201240002402000280204220320002802082202490d00200028020021042001410036020c2001200320026b22033602082001200220046a2204360204200141003a0024200141046a2205200141246a220641011014200128020c220720012802084b0d0020052001280204200710122001410036022c200120033602282001200436022420052006100e20022002200128022c6a22024b0d0020002002360208200141306a24000f0b000b4801027f024002402000280208220320026a22042003490d00200420002802044b0d00200420036b2002470d01200028020020036a2001200210081a200020043602080f0b000b000b3e01027f024020002802082201200028020422024b2001200246720d00200028020020016a410c3a0000200141016a2201450d00200020013602080f0b000b5502027f017e230041206b22022400200241086a20011017200241186a29030021042002280208210320002002290310370308200041106a200437030020002003200128020472410047ad370300200241206a24000b5c02017f037e20012802042202411049047e4201052001200241106b36020420012001280200220141106a360200200141086a29000021032001290000210442000b21052000200437030820002005370300200041106a20033703000bb90102027f017e230041206b22032400420121040240200128020422024120490d002001200241206b36020420012001280200220241206a360200200341086a200110172003290308a70d00200341186a2903002104200041286a200329031037030020002002290000370008200041306a2004370300200041206a200241186a290000370000200041186a200241106a290000370000200041106a200241086a290000370000420021040b20002004370300200341206a24000bb00201057f230041306b2201240020014280800137020c200141c88004360208200141086a1015200141286a200141106a28020036020020012001290208370320200141146a2202200141206a41858004101a200041316a2104024020002d001004402002200041116a10110c010b200141146a10130b200141286a2001411c6a28020036020020012001290214370320024020042d00000440200141206a200041326a10110c010b200141206a10130b02402001280224220320012802282202490d0020012802202105200141003602282001200320026b3602242001200220056a360220200041106a200141206a2203101b20042003101b2000290300200041086a2903002003100f2001280228220020012802244b0d0020052002200128022020001002200141306a24000f0b000bd10101057f230041306b2203240002400240200204402001280204220520012802082204490d02200128020021062003410036020c2003200520046b22053602082003200420066a22063602042002200341046a2207100e200328020c220220032802084b0d0220072003280204200210122003410036022c20032005360228200320063602242007200341246a100e2004200328022c6a22022004490d02200120023602080c010b200110130b20002001290200370200200041086a200141086a280200360200200341306a24000f0b000b210020002d00004504402001410010250f0b200141011025200041016a2001100e0b6d01017f230041106b2201240020014180800136020c41c880042001410c6a1005200041c98004290000370001200041096a41d18004290000370000200041116a41d98004290000370000200041186a41e08004290000370000200041c880042d00003a0000200141106a24000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10062000290308210120002903002102200041206a2400410541042001200284501b0bda0102047f027e230041306b22022400200242808001370228200241c8800436022441e7b98fb102200241246a2203100d20012003100e024020022802282205200228022c2201490d00200228022421042002200520016b220536022420042001200120046a2201200310002104200520022802242203490d00027e0240024020040e0400030301030b2002200336022820022001360224200241086a200241246a10162002290308a70d0220022903102106200241186a2903000c010b42000b21072000200637030020002007370308200241306a24000f0b000be00102037f027e230041306b22032400200342808001370228200341c8800436022441b7c380e57e200341246a2204100d20012004100e20022004100e024020032802282205200328022c2201490d00200328022421022003200520016b220536022420022001200120026a2201200410002102200520032802242204490d00027e0240024020020e0400030301030b2003200436022820032001360224200341086a200341246a10162003290308a70d0220032903102106200341186a2903000c010b42000b21072000200637030020002007370308200341306a24000f0b000b4401027f41c8800441003a000041012103200141ff0171410247044041c9800441013a000041022103200121020b200341c880046a20023a00002000200341016a1024000b4c01017f230041106b22022400200241c8800436020441c8800441003a0000200242808081801037020820002001200241046a100f200228020c2202418180014f0440000b410020021024000b130041c880044181023b0100410141021024000b8e0101057f230041106b22022400200242808001370208200241c880043602044100200241046a2206100d024020022802082203200228020c2204490d00200228020421052002410036020c2002200320046b3602082002200420056a360204200020012006100f200228020c220320022802084b0d00200520042002280204200310031a200241106a24000f0b000b0d00200041c8800420011004000b2d01017f2000280208220220002802044904402000200241016a360208200028020020026a20013a00000f0b000ba91202087f047e23004190046b2200240002400240101d41ff01714105470d002000418080013602b80341c88004200041b8036a100120002802b8032202418180014f0d0020024104490d01200041cc80043602a8032000200241046b22053602ac0341cb80042d0000210141ca80042d0000210341c980042d00002104027f02400240024002400240024041c880042d00002206410b6b0e050508080801000b0240200641e8006b0e03040802000b2006418401460d02200641db0147200441e3004772200341f50047200141a8014772720d0741000c050b200441f50047200541204972200341da0047200141d6004772720d0620004190016a41d5800429000037030020004198016a41dd80042900003703002000419f016a41e48004290000370000200041cd80042900003703880141cc80042d0000210241010c040b2004200341164772200141de004720054120497272200241c4006b41604f720d05200041df036a41f48004290200370000200041e7036a41fc8004290200370000200041ef036a41848104290200370000200041c0036a41d58004290000370300200041c8036a41dd8004290000370300200041cf036a41e48004290000370000200041ec80042902003700d703200041cd80042900003703b80341cc80042d0000210220004188016a200041b8036a413f10081a41020c030b200441a10147200341dd004772200141a10147720d04200041b8036a200041a8036a101820002903b8034200520d04200041d6026a200041ce016a200041366a200041c0036a4130100841301008413010081a20004188016a200041d0026a413610081a41030c020b2004411247200341e6004772200141a00147720d03200041b8036a200041a8036a101820002903b8034200520d03200041d6026a200041ce016a200041366a200041c0036a4130100841301008413010081a20004188016a200041d0026a413610081a41040c010b2004413947200341ef0047722001411847200541204972720d02200241c4006b220241604f2002410f4d720d02200041d8026a41d48004290200370300200041e0026a41dc8004290200370300200041e8026a41e48004290200370300200041f8026a41f4800429020037030020004180036a41fc800429020037030020004188036a41848104290200370300200041cc80042902003703d002200041ec80042902003703f002419481042902002108418c8104290200210920004190026a2201200041d0026a41c00010081a200041ce016a200041366a200041be036a200141c000100841c000100841c00010081a20004188016a200041c8016a413f10081a20002000418a026a28000036009f03200020002800870236029c0341050b2101200041306a220441027220004188016a413f10081a200041f4006a200028009f0336000020004180016a20083703002000200028029c0336007120002009370378200020023a0031200020013a00302000428080013702bc03200041c880043602b8034100200041b8036a2205100d20002802bc03220620002802c0032202490d0020002802b80321032000200620026b22063602b80320032002200220036a220320051000200620002802b803220249722002411047200241104972720d0020044101722102200341086a290000210820002003290000220937038801200020083703900102400240024002400240024002400240200141016b0e050001040502030b230041406a22012400200141286a200241086a290000370200200141306a200241106a290000370200200141386a200241186a290000370200200120004188016a36021c20012002290000370220200141086a200141206a101e200129030821082000200141106a29030037030820002008370300200141406b24002000290300200041086a2903001021000b230041e0006b22012400200120004188016a36021c200141086a200141206a200241c0001008200141406b101f20012903082108200041106a2202200141106a29030037030820022008370300200141e0006a24002000290310200041186a2903001021000b200041c0036a200041386a41d00010082102200020004188016a3602b80320004180046a290300210920004188046a2903002108200041c8016a2201101c200041206a20022001101f41012103410121012000290320220b2009542204200041286a290300220a2008542008200a511b0d04410221012002200041e0036a20092008102741ff017122054102460d03200541004721010c040b200920081021000b200041c0036a200041386a413010082102200020004188016a3602b803200041e8036a2903002108200041e0036a2903002109200041c8016a2201101c20012002200920081027220241ff0171410246047f20002903880120004190016a290300102341000541010b20021020000b200041d8026a200041386a413010082102200020004188016a3602d00220004180036a2903002108200041f8026a290300210920004190026a2201101c2001200220092008100c200041e0016a200041a8026a290000370300200041d8016a200041a0026a290000370300200041d0016a20004198026a290000370300200041f0016a200041406b290300370300200041f8016a200041c8006a29030037030020004180026a200041d0006a29030037030020002000290090023703c801200020002903383703e801200041b8036a2203200041c8016a41c00010081a20004180046a22052008370300200020093703f80320004280800137029403200041c880043602900320004190036a1015200041b0036a220120004198036a28020036020020002000290290033703a8032000419c036a2204200041a8036a220241a68004101a2004200310112001200041a4036a2802003602002000200029029c033703a8032002200041d8036a2206101120002802ac03220720012802002201490d0220002802a8032104200041003602b0032000200720016b3602ac032000200120046a3602a80320032002100e20062002100e20002903f80320052903002002100f20002802b003220220002802ac034b0d022004200120002802a8032002100220002903880120004190016a2903001023410041021020000b2002200041c8016a200b20097d200a20087d2004ad7d100c20002903880120004190016a2903001023410021030b200320011020000b000b1022000bc80202037f037e23004180016b22042400200441186a2000101e0240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d1010200441086a2001101e2004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b4101460d012001200920081010200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1019410221050b20044180016a240020050f0b000bef0302067f027e23004190016b220024000240101d41ff01714105470d0020004180800136022841c88004200041286a2204100120002802282201418180014f0d00024020014104490d0041c880042d0000419b01470d0041c980042d000041ae01470d0041ca80042d0000419d01470d0041cb80042d000041de0047200141146b416f4b720d0041d48004290200210641cc80042902002107200041086a101c200041c4006a200041206a2900003702002000413c6a200041186a290000370200200041346a200041106a2900003702002000200029000837022c20004180800436022820004280800137028801200041c880043602840141e7b98fb10220004184016a2202100d2000412c6a2002100e2000280288012205200028028c012201490d0120002802840121032000410036028c012000200520016b360288012000200120036a36028401200720062002100f200028028c0122022000280288014b0d0120032001200028028401200210031a200041f2006a200041206a290000370100200041ea006a200041186a290000370100200041e2006a200041106a290000370100200041da006a20002900083701002000200637033020002007370328200041013a0059200041003a00382004101920072006102341c8800441003b0100410041021024000b1022000b000b0b4e0100418080040b46e7dc232601b5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb011a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d", + "build_info": { + "build_mode": "Release", + "cargo_contract_version": "4.0.0-rc.1", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "erc20", + "version": "5.0.0-rc", + "authors": [ + "Parity Technologies " + ] + }, + "image": null, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "total_supply", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + "Creates a new ERC-20 contract with the specified initial supply." + ], + "label": "new", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 14 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 2 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 0 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 23 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 24 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 21 + }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 22 + } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": [ + "Option" + ], + "type": 20 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": [ + "Option" + ], + "type": 20 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when a token transfer occurs." + ], + "label": "Transfer", + "module_path": "erc20::erc20", + "signature_topic": "0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval", + "module_path": "erc20::erc20", + "signature_topic": "0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d" + } + ], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 15 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [ + " Returns the total token supply." + ], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0xdb6375a8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0x0f755a56" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0x6a00165e" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x84a15da1" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x681266a0" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "to", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xe7dc2326", + "ty": 0 + } + }, + "root_key": "0xe7dc2326", + "ty": 1 + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xb721a0ec", + "ty": 0 + } + }, + "root_key": "0xb721a0ec", + "ty": 9 + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000", + "ty": 13 + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 2 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 5 + } + ], + "path": [ + "ink_storage", + "lazy", + "mapping", + "Mapping" + ] + } + }, + { + "id": 2, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 3, + "type": { + "def": { + "array": { + "len": 32, + "type": 4 + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 7 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ResolverKey" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": {} + }, + "path": [ + "ink_storage_traits", + "impls", + "AutoKey" + ] + } + }, + { + "id": 7, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ManualKey" + ] + } + }, + { + "id": 8, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 9, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 10 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 11 + } + ], + "path": [ + "ink_storage", + "lazy", + "mapping", + "Mapping" + ] + } + }, + { + "id": 10, + "type": { + "def": { + "tuple": [ + 2, + 2 + ] + } + } + }, + { + "id": 11, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 12 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ResolverKey" + ] + } + }, + { + "id": 12, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ManualKey" + ] + } + }, + { + "id": 13, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "total_supply", + "type": 0, + "typeName": ",>>::Type" + }, + { + "name": "balances", + "type": 1, + "typeName": " as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type" + }, + { + "name": "allowances", + "type": 9, + "typeName": " as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type" + } + ] + } + }, + "path": [ + "erc20", + "erc20", + "Erc20" + ] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 18 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 18 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 19 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 19 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": [ + "erc20", + "erc20", + "Error" + ] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 2 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 21, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 22, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 23, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 24, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } + } + ], + "version": "4" +} diff --git a/packages/api-contract/src/test/contracts/ink/v5/index.ts b/packages/api-contract/src/test/contracts/ink/v5/index.ts index abe6c64bfa33..4ece292d9a6e 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/index.ts +++ b/packages/api-contract/src/test/contracts/ink/v5/index.ts @@ -3,3 +3,4 @@ export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; +export { default as erc20 } from './erc20.contract.json' assert { type: 'json' }; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index 49588248183f..497f4e5812f1 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -160,7 +160,7 @@ const spec = { label: 'Text', args: 'Vec', docs: 'Vec', - module_path: 'SiPath', + module_path: 'Text', signature_topic: "[u8; 32]" }, ContractMessageParamSpecV0: { diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index 355aa36e16a8..b6f13243a88d 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -175,7 +175,7 @@ export interface ContractEventSpecV3 extends Struct { readonly label: Text; readonly args: Vec; readonly docs: Vec; - readonly module_path: SiPath; + readonly module_path: Text; readonly signature_topic: U8aFixed; } @@ -302,6 +302,8 @@ export interface ContractMetadata extends Enum { readonly asV3: ContractMetadataV3; readonly isV4: boolean; readonly asV4: ContractMetadataV4; + readonly isV5: boolean; + readonly asV5: ContractMetadataV5; readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; } From 1f9e6f5c841a0e58afa8c5ef876ab543ecfcf6ec Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Thu, 1 Feb 2024 14:35:34 +0100 Subject: [PATCH 06/25] implements new scheme to determine event --- packages/api-contract/src/Abi/index.ts | 20 +++++++++++++------ .../api-contract/src/Abi/toLatest.spec.ts | 1 - packages/api-contract/src/base/Contract.ts | 4 ++-- packages/api-contract/src/types.ts | 1 + 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 5b3b28fcc150..74927b8ed869 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec } from '@polkadot/types/interfaces'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec, EventRecord, Hash } from '@polkadot/types/interfaces'; import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; @@ -162,10 +162,16 @@ export class Abi { /** * Warning: Unstable API, bound to change */ - public decodeEvent (data: Bytes | Uint8Array): DecodedEvent { - const index = data[0]; - const event = this.events[index]; + public decodeEvent (data: Bytes | Uint8Array, topic:EventRecord['topics'][0]): DecodedEvent { + // try to find a topic signature match - ink! v5 upwards + let event = this.events.find(e=>e.signatureTopic === topic.toHex()) + if(event){ + return event.fromU8a(data.subarray(0)); + } + // otherwise fallback to using the index to determine event - ink! v4 downwards + const index = data[0]; + event = this.events[index]; if (!event) { throw new Error(`Unable to find event with index ${index}`); } @@ -235,6 +241,7 @@ export class Abi { #createEvent = (spec: ContractEventSpecLatest, index: number): AbiEvent => { const args = this.#createArgs(spec.args, spec); + const event = { args, docs: spec.docs.map((d) => d.toString()), @@ -242,8 +249,9 @@ export class Abi { args: this.#decodeArgs(args, data), event }), - identifier: spec.label.toString(), - index + identifier: [spec.module_path, spec.label.toString()].join("::"), + signatureTopic: spec.signature_topic.toHex() || undefined, + index, }; return event; diff --git a/packages/api-contract/src/Abi/toLatest.spec.ts b/packages/api-contract/src/Abi/toLatest.spec.ts index 47e78699838f..cf0c7a165b55 100644 --- a/packages/api-contract/src/Abi/toLatest.spec.ts +++ b/packages/api-contract/src/Abi/toLatest.spec.ts @@ -144,7 +144,6 @@ describe('v5ToLatest', (): void => { const latest = v5ToLatest(registry, contract.asV5); it('has new event fields', (): void => { - expect( latest.spec.events.every(e=>e.has("module_path")) ).toEqual(true); diff --git a/packages/api-contract/src/base/Contract.ts b/packages/api-contract/src/base/Contract.ts index 4af41008815d..f6c41b15d324 100644 --- a/packages/api-contract/src/base/Contract.ts +++ b/packages/api-contract/src/base/Contract.ts @@ -115,9 +115,9 @@ export class Contract extends Base { // ContractEmitted is the current generation, ContractExecution is the previous generation new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records: EventRecord[]) => records - .map(({ event: { data: [, data] } }): DecodedEvent | null => { + .map(({ event: { data: [, data] },topics }): DecodedEvent | null => { try { - return this.abi.decodeEvent(data as Bytes); + return this.abi.decodeEvent(data as Bytes, topics[0]); } catch (error) { l.error(`Unable to decode contract event: ${(error as Error).message}`); diff --git a/packages/api-contract/src/types.ts b/packages/api-contract/src/types.ts index cb3fcc180537..f5c1b2a18098 100644 --- a/packages/api-contract/src/types.ts +++ b/packages/api-contract/src/types.ts @@ -28,6 +28,7 @@ export interface AbiEvent { fromU8a: (data: Uint8Array) => DecodedEvent; identifier: string; index: number; + signatureTopic?: string; } export interface AbiMessage { From 985365f825339a0ae29145fbce77b26744e0687c Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Thu, 1 Feb 2024 14:46:01 +0100 Subject: [PATCH 07/25] apply linter changes --- packages/api-contract/src/Abi/index.ts | 15 +++++++++------ packages/api-contract/src/Abi/toLatest.spec.ts | 6 ++---- packages/api-contract/src/Abi/toLatest.ts | 2 +- packages/api-contract/src/Abi/toV5.ts | 2 +- packages/api-contract/src/base/Contract.ts | 2 +- .../src/test/contracts/ink/v5/index.ts | 2 +- .../src/interfaces/contractsAbi/definitions.ts | 2 +- 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 74927b8ed869..4f155c24058f 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec, EventRecord, Hash } from '@polkadot/types/interfaces'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec, EventRecord } from '@polkadot/types/interfaces'; import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; @@ -162,16 +162,19 @@ export class Abi { /** * Warning: Unstable API, bound to change */ - public decodeEvent (data: Bytes | Uint8Array, topic:EventRecord['topics'][0]): DecodedEvent { + public decodeEvent (data: Bytes | Uint8Array, topic: EventRecord['topics'][0]): DecodedEvent { // try to find a topic signature match - ink! v5 upwards - let event = this.events.find(e=>e.signatureTopic === topic.toHex()) - if(event){ + let event = this.events.find((e) => e.signatureTopic === topic.toHex()); + + if (event) { return event.fromU8a(data.subarray(0)); } // otherwise fallback to using the index to determine event - ink! v4 downwards const index = data[0]; + event = this.events[index]; + if (!event) { throw new Error(`Unable to find event with index ${index}`); } @@ -249,9 +252,9 @@ export class Abi { args: this.#decodeArgs(args, data), event }), - identifier: [spec.module_path, spec.label.toString()].join("::"), - signatureTopic: spec.signature_topic.toHex() || undefined, + identifier: [spec.module_path, spec.label.toString()].join('::'), index, + signatureTopic: spec.signature_topic.toHex() || undefined }; return event; diff --git a/packages/api-contract/src/Abi/toLatest.spec.ts b/packages/api-contract/src/Abi/toLatest.spec.ts index cf0c7a165b55..b69a50c7689a 100644 --- a/packages/api-contract/src/Abi/toLatest.spec.ts +++ b/packages/api-contract/src/Abi/toLatest.spec.ts @@ -145,13 +145,11 @@ describe('v5ToLatest', (): void => { it('has new event fields', (): void => { expect( - latest.spec.events.every(e=>e.has("module_path")) + latest.spec.events.every((e) => e.has('module_path')) ).toEqual(true); expect( - latest.spec.events.every(e=>e.has("signature_topic")) + latest.spec.events.every((e) => e.has('signature_topic')) ).toEqual(true); - }); }); - diff --git a/packages/api-contract/src/Abi/toLatest.ts b/packages/api-contract/src/Abi/toLatest.ts index f5b571201085..3ed1844dcb66 100644 --- a/packages/api-contract/src/Abi/toLatest.ts +++ b/packages/api-contract/src/Abi/toLatest.ts @@ -1,7 +1,7 @@ // Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { ContractMetadataLatest, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { ContractMetadataLatest, ContractMetadataV5 } from '@polkadot/types/interfaces'; import type { Registry } from '@polkadot/types/types'; import { v0ToV1 } from './toV1.js'; diff --git a/packages/api-contract/src/Abi/toV5.ts b/packages/api-contract/src/Abi/toV5.ts index 36b12fea5340..9d483440f65e 100644 --- a/packages/api-contract/src/Abi/toV5.ts +++ b/packages/api-contract/src/Abi/toV5.ts @@ -12,7 +12,7 @@ export function v4ToV5 (registry: Registry, v4: ContractMetadataV4): ContractMet events: v4.spec.events.map((e) => registry.createType('ContractEventSpecV3', objectSpread({ module_path: undefined, - signature_topic: undefined, + signature_topic: undefined }, e)) ) }) diff --git a/packages/api-contract/src/base/Contract.ts b/packages/api-contract/src/base/Contract.ts index f6c41b15d324..9dd14cad7da3 100644 --- a/packages/api-contract/src/base/Contract.ts +++ b/packages/api-contract/src/base/Contract.ts @@ -115,7 +115,7 @@ export class Contract extends Base { // ContractEmitted is the current generation, ContractExecution is the previous generation new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records: EventRecord[]) => records - .map(({ event: { data: [, data] },topics }): DecodedEvent | null => { + .map(({ event: { data: [, data] }, topics }): DecodedEvent | null => { try { return this.abi.decodeEvent(data as Bytes, topics[0]); } catch (error) { diff --git a/packages/api-contract/src/test/contracts/ink/v5/index.ts b/packages/api-contract/src/test/contracts/ink/v5/index.ts index 4ece292d9a6e..99bdc1efa682 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/index.ts +++ b/packages/api-contract/src/test/contracts/ink/v5/index.ts @@ -1,6 +1,6 @@ // Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 +export { default as erc20 } from './erc20.contract.json' assert { type: 'json' }; export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; -export { default as erc20 } from './erc20.contract.json' assert { type: 'json' }; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index 497f4e5812f1..d4da38fa16b6 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -161,7 +161,7 @@ const spec = { args: 'Vec', docs: 'Vec', module_path: 'Text', - signature_topic: "[u8; 32]" + signature_topic: '[u8; 32]' }, ContractMessageParamSpecV0: { name: 'Text', From 5db72af863dfcf91604e9018c4054d6dd00256a6 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Thu, 1 Feb 2024 14:52:36 +0100 Subject: [PATCH 08/25] adds test result outputs --- .../compare/ink_v5_flipperContract.test.json | 174 ++++++++++++++++++ .../compare/ink_v5_flipperMetadata.test.json | 174 ++++++++++++++++++ 2 files changed, 348 insertions(+) create mode 100644 packages/api-contract/src/test/compare/ink_v5_flipperContract.test.json create mode 100644 packages/api-contract/src/test/compare/ink_v5_flipperMetadata.test.json diff --git a/packages/api-contract/src/test/compare/ink_v5_flipperContract.test.json b/packages/api-contract/src/test/compare/ink_v5_flipperContract.test.json new file mode 100644 index 000000000000..1c2cbbc05446 --- /dev/null +++ b/packages/api-contract/src/test/compare/ink_v5_flipperContract.test.json @@ -0,0 +1,174 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 1, + "lookupName": "Flipper", + "type": "{\"value\":\"bool\"}", + "docs": [], + "namespace": "flipper::flipper::Flipper", + "sub": [ + { + "docs": [], + "name": "value", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "namespace": "", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 2, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup4" + } + ] + }, + { + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 5, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup4" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 7, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 10, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] \ No newline at end of file diff --git a/packages/api-contract/src/test/compare/ink_v5_flipperMetadata.test.json b/packages/api-contract/src/test/compare/ink_v5_flipperMetadata.test.json new file mode 100644 index 000000000000..1c2cbbc05446 --- /dev/null +++ b/packages/api-contract/src/test/compare/ink_v5_flipperMetadata.test.json @@ -0,0 +1,174 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 1, + "lookupName": "Flipper", + "type": "{\"value\":\"bool\"}", + "docs": [], + "namespace": "flipper::flipper::Flipper", + "sub": [ + { + "docs": [], + "name": "value", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "namespace": "", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 2, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup4" + } + ] + }, + { + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 5, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup4" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 7, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 10, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] \ No newline at end of file From cc946da2e904c7114aaa9914aee0e864f140f770 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Fri, 16 Feb 2024 15:51:09 +0100 Subject: [PATCH 09/25] change `EventRecord['topics'][0]` type to plain `Hash` --- packages/api-contract/src/Abi/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 4f155c24058f..dae29ebf7675 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,13 +2,13 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec, EventRecord } from '@polkadot/types/interfaces'; -import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; -import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; - import { Option, TypeRegistry } from '@polkadot/types'; import { TypeDefInfo } from '@polkadot/types-create'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec } from '@polkadot/types/interfaces'; +import type { Hash } from '@polkadot/types/interfaces/runtime'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import { assertReturn, compactAddLength, compactStripLength, isBn, isNumber, isObject, isString, isUndefined, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util'; +import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { convertVersions, enumVersions } from './toLatest.js'; @@ -162,9 +162,9 @@ export class Abi { /** * Warning: Unstable API, bound to change */ - public decodeEvent (data: Bytes | Uint8Array, topic: EventRecord['topics'][0]): DecodedEvent { + public decodeEvent (data: Bytes | Uint8Array, signatureTopic: Hash): DecodedEvent { // try to find a topic signature match - ink! v5 upwards - let event = this.events.find((e) => e.signatureTopic === topic.toHex()); + let event = this.events.find((e) => e.signatureTopic === signatureTopic.toHex()); if (event) { return event.fromU8a(data.subarray(0)); From 54fd60980884d136269f5f3bb24515cf607c5479 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Fri, 23 Feb 2024 18:20:41 +0100 Subject: [PATCH 10/25] adds testcases for decoding payload data of a ink!v4 and ink!v5 event --- packages/api-contract/src/Abi/Abi.spec.ts | 66 ++ packages/api-contract/src/Abi/index.ts | 38 +- .../api-contract/src/Abi/toLatest.spec.ts | 16 +- .../compare/ink_v4_erc20Contract.test.json | 253 ++++ .../compare/ink_v4_erc20Metadata.test.json | 253 ++++ .../compare/ink_v5_erc20Contract.test.json | 370 ++++++ .../compare/ink_v5_erc20Metadata.test.json | 370 ++++++ .../test/contracts/ink/v4/erc20.contract.json | 1 + .../src/test/contracts/ink/v4/erc20.json | 821 +++++++++++++ .../src/test/contracts/ink/v4/erc20.wasm | Bin 0 -> 21078 bytes .../src/test/contracts/ink/v4/index.ts | 2 + .../test/contracts/ink/v5/erc20.contract.json | 1027 +---------------- .../src/test/contracts/ink/v5/erc20.json | 1024 ++++++++++++++++ .../src/test/contracts/ink/v5/erc20.wasm | Bin 0 -> 21581 bytes .../contracts/ink/v5/flipper.contract.json | 2 +- .../src/test/contracts/ink/v5/flipper.json | 4 +- .../src/test/contracts/ink/v5/index.ts | 3 +- packages/api-contract/src/types.ts | 3 +- 18 files changed, 3204 insertions(+), 1049 deletions(-) create mode 100644 packages/api-contract/src/test/compare/ink_v4_erc20Contract.test.json create mode 100644 packages/api-contract/src/test/compare/ink_v4_erc20Metadata.test.json create mode 100644 packages/api-contract/src/test/compare/ink_v5_erc20Contract.test.json create mode 100644 packages/api-contract/src/test/compare/ink_v5_erc20Metadata.test.json create mode 100644 packages/api-contract/src/test/contracts/ink/v4/erc20.contract.json create mode 100644 packages/api-contract/src/test/contracts/ink/v4/erc20.json create mode 100644 packages/api-contract/src/test/contracts/ink/v4/erc20.wasm create mode 100644 packages/api-contract/src/test/contracts/ink/v5/erc20.json create mode 100644 packages/api-contract/src/test/contracts/ink/v5/erc20.wasm diff --git a/packages/api-contract/src/Abi/Abi.spec.ts b/packages/api-contract/src/Abi/Abi.spec.ts index 41a58c669c23..62cc1d505db2 100644 --- a/packages/api-contract/src/Abi/Abi.spec.ts +++ b/packages/api-contract/src/Abi/Abi.spec.ts @@ -9,6 +9,7 @@ import fs from 'node:fs'; import process from 'node:process'; import { TypeDefInfo } from '@polkadot/types/types'; +import { hexToU8a } from '@polkadot/util'; import { blake2AsHex } from '@polkadot/util-crypto'; import abis from '../test/contracts/index.js'; @@ -122,4 +123,69 @@ describe('Abi', (): void => { // the hash as per the actual Abi expect(bundle.source.hash).toEqual(abi.info.source.wasmHash.toHex()); }); + + it('decoding <=ink!v4 events', (): void => { + const abi = new Abi(abis['ink_v4_erc20Metadata']); + + const dataHex = '0x0001d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb10600000000000000'; + const dataU8A = hexToU8a(dataHex); + + const decodedEvent = abi.decodeEvent(dataU8A); + + expect(decodedEvent.event.args.length).toEqual(3); + expect(decodedEvent.args.length).toEqual(3); + expect(decodedEvent.event.identifier).toEqual('Transfer'); + + const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { + return { + ...prev, + [cur.name]: decodedEvent.args[index].toHuman() + }; + }, {}); + + const expectedEvent = { + from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + value: '123.4567 MUnit' + }; + + expect(decodedEventHuman).toEqual(expectedEvent); + }); + + it('decoding <=ink!v5 events', (): void => { + const metadataJson = abis['ink_v5_erc20Metadata']; + + expect(metadataJson).toBeDefined(); + const abi = new Abi(metadataJson); + + const dataHex = '0x01d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb10600000000000000'; + const dataU8A = hexToU8a(dataHex); + + const signatureTopicHex = '0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb'; + + expect(abi.events.length).toEqual(2); + expect(abi.events[0].signatureTopic).toEqual(signatureTopicHex); + + const signatureTopicHash = abi.registry.createType('Hash', signatureTopicHex); + const decodedEvent = abi.decodeEvent(dataU8A, signatureTopicHash); + + expect(decodedEvent.event.args.length).toEqual(3); + expect(decodedEvent.args.length).toEqual(3); + expect(decodedEvent.event.identifier).toEqual('erc20::erc20::Transfer'); + + const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { + return { + ...prev, + [cur.name]: decodedEvent.args[index].toHuman() + }; + }, {}); + + const expectedEvent = { + from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + value: '123.4567 MUnit' + }; + + expect(decodedEventHuman).toEqual(expectedEvent); + }); }); diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index dae29ebf7675..9e99e4125e9f 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,14 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes } from '@polkadot/types'; -import { Option, TypeRegistry } from '@polkadot/types'; -import { TypeDefInfo } from '@polkadot/types-create'; import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec } from '@polkadot/types/interfaces'; import type { Hash } from '@polkadot/types/interfaces/runtime'; import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; -import { assertReturn, compactAddLength, compactStripLength, isBn, isNumber, isObject, isString, isUndefined, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; +import { Option, TypeRegistry } from '@polkadot/types'; +import { TypeDefInfo } from '@polkadot/types-create'; +import { assertReturn, compactAddLength, compactStripLength, isBn, isNumber, isObject, isString, isUndefined, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util'; + import { convertVersions, enumVersions } from './toLatest.js'; interface AbiJson { @@ -162,24 +163,27 @@ export class Abi { /** * Warning: Unstable API, bound to change */ - public decodeEvent (data: Bytes | Uint8Array, signatureTopic: Hash): DecodedEvent { - // try to find a topic signature match - ink! v5 upwards - let event = this.events.find((e) => e.signatureTopic === signatureTopic.toHex()); - - if (event) { - return event.fromU8a(data.subarray(0)); - } + public decodeEvent (data: Bytes | Uint8Array, signatureTopic?: Hash): DecodedEvent { + if (signatureTopic !== undefined) { + const event = this.events.find((e) => e.signatureTopic !== undefined && e.signatureTopic === signatureTopic.toHex()); + if (event) { + return event.fromU8a(data.subarray(0)); + } else { + throw new Error(`Unable to find event with signature_topic ${signatureTopic.toHex()}`); + } + } else { // otherwise fallback to using the index to determine event - ink! v4 downwards - const index = data[0]; + const index = data[0]; - event = this.events[index]; + const event = this.events[index]; - if (!event) { - throw new Error(`Unable to find event with index ${index}`); - } + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } - return event.fromU8a(data.subarray(1)); + return event.fromU8a(data.subarray(1)); + } } /** @@ -252,7 +256,7 @@ export class Abi { args: this.#decodeArgs(args, data), event }), - identifier: [spec.module_path, spec.label.toString()].join('::'), + identifier: [spec.module_path, spec.label].filter((t) => !t.isEmpty).join('::'), index, signatureTopic: spec.signature_topic.toHex() || undefined }; diff --git a/packages/api-contract/src/Abi/toLatest.spec.ts b/packages/api-contract/src/Abi/toLatest.spec.ts index b69a50c7689a..c7d4105bc320 100644 --- a/packages/api-contract/src/Abi/toLatest.spec.ts +++ b/packages/api-contract/src/Abi/toLatest.spec.ts @@ -140,16 +140,30 @@ describe('v4ToLatest', (): void => { describe('v5ToLatest', (): void => { const registry = new TypeRegistry(); - const contract = registry.createType('ContractMetadata', { V5: abis['ink_v5_erc20'] }); + const contract = registry.createType('ContractMetadata', { V5: abis['ink_v5_erc20Metadata'] }); const latest = v5ToLatest(registry, contract.asV5); + it('has the correct messages', (): void => { + expect( + latest.spec.messages.map(({ label }) => label.toString()) + ).toEqual(['total_supply', 'balance_of', 'allowance', 'transfer', 'approve', 'transfer_from']); + }); + it('has new event fields', (): void => { + expect( + latest.spec.events.length + ).toEqual(2); + expect( latest.spec.events.every((e) => e.has('module_path')) ).toEqual(true); + expect(latest.spec.events[0].module_path.toString()).toEqual('erc20::erc20'); + expect( latest.spec.events.every((e) => e.has('signature_topic')) ).toEqual(true); + + expect(latest.spec.events[0].signature_topic.toHex()).toEqual('0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb'); }); }); diff --git a/packages/api-contract/src/test/compare/ink_v4_erc20Contract.test.json b/packages/api-contract/src/test/compare/ink_v4_erc20Contract.test.json new file mode 100644 index 000000000000..db8cc7b0c7d5 --- /dev/null +++ b/packages/api-contract/src/test/compare/ink_v4_erc20Contract.test.json @@ -0,0 +1,253 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 1, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 4, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 8, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 11, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 14, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 15, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] \ No newline at end of file diff --git a/packages/api-contract/src/test/compare/ink_v4_erc20Metadata.test.json b/packages/api-contract/src/test/compare/ink_v4_erc20Metadata.test.json new file mode 100644 index 000000000000..db8cc7b0c7d5 --- /dev/null +++ b/packages/api-contract/src/test/compare/ink_v4_erc20Metadata.test.json @@ -0,0 +1,253 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 1, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 4, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 8, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 11, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 14, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 15, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] \ No newline at end of file diff --git a/packages/api-contract/src/test/compare/ink_v5_erc20Contract.test.json b/packages/api-contract/src/test/compare/ink_v5_erc20Contract.test.json new file mode 100644 index 000000000000..c8d5fe3675ec --- /dev/null +++ b/packages/api-contract/src/test/compare/ink_v5_erc20Contract.test.json @@ -0,0 +1,370 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 5, + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 6, + "lookupName": "InkStorageTraitsImplsAutoKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::AutoKey" + }, + { + "info": "Null", + "lookupIndex": 7, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "lookupName": "InkStorageTraitsImplsResolverKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 12, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "Erc20", + "type": "{\"totalSupply\":\"u128\",\"balances\":\"Null\",\"allowances\":\"InkStorageLazyMapping\"}", + "docs": [], + "namespace": "erc20::erc20::Erc20", + "sub": [ + { + "docs": [], + "name": "totalSupply", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "namespace": "", + "typeName": "" + }, + { + "docs": [], + "name": "balances", + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + }, + { + "docs": [], + "name": "allowances", + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 17, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 20, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 21, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 23, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 24, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] \ No newline at end of file diff --git a/packages/api-contract/src/test/compare/ink_v5_erc20Metadata.test.json b/packages/api-contract/src/test/compare/ink_v5_erc20Metadata.test.json new file mode 100644 index 000000000000..c8d5fe3675ec --- /dev/null +++ b/packages/api-contract/src/test/compare/ink_v5_erc20Metadata.test.json @@ -0,0 +1,370 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 5, + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 6, + "lookupName": "InkStorageTraitsImplsAutoKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::AutoKey" + }, + { + "info": "Null", + "lookupIndex": 7, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "lookupName": "InkStorageTraitsImplsResolverKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 12, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "Erc20", + "type": "{\"totalSupply\":\"u128\",\"balances\":\"Null\",\"allowances\":\"InkStorageLazyMapping\"}", + "docs": [], + "namespace": "erc20::erc20::Erc20", + "sub": [ + { + "docs": [], + "name": "totalSupply", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "namespace": "", + "typeName": "" + }, + { + "docs": [], + "name": "balances", + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + }, + { + "docs": [], + "name": "allowances", + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 17, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 20, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 21, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 23, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 24, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/v4/erc20.contract.json b/packages/api-contract/src/test/contracts/ink/v4/erc20.contract.json new file mode 100644 index 000000000000..b8c817049c77 --- /dev/null +++ b/packages/api-contract/src/test/contracts/ink/v4/erc20.contract.json @@ -0,0 +1 @@ +{"source":{"hash":"0x114f55289bcdfd0d28e0bbd1c63452b4e45901a022b1011d298fa2eb12d1711d","language":"ink! 4.3.0","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001601060037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060017f0060047f7f7f7f0060047f7f7f7f017f60057f7f7f7f7f0060000060017f017f60027e7e0060047f7f7e7e0060037e7e7f0060037f7e7e006000017f60047f7f7e7e017f02c7010a057365616c310b6765745f73746f726167650006057365616c301176616c75655f7472616e736665727265640001057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740005057365616c320b7365745f73746f726167650006057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100351500007030b0101030c0d0101030305030101070401010001010304070e03010409030201020004030108010a0a0104080f0408030501040801090200000202020204010202070605060105020203050205040501700110100608017f01418080040b0711020463616c6c0037066465706c6f79003a0915010041010b0f54532c2a465748272747274445424a0ad37d502b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2200200120034d044020002001360204200020023602000f0b200120032004100b000b0e0020002001200241cc960410580bbb0102037f017e230041306b2204240020044100360220200442808001370228200441d0a30436022441b7c380e57e200441246a2205100d20002005100e20012005100e20042004290224370218200441106a200441186a2206200428022c100f2004280214210020042802102101200429021821072004410036022c20042007370224200220032005101020042004290224370218200441086a2006200428022c100f200120002004280208200428020c10071a200441306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041021200241106a24000b0a0020012000412010210b4501017f2002200128020422034b0440419ca00441234194a2041017000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101021200341106a24000bb50102047f017e230041306b2203240020034100360220200342808001370228200341d0a30436022441e7b98fb102200341246a2204100d20002004100e20032003290224370218200341106a200341186a2205200328022c100f2003280214210020032802102106200329021821072003410036022c20032007370224200120022004101020032003290224370218200341086a2005200328022c100f200620002003280208200328020c10071a200341306a24000bd10102037f017e230041d0006b22022400200241186a220420001013200229021821052002410036022c2002200537022420012802002001280204200241246a2203101420012802082003100e20022002290224370218200241106a2004200228022c100f2003200228021020022802141015200241086a200028020020002802042000280208220110162002410036024c200220022903083702442003200241c4006a100e20012001200228024c6a22034b044041c08204411c41c886041017000b20002003360208200241d0006a24000b3f01027f2001280204220320012802082202490440200220034184a2041029000b200041003602082000200320026b3602042000200128020020026a3602000b100020012002101c20022000200110210b8f0201077f230041d0006b22032400200341286a22044200370300200341206a22054200370300200341186a22064200370300200342003703100240200241214f0440200341c8006a22074200370300200341406b22084200370300200341386a220942003703002003420037033020012002200341306a1005200420072903003703002005200829030037030020062009290300370300200320032903303703100c010b200341086a2002200341106a412041988204100a2003280208200328020c2001200241a88204101a0b20002003290310370000200041186a200341286a290300370000200041106a200341206a290300370000200041086a200341186a290300370000200341d0006a24000b2900200220034904402003200241b886041029000b2000200220036b3602042000200120036a3602000b4601017f230041206b220324002003410c6a420037020020034101360204200341f49f043602082003200136021c200320003602182003200341186a36020020032002102b000bd10102037f017e230041d0006b22022400200241186a220420001013200229021821052002410036022c2002200537022420012802002001280204200241246a2203101420012802082003101920022002290224370218200241106a2004200228022c100f2003200228021020022802141015200241086a200028020020002802042000280208220110162002410036024c200220022903083702442003200241c4006a100e20012001200228024c6a22034b044041c08204411c41c886041017000b20002003360208200241d0006a24000b210020002d00004504402001410010300f0b200141011030200041016a2001100e0b7b002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41053602002000410336020c200041a09804360208200041053602242000200041206a360210200020003602282000200041046a360220200041086a2004102b000b6a01037f230041206b22012400200141086a200028020020002802042000280208220210162001410036021c200120012903083702144103200141146a101c20022002200128021c6a22034b044041c08204411c41c886041017000b20002003360208200141206a24000b7401017f230041106b2202240002402000413f4d04402001200041027410300c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210210c010b200041ffffffff034d044020004102744102722001100d0c010b20014103103020002001100d0b200241106a24000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101e45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f200028020422032002492204450440200120022000280200220120024190a304101a2000200320026b3602042000200120026a3602000b20040ba90102017f027e230041406a220224002002411f6a2001101d0240024020022d001f0d002002200110202002290300a70d00200241106a2903002103200229030821042000200229002037000820004200370300200041286a2004370300200041306a2003370300200041206a200241386a290000370000200041186a200241306a290000370000200041106a200241286a2900003700000c010b200042013703000b200241406b24000b5f02017f037e230041106b2202240020024200370308200242003703000240200120024110101e45044020022903082104200229030021050c010b420121030b2000200537030820002003370300200041106a2004370300200241106a24000b5c01037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a200320046b2001200241e4a104101a200020033602080f0b4180a004411c41c4a1041017000b2003200541d4a104100b000bb20101027f230041306b2201240020014180800136020441d0a304200141046a2202100320014180800136022c200141d0a3043602282002200141286a101d20012d00040440200141003a000441a0850441c100200141046a41dc820441e485041023000b2000200141066a290000370001200041096a2001410e6a290000370000200041116a200141166a290000370000200041186a2001411d6a290000370000200020012d00053a0000200141306a24000b7c01017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a42023702002005413c6a41013602002005410236021c200541fc9004360218200541023602342005200541306a3602202005200541106a3602382005200541086a360230200541186a2004102b000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10012000290308210120002903002102200041206a2400410541042001200284501b0b850302047f027e230041d0006b220324002003410036023020034280800137023c200341d0a30436023841b7c380e57e200341386a2204100d20012004100e20022004100e20032003290238370228200341206a200341286a2003280240100f2003280224210220032802202105200328022821012003200328022c2206360238200520022001200410002102200341186a20032802382001200641908504100a027e024002400240024020020e0400010103010b200328021821012003200328021c36023c200320013602382003200341386a10202003290300a70d0120032903082107200341106a2903000c030b200341c4006a42003702002003410136023c200341a08604360238200341f49f04360240200341386a41a88604102b000b200341003a0037200341c4006a42013702002003410136023c2003419081043602382003410336022c2003200341286a3602402003200341376a360228200341386a41988104102b000b42000b21082000200737030020002008370308200341d0006a24000bff0202057f027e230041d0006b220224002002410036023020024280800137023c200241d0a30436023841e7b98fb102200241386a2204100d20012004100e20022002290238370228200241206a200241286a2002280240100f2002280224210320022802202105200228022821012002200228022c2206360238200520032001200410002103200241186a20022802382001200641908504100a027e024002400240024020030e0400010103010b200228021821012002200228021c36023c200220013602382002200241386a10202002290300a70d0120022903082107200241106a2903000c030b200241c4006a42003702002002410136023c200241a08604360238200241f49f04360240200241386a41a88604102b000b200241003a0037200241c4006a42013702002002410136023c2002419081043602382002410336022c2002200241286a3602402002200241376a360228200241386a41988104102b000b42000b21082000200737030020002008370308200241d0006a24000b0300010b1b002000418180014f044020004180800141f48504100b000b20000b0e0020002001200241ac960410580b840101017f230041306b22022400200241146a42013702002002410136020c200241f49e0436020820024102360224200220002d0000410274220041a0a3046a28020036022c2002200041b4a3046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10432100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241989004360210200241f49f0436020c2002410c6a1049000bdd0401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280214220341ec82044106200141186a280200220528020c22041100000d0c024020012d001c410471450440200341929104410120041100000d0e200341e4890441052004110000450d010c0e0b200341939104410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241e489044105102d0d0d2002419091044102102d0d0d0b200341fc8f044101200411000021000c0c0b200128021441f28204410d200141186a28020028020c11000021000c0b0b200128021441ff8204410e200141186a28020028020c11000021000c0a0b2001280214418d8304410b200141186a28020028020c11000021000c090b200128021441988304411a200141186a28020028020c11000021000c080b200128021441b28304410e200141186a28020028020c11000021000c070b200128021441c083044110200141186a28020028020c11000021000c060b200128021441d08304410c200141186a28020028020c11000021000c050b200128021441dc8304410b200141186a28020028020c11000021000c040b200128021441e783044107200141186a28020028020c11000021000c030b200128021441ee8304410f200141186a28020028020c11000021000c020b200128021441fd83044111200141186a28020028020c11000021000c010b2001280214418e84044113200141186a28020028020c11000021000b200241106a240020000bd40701107f230041d0006b22032400200341003b014c200320023602482003410036024420034281808080a00137023c2003200236023820034100360234200320023602302003200136022c2003410a3602282000280204210c2000280200210d2000280208210e200341406b210f027f0340024020032d004d450440200328022c210a02400240024002402003280238220b200328023022104b0d0020032802342202200b4b0d00200328023c2204450d012004200f6a41016b21110340200a200222076a210020112d0000210602400240024002400240027f02400240200b20026b220541084f0440024002402000200041036a417c712202460440200541086b2108410021020c010b200341206a20062000200220006b2202105620032802204101460d012002200541086b22084b0d030b200641818284086c21090340200020026a220141046a2802002009732212417f73201241818284086b7120012802002009732201417f73200141818284086b7172418081828478710d03200241086a220220084d0d000b0c020b200328022421010c020b200341106a20062000200510562003280214210120032802100c020b200220054b0d02200341186a2006200020026a200520026b1056410020032802184101470d011a2002200328021c6a22012002490d030b41010b22004101460440200141016a2202450d0302402007200220076a22024d04402003200236023420022004490d07200220104d0d010c070b41e08f04411c41b89d041017000b200441054f0d04027f200a200220046b6a2106200f210720042105034041002005450d011a200541016b210520072d0000210820062d00002109200641016a2106200741016a210720082009460d000b200920086b0b0d05200341086a20032802442002200a105220032002360244200328020c2100200328020821020c0a0b2003200b3602340c060b41b08f04412141d895041017000b41e08f04411c41e895041017000b41e08f04411c41a89d041017000b2004410441c89d04100b000b2002200b4d0d000b0b200341013a004d20032d004c044020032802482101200328024421040c020b20032802482201200328024422044f04404100210220012004470d020c030b41b08f04412141909b041017000b41b08f04412141989d041017000b200320042001200a105220032802042100200328020021020b20020d010b41000c020b0240200e2d00000440200d418c91044104200c28020c1100000d010b200e2000047f200020026a41016b2d0000410a460541000b22013a0000200d20022000200c28020c110000450d010b0b41010b2100200341d0006a240020000bd70502047f017e230041b0016b22012400200141086a200041e00010091a20014280800137028001200141d0a30436027c02402001290308500440200141fc006a101b200141f0006a220020014184016a2802003602002001200129027c370368200141a0016a2202200141e8006a220341e88604102f2001200141206a36029c012001411536029801200141f4860436029401200220014194016a10182000200141a8016a280200360200200120012902a0013703682001200141c1006a3602a801200141133602a4012001418987043602a0012003200210180c010b200141fc006a101b200141f0006a220020014184016a2802003602002001200129027c370368200141a0016a2202200141e8006a220341ac8704102f2001200141106a36029c012001411636029801200141b8870436029401200220014194016a10122000200141a8016a280200360200200120012902a0013703682001200141306a3602a801200141183602a401200141ce87043602a0012003200210120b20014190016a20002802003602002001200129036837038801230041206b22002400200041186a22024100360200200020014188016a2204290200370310200041086a200041106a200441086a280200100f20002903082105200341086a2002280200360200200320002903103702002003200537020c200041206a2400200141a8016a200141f0006a2802003602002001200129026822053703a001200141f8006a2802002103200128027421022001410036027020012005370268027f2001290308500440200141e8006a220041001030200141206a20001019200141c1006a20001019200141106a0c010b200141e8006a220041011030200141106a2000100e200141306a2000100e200141d0006a0b2200290300200041086a290300200141e8006a1010200120012902683703a0012001200141a0016a2001280270100f20022003200128020020012802041006200141b0016a24000bef0102037f017e230041d0006b22032400200341186a220520011013200329021821062003410036022c2003200637022420022802002002280204200341246a2204101420042002280208410f102120032003290224370218200341106a2005200328022c100f2004200328021020032802141015200341086a200128020020012802042001280208220210162003410036024c200320032903083702442004200341c4006a100e20022002200328024c6a22044b044041c08204411c41c886041017000b200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41053602002000410236020c200041e89004360208200041053602242000200041206a360210200020003602282000200041046a360220200041086a41f4a104102b000b3c01027f230041106b22002400200042808001370208200041d0a304360204200041046a2201410110302001410110304101200028020c10281035000b5101027f230041106b22022400200242808001370208200241d0a304360204200241046a2203410010302003200141ff0171410247047f20034101103020010541000b10302000200228020c10281035000b3e01027f230041106b22022400200242808001370208200241d0a304360204200241046a22034100103020002001200310104100200228020c10281035000bab0102057f017e230041306b2202240020024100360220200242808001370228200241d0a3043602244100200241246a2203100d20022002290224370218200241106a200241186a2204200228022c100f2002280214210520022802102106200229021821072002410036022c20022007370224200020012003101020022002290224370218200241086a2004200228022c100f200620052002280208200228020c10071a200241306a24000b0d00200041d0a30420011008000b2e01017f230041e0006b22012400200141086a200041d80010091a200142003703002001102e200141e0006a24000be71302077f047e23004190056b2200240002400240102441ff017141054604402000418080013602b00441d0a304200041b0046a22021002200041f0006a20002802b00441d0a3044180800141908504100a200020002903703702d001200041003602b004200041d0016a20024104101e0d0120002d00b304210120002d00b204210320002d00b1042102027f02400240024002400240024020002d00b0042204410b6b0e050508080801000b0240200441e8006b0e03040802000b2004418401460d02200441db0147200241ff017141e3004772200341f50047200141a8014772720d0741000c050b200241ff017141f50047200341da004772200141d60047720d06200041b0046a200041d0016a101d20002d00b0040d06200041e8016a200041ba046a290000370300200041f0016a200041c2046a290000370300200041f7016a200041c9046a2900003700002000200041b2046a2900003703e00120002d00b104210241010c040b200241ff0171200341164772200141de0047720d05200041a0026a200041d0016a101d20002d00a0020d05200041f8006a200041d0016a101d20002d00780d05200041e7046a20004191016a290000370000200041df046a20004189016a290000370000200041d7046a20004181016a290000370000200041b8046a200041aa026a290000370300200041c0046a200041b2026a290000370300200041c7046a200041b9026a290000370000200020002900793700cf042000200041a2026a2900003703b00420002d00a1022102200041e0016a200041b0046a413f10091a41020c030b200241ff017141a10147200341dd004772200141a10147720d04200041b0046a200041d0016a101f20002903b0044200520d04200041ae036a200041a6026a200041fe006a200041b8046a4130100941301009413010091a200041e0016a200041a8036a413610091a41030c020b200241ff0171411247200341e6004772200141a00147720d03200041b0046a200041d0016a101f20002903b0044200520d03200041ae036a200041a6026a200041fe006a200041b8046a4130100941301009413010091a200041e0016a200041a8036a413610091a41040c010b200241ff0171413947200341ef0047722001411847720d02200041ee036a200041d0016a101d20002d00ee030d022000418f046a200041d0016a101d20002d008f040d02200041d8006a200041d0016a10202000290358a70d02200041e8006a290300210720002903602108200041c0036a200041ef036a220241186a290000370300200041b8036a200241106a290000370300200041b0036a200241086a290000370300200041d0036a20004198046a290000370300200041d8036a200041a0046a290000370300200041e0036a200041a8046a29000037030020002000290090043703c803200020022900003703a803200041e8026a2201200041a8036a41c00010091a200041a6026a200041fe006a200041b6046a200141c000100941c000100941c00010091a200041e0016a200041a0026a413f10091a2000200041e2026a2800003600db01200020002800df023602d80141050b2101200041f8006a410272200041e0016a413f10091a200041bc016a20002800db01360000200041c8016a2007370300200020002802d8013600b901200020083703c001200020023a0079200020013a0078200041003602a8022000428080013702b404200041d0a3043602b0044100200041b0046a2203100d200020002902b0043702a002200041d0006a200041a0026a20002802b804100f200028025421042000280250210520002802a0022102200020002802a40222063602b004200520042002200310002103200041c8006a20002802b0042002200641908504100a024002400240024020030e0401000002000b200041bc046a4200370200200041013602b404200041a086043602b004200041f49f043602b804200041b0046a41a88604102b000b200028024821022000200028024c3602b404200020023602b004200041306a200041b0046a10202000290330a7450d01200041bc046a4200370200200041013602b404200041ec88043602b0040c040b200041bc046a4200370200200041013602b404200041bc88043602b0040c030b200041f8006a4101722102200041406b29030021072000200029033822083703e001200020073703e80102400240024002400240024002400240200141016b0e050001040502030b230041406a22012400200141286a200241086a290000370200200141306a200241106a290000370200200141386a200241186a2900003702002001200041e0016a36021c20012002290000370220200141086a200141206a1026200129030821072000200141106a29030037030820002007370300200141406b24002000290300200041086a2903001033000b230041e0006b220124002001200041e0016a36021c200141086a200141206a200241c0001009200141406b102520012903082107200041106a2202200141106a29030037030820022007370300200141e0006a24002000290310200041186a2903001033000b200041b8046a20004180016a41d000100921022000200041e0016a3602b004200041f8046a290300210820004180056a2903002107200041a0026a22011022200041206a20022001102541012103410121012000290320220a2008542204200041286a290300220920075420072009511b0d04410221012002200041d8046a20082007103841ff017122054102460d03200541004721010c040b200820071033000b200041b8046a20004180016a4130100921022000200041e0016a3602b004200041e0046a2903002107200041d8046a2903002108200041a0026a2201102220012002200820071038220241ff0171410247220145044020002903e001200041e8016a29030010340b200120021032000b200041b0036a20004180016a4130100921022000200041e0016a3602a803200041d8036a2903002107200041d0036a2903002108200041e8026a220110222001200220082007100c200041b8026a20004180036a290000370300200041b0026a200041f8026a290000370300200041a8026a200041f0026a290000370300200041c8026a20004188016a290300370300200041d0026a20004190016a290300370300200041d8026a20004198016a290300370300200020002900e8023703a00220002000290380013703c002200041b8046a200041a0026a41c00010091a20004180056a2007370300200041f8046a2008370300200042013703b004200041b0046a102e20002903e001200041e8016a2903001034410041021032000b2002200041a0026a200a20087d200920077d2004ad7d100c20002903e001200041e8016a2903001034410021030b200320011032000b200041043a00b004200041b0046a1039000b1031000b200041f49f043602b804200041b0046a41948804102b000bd10202037f037e23004180016b22042400200441186a200010260240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d1011200441086a200110262004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b0d012001200920081011200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1036410221050b20044180016a240020050f0b41c08204411c41f488041017000b4801017f230041206b220124002001410c6a420137020020014101360204200141f49e043602002001410436021c200120003602182001200141186a360208200141948804102b000bf40402087f037e230041c0016b2200240002401024220141ff0171410546044020004180800136025041d0a304200041d0006a22011002200041286a200028025041d0a3044180800141908504100a200020002903283702502000410036023002402001200041306a4104101e0d0020002d0030419b01470d0020002d003141ae01470d0020002d0032419d01470d0020002d003341de00470d00200041106a200041d0006a10202000290310a7450d020b1031000b200020013a0050200041d0006a1039000b200041206a290300210820002903182109200041306a1022200041ec006a200041c8006a2202290000370200200041e4006a200041406b2203290000370200200041dc006a200041386a220429000037020020002000290030370254200041ec8004360250200041003602b0012000428080013702b801200041d0a3043602b40141e7b98fb102200041b4016a2201100d200041d4006a2001100e200020002902b4013702a801200041086a200041a8016a220520002802bc01100f200028020c21062000280208210720002902a801210a200041003602bc012000200a3702b4012009200820011010200020002902b4013702a8012000200520002802bc01100f200720062000280200200028020410071a2000419a016a200229000037010020004192016a20032900003701002000418a016a200429000037010020004182016a20002900303701002000200837035820002009370350200041013a008101200041003a0060200041d0006a1036200920081034230041106b22002400200042808001370208200041d0a304360204200041046a2201410010302001410010304100200028020c10281035000b7701027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002103c2004280208200428020c103d200028020821030b200028020020036a2001200210091a2003200220036a22014b044041908904411c419c8f041017000b20002001360208200441106a24000bc00301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003104020022802082105200228020c0c020b200528020021080240200310412205450440410021050c010b20052008200710091a0b20030c010b2002200310402002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41b08904412141f88a041017000b1f00024020004181808080784704402000450d012001103e000b0f0b103f000b860101017f230041306b220124002001200036020c2001411c6a420137020020014102360214200141c88c043602102001410536022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c200041d88c043602182000200141106a360214200041989004360210200041f49f0436020c2000410c6a1049000b3c01017f230041206b22002400200041146a42003702002000410136020c2000419c8b04360208200041f49f04360210200041086a41a48b04102b000b2001017f41d2a3052d00001a20011041210220002001360204200020023602000b800101027f0240027f410041c8a304280200220120006a22022001490d001a41cca3042802002002490440200041ffff036a22024110764000220141ffff034b0d022001411074220120024180807c716a22022001490d0241cca30420023602004100200020016a22022001490d011a0b41c8a304200236020020010b0f0b41000b0c00200041ec8904200110430bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110200450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10552003200329031037021c200341086a20062001105520032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110200450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0c00200020012002103b41000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101103c2004280208200428020c103d200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b103b0b200241106a240041000f0b41908904411c418c8f041017000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e2206410174418592046a2f00003b0000200241026b2006419c7f6c20046a41ffff0371410174418592046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff0371410174418592046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a2002410174418592046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041f49f042104200241f49f0441f49f04104b20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004104e0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004104e0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004104e0d03200341106a2001200920026b4101104f20032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10500d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101104f20032802082205418080c400460d02200328020c2109200128021422022001280218220120072004104e0d02200220082006200128020c1100000d022005200920022001105021000c020b0c020b41e08f04411c41c094041017000b200341406b240020000f0b41b08f04412141e49e041017000b1b00200128021441e489044105200141186a28020028020c1100000b0e0020002802001a03400c000b000bc20201047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141c0a0043602102001410636022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441c4a0046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000104020012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10420d032001280230210020012802382103024041d0a3052d000045044041d1a3052d00004101710d010b200020031004410947044041d0a30541013a00000b41d1a30541013a00000b000b41908904411c41d49e041017000b103f000b2000103e000b41e88c0441332001413f6a41d4890441888e041023000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200104c22042006200120006b2200417c716a2000410371104c6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b41d09704104d200228020c21052002280208210620022002280200200228020422002000417c7141bc9904104d200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41e08f04411c41fc99041017000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441e08f04411c41dc99041017000b41e08f04411c41cc99041017000b41e08f04411c41ec99041017000b41e08f04411c41ac99041017000b20002001104c21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41e08f04411c41d49e041017000b3d0020022003490440419ca004412320041017000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41e08f04411c41d094041017000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110200450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110200450d000b200441016b0b2001490b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41e08f04411c41809b041017000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41b08f04412141949c041017000bca0301067f230041306b22022400200028020421042000280200210302400240027f024020012802002205200128020822007204402000450d032001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1051200228021c418080c400470d010c050b0b200241106a200241246a10512002280214418080c400460d03024020022802102200450d00200020044f044020002004460d010c030b200020036a2c00004140480d020b200241086a4100200020031052200228020c210620022802080c020b200128021420032004200141186a28020028020c11000021000c030b41000b21002006200420001b21042000200320001b21030b2005450440200128021420032004200141186a28020028020c11000021000c010b200128020422002003200320046a104b22054b044020022001200020056b4100104f4101210020022802002205418080c400460d01200228020421062001280214220720032004200141186a280200220128020c1100000d012005200620072001105021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044107470d0120012802000b2802002104410121030b20002004360204200020033602000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000beb0201057f230041406a22022400200028020021054101210002402001280214220441a89004410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4105360200200241346a41053602002002410336021420024180900436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10430d00200528020822030440200441b49004410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a104321000c010b200220052802002203200528020428020c11010041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441b49004410220011100000d00200420032802002003280204200111000021000b200241406b240020000b6901017f230041306b220424002004200136020420042000360200200441146a42023702002004412c6a41053602002004410236020c20042003360208200441053602242004200441206a3602102004200441046a36022820042004360220200441086a2002102b000b0bbb230500418080040bb5022f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f73746f726167652d342e332e302f7372632f6c617a792f6d617070696e672e727300e7dc23264661696c656420746f206765742076616c756520696e204d617070696e673a207000010020000000000001006b0000009c000000250000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d342e332e302f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273a8000100700000009d00000020000000a8000100700000009d000000300041c082040bc106617474656d707420746f206164642077697468206f766572666c6f77080000000100000001000000030000004465636f646543616c6c65655472617070656443616c6c656552657665727465644b65794e6f74466f756e645f42656c6f7753756273697374656e63655468726573686f6c645472616e736665724661696c65645f456e646f776d656e74546f6f4c6f77436f64654e6f74466f756e644e6f7443616c6c61626c65556e6b6e6f776e4c6f6767696e6744697361626c656443616c6c52756e74696d654661696c656445636473615265636f766572794661696c65642f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d342e332e302f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300210201006e000000e40000001700000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000a8000100700000006b0100000e000000a8000100700000002401000032000000656e636f756e746572656420756e6578706563746564206572726f72040301001c000000a800010070000000ed000000170000005010010071000000c10000003d0000005010010071000000c40000000900000045726332303a3a5472616e7366657200f40f0100000000005803010045726332303a3a5472616e736665723a3a66726f6d45726332303a3a5472616e736665723a3a746f45726332303a3a417070726f76616c00f40f0100000000009c03010045726332303a3a417070726f76616c3a3a6f776e657245726332303a3a417070726f76616c3a3a7370656e6465722f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f65726332302f6c69622e7273e60301002e000000070000000500000073746f7261676520656e7472792077617320656d707479002404010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279004404010027000000e60301002e000000cf0000002700419089040bc106617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000900000000000000010000000a0000004572726f720000000b0000000c000000040000000c0000000d0000000e0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72730000000405010071000000980100001c0000006361706163697479206f766572666c6f770000008805010011000000040501007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000002306010015000000380601000d000000b40501006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72739b0601006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000001807010071000000610700000d0000001807010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041e08f040b9410617474656d707420746f206164642077697468206f766572666c6f77293a0000f40f010000000000fd07010001000000fd070100010000000900000000000000010000000f00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320360801002000000056080100120000003a200000f40f0100000000007808010002000000202020202c0a28280a2f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000cd09010070000000050500000d000000cd0901007000000097050000300000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000600a010075000000760000004b000000600a010075000000770000003400000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820f80a0100120000000a0b01002200000072616e676520656e6420696e646578203c0b0100100000000a0b0100220000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273005c0b010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028e00b010015000000f50b01002b000000fc070100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000380c0100720000004700000015000000380c0100720000004f00000032000000380c0100720000005a00000009000000380c010072000000660000000d000000380c0100720000006400000011000000380c01007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e72730000000c0d01007100000091000000110000000c0d0100710000004f0200002d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e727300a00d010073000000d3000000130000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273240e010074000000a101000047000000240e010074000000b401000020000000240e010074000000b401000011000000240e010074000000b8010000370000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000d80e01007a00000095000000010000009508010070000000d201000005000000f40f010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d657373616765004180a0040bc703617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290af40f0100000000003f100100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d342e332e302f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300000050100100710000005a0000001c00000050100100710000005a0000001400000050100100710000005a00000031000000501001007100000065000000090000005010010071000000830000002500000050100100710000008d000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e727300241101006b000000770000000e000000190000001c0000001600000014000000190000007c0f0100950f0100b10f0100c70f0100db0f01","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"erc20","version":"4.3.0","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"total_supply","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":["Creates a new ERC-20 contract with the specified initial supply."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":1},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":0},"blockNumber":{"displayName":["BlockNumber"],"type":14},"chainExtension":{"displayName":["ChainExtension"],"type":15},"hash":{"displayName":["Hash"],"type":12},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":13}},"events":[{"args":[{"docs":[],"indexed":true,"label":"from","type":{"displayName":["Option"],"type":11}},{"docs":[],"indexed":true,"label":"to","type":{"displayName":["Option"],"type":11}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when a token transfer occurs."],"label":"Transfer"},{"args":[{"docs":[],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"docs":[],"indexed":true,"label":"spender","type":{"displayName":["AccountId"],"type":5}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when an approval occurs that `spender` is allowed to withdraw","up to the amount of `value` tokens from `owner`."],"label":"Approval"}],"lang_error":{"displayName":["ink","LangError"],"type":3},"messages":[{"args":[],"default":false,"docs":[" Returns the total token supply."],"label":"total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":4},"selector":"0xdb6375a8"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the account balance for the specified `owner`.",""," Returns `0` if the account is non-existent."],"label":"balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":4},"selector":"0x0f755a56"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":5}},{"label":"spender","type":{"displayName":["AccountId"],"type":5}}],"default":false,"docs":[" Returns the amount which `spender` is still allowed to withdraw from `owner`.",""," Returns `0` if no allowance has been set."],"label":"allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":4},"selector":"0x6a00165e"},{"args":[{"label":"to","type":{"displayName":["AccountId"],"type":5}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` amount of tokens from the caller's account to account `to`.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the caller's account balance."],"label":"transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x84a15da1"},{"args":[{"label":"spender","type":{"displayName":["AccountId"],"type":5}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Allows `spender` to withdraw from the caller's account multiple times, up to"," the `value` amount.",""," If this function is called again it overwrites the current allowance with"," `value`.",""," An `Approval` event is emitted."],"label":"approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x681266a0"},{"args":[{"label":"from","type":{"displayName":["AccountId"],"type":5}},{"label":"to","type":{"displayName":["AccountId"],"type":5}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` tokens on the behalf of `from` to the account `to`.",""," This can be used to allow a contract to transfer tokens on ones behalf and/or"," to charge fees in sub-currencies, for example.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientAllowance` error if there are not enough tokens allowed"," for the caller to withdraw from `from`.",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the account balance of `from`."],"label":"transfer_from","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":8},"selector":"0x0b396f18"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"total_supply"},{"layout":{"root":{"layout":{"leaf":{"key":"0x2623dce7","ty":0}},"root_key":"0x2623dce7"}},"name":"balances"},{"layout":{"root":{"layout":{"leaf":{"key":"0xeca021b7","ty":0}},"root_key":"0xeca021b7"}},"name":"allowances"}],"name":"Erc20"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"primitive":"u128"}}},{"id":1,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":3}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":3}],"path":["Result"]}},{"id":2,"type":{"def":{"tuple":[]}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":4,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":3}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":3}],"path":["Result"]}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9}],"index":0,"name":"Ok"},{"fields":[{"type":3}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":9},{"name":"E","type":3}],"path":["Result"]}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":10}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":10}],"path":["Result"]}},{"id":10,"type":{"def":{"variant":{"variants":[{"index":0,"name":"InsufficientBalance"},{"index":1,"name":"InsufficientAllowance"}]}},"path":["erc20","erc20","Error"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":5}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":5}],"path":["Option"]}},{"id":12,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":13,"type":{"def":{"primitive":"u64"}}},{"id":14,"type":{"def":{"primitive":"u32"}}},{"id":15,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/v4/erc20.json b/packages/api-contract/src/test/contracts/ink/v4/erc20.json new file mode 100644 index 000000000000..c92cda4372c8 --- /dev/null +++ b/packages/api-contract/src/test/contracts/ink/v4/erc20.json @@ -0,0 +1,821 @@ +{ + "source": { + "hash": "0x114f55289bcdfd0d28e0bbd1c63452b4e45901a022b1011d298fa2eb12d1711d", + "language": "ink! 4.3.0", + "compiler": "rustc 1.75.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.2.0", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "erc20", + "version": "4.3.0", + "authors": [ + "Parity Technologies " + ] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "total_supply", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + "Creates a new ERC-20 contract with the specified initial supply." + ], + "label": "new", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 1 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 5 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 0 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 14 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 15 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 12 + }, + "maxEventTopics": 4, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 13 + } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": [ + "Option" + ], + "type": 11 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": [ + "Option" + ], + "type": 11 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when a token transfer occurs." + ], + "label": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval" + } + ], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 3 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [ + " Returns the total token supply." + ], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 4 + }, + "selector": "0xdb6375a8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 4 + }, + "selector": "0x0f755a56" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 4 + }, + "selector": "0x6a00165e" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 8 + }, + "selector": "0x84a15da1" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 8 + }, + "selector": "0x681266a0" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "label": "to", + "type": { + "displayName": [ + "AccountId" + ], + "type": 5 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 8 + }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x2623dce7", + "ty": 0 + } + }, + "root_key": "0x2623dce7" + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xeca021b7", + "ty": 0 + } + }, + "root_key": "0xeca021b7" + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 2, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 3, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 8, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 9 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 9 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 9, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 10 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 10, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": [ + "erc20", + "erc20", + "Error" + ] + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 5 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 5 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 12, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 13, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 14, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 15, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } + } + ], + "version": "4" +} \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/v4/erc20.wasm b/packages/api-contract/src/test/contracts/ink/v4/erc20.wasm new file mode 100644 index 0000000000000000000000000000000000000000..799afda9ce661ab9ce23f4622459a2d2289a93b5 GIT binary patch literal 21078 zcmd6v3vgW5dEf7Afdv*IuVmVxB|5shqAf5Mi6;S&k|P}I9Z44L(2m>53G&hEYE^_}m0@AI954JMcNhd~g8x23nmM~)l`kK7g=ITGlL zSJec!g?tj;iU$oP6)6X5)tGzku|9gl_uNBEd_?a7Z4ABVp72QY^{~6NRG*w1tn96~ zb}zLSnv;9$L5I~1TySV|?qGd)t2sHpw5Q%|)~AEex0Gh)7Z0|IQpeQf++4j`6nm%Z zw;$ZQdw+dtNx&jMWbMAmrG2|^pPQVm5A7b>IvT{jp5BWKOEazA^+WafR#39qp~}*^ z=ukH~x4T(y9c<1Aaa^B2)Um(5f1!Ce3ZpcB-_D>ju7qLS)5}*}io>uo3B!Ow(zzxM zldhP4K@x}Mu)8}<%4?HyT;dsaML`hpFA1Zlv!m1zmZB&wMWv(^E{18^QHGjsc{!G9$v91c-z9_AR>bSnz zNf&0hoPnKV(MGKeIO!@lzWs#}6b!)+a%hGD)T1L<@?2D3Gd{Z*v9y^w}OWh-1NYY;jJe8tZ5iV4ppa!8D z5YW?6^XM;aFVe5sbycB6cZr^R2mmKa7$#eXX~rZ(PtfF6jIHuRZ)# z4Tipn(KmszaTe#46+Bv@Y$=O9WqF9QJkn~1I*PKfr)=yg3;wV@T?Gfqwn22TB*ue% zPTAN~_PMrLoDOp8YHBEuz9ow^Qwi!C52LIk9*SH>SL#_poUT&|z^o$D5R(sa1U5(c z0`!vVYhC(Q#(`NNFnlo+qibRMHb2kJ1|%+zMc1&H$UPG@O#E12Uvx9`iJ7N9lDG}- z*^hc=va(SSh}`KwoVY5Cju?V97$(@!jp&IeejnW51os0is4R+PUI=VKuv8*YNhL*5 zx`83QAxjTOVW-4T6!M(ygF-t@3SyVRsN!AfkiYAZM$GG~w=#X~o(&qc&Z6VQY^_|p zk2h*vD+Uc{cKQ!A(vtLMQ*0BJvU2{`k#*&75}J5`d9VqLfT|{x4VSq`Ka!-~XE-jH z?l^T9v3iY4#{$R?s~OkV5IifJ=w)ZhfRrfa?TD~Zc#}!Ls45PfgbhYj&2Bm+0>(zm z>%0PG1>t%ctQ5v$%A|a;d+lFgbEH$0H}HTl>v?EWsUz^ycL$Z9rk2GTkmr2VhEw)lb({{+W^SIy#8lVcK=k+KM;d0mca0c)Kq{#h`VK9g!#- zxXT-^3sL&dR2jmCkhH!=_l32{@sjbiv!kx-HGgx`q>-Uwq!JbVk8D|{1$jZjz+ z7uUip+$4ov=U^j3~E#aBsX3s1l8& z(uK_{Lb;^Kt!X%HV$tV~H@r(!pQs7RdesuTSY%bP!Vt689}B}IU!Zvu*}T{*p?VbB zElX8scjTJ`85h80=`V_Ru*Q@_=)N6gX=~C2P_kX#}3qXkgK>i#cBEWlOuVe|a zSJ92N#6&_%&Ha))`bG4XnO0b<+*D;r8E_&;rK%39bi@W{KHePuLlxCt*ohGHVmQ^!c2)n4z^5w@jF@!97Ez z!UUof_buKDr=AF5lUF~l5`;}Cpqx4qmO%Sd(r>kw^J2kNpC}JW(syLx<{*(+J3_g{ z9lJkqPa~2HbT8n{Ub;U?FO_Gas>4$dTpe-~BI9ieBUGV#+nF*P2;Do{Wld6&WQE?j z-{n;c!6>1{CE3^>9_IXr3`V1Ml!zNsmbo#vA0>BXL&ll@j;0MfUO$TcSntatj3@zJ z=0a~NZ{zk>=52r)a558eOCgsS5i?kx+ieL;1zZBQp^>syNuoW1sNS#;md zi!1lXgjXi!XS^`$7|8PY>PlROk$gOlUt=WI;wwT?i%i;4*0`eGm>Kv&%n67lh+cVY zWM&>2ArFr}(7_QAz|=bY8sR0dgrD4#n#QT=a7STYcXW>wPXDuLO%kw+kWcO-fXcya z7>z(uJQx>T&_g9jPL>F^5_%K%nV-*{4y~cn@43N1{Tqg$b*eH|a8Nfpfz*Vnc0Ms)E z&`S)U>CG7sw;4beF~GnW1K^=ZNQGyBEQ}an2B(wSHUlj5^bClk5L#N!fT&=AfV3G9 zc?S4##(?&?oB@$D255560KItz7^I)TfFih!gRpXOfP&n+9Llx@vN-NFBoG^wt=RQ_ z*>-*Rh28|P=kv@WOgMvD57WQ)I~E*7Qg&_76qMjUYlID7Od42AiHtPz$)YHuCho~@ z6idkzY1>9%J#FPidNuKloP#2j%9ZUX&?6CE5h}WdsPvXOT1VeUWo3ZqX)Dxv8tIKe zYg8jJv9`|r|O%I!zq}0(_?&_}e1h`v}5q`DUy@Ijrz&@_m(rP6(L$&0B zAn5Hu9k8AoTyjAEH+G-;Wa5xEwXr*MFFlwz!f}e%_J%!cq;9`W4>n!u(aSOju5dcC zs#a^ZLWZMAe|Dhj0Z%-QR#_Z-FLAG6}7fy!8!Q ziGTbe+O6Gr>u>!=;&?r)wJUFZl-7&RX)WiiPtbZU|NJ)3mZHKWpAn z-ueQqyq?vXL|asy!BK zR7s$)2dzqmCT6Q^qa!i$o5h=hTTITdZq@EWpv|S!5Q@HNpqAc5sK(n!Ey^nS`;|n8 z7^@^(i;teIUJy@Y-C0!YY*d5n0u;B}QGnt}EW}JKb+%S=WsHTDWjo@AyX!zL($<2O z*=pJ0)D*DAGRjI7pp{sR^n*embK!MNiiFd*R=%khwsg3AKXPAruG$3#^lsD?$tbky zTB=>>jx1#tT8G&KVuIC%stxnnrdwwGodZM7q!H8xGB@?+e%SC;sw0|BKj@5R>s@$#Z+H>i7{De3>~92Z;%@9(sCBc~V%lqa zV@QPA&pIh-hhf|up(44lSM}*FsC#F{y@-}>a3??K<3en~t-T3hJJctTY><^%i~CNh zrFa4iN-*gn$OVf^S*Q3?&N}qyf^g*UI$=30P%!TO`){pBt!nL?~RC2^2v{W)=%zHc{HDn0Gpn+2x)_1 z&uHfEWdjrd9m=nPD9qdI9>O9fS&z46bja3Zfs&wz7F48{>%Ok!f=Uf^gG}Z&D0)Nd zia4t&e3XJ#f4fv<<4%Mt_pt88fPHip`e?tY7Ws86VTjTSucu^?XfX+auDT&^;11()A!8 zy5p;XVq653hNlBu#&Ny9Wi|uIg0Z;Eawgl6e=s*W+~@&XeQ;dTbowt#30MqTHe`qK9=w#0c11DS!(~HjIAc|8Czl>jV5E8oSU&#LJ8eL<~&V=Paz5t0;-E#<7dJ= zJ;IEVD6%9)MYSo;NA!i zxafKeBKBJFWD0p2Uvr4R{11mHjf~UOtsMSuLpFBB@sN+wVMvzc`#NHNzpjlM<@5fs z!mARg+LYBywj@EYbRF)GhYl_1s6z|Wc{uv^p-pi(=AZ(#XuVL{kKG&M-ru>j+Tsf(L^+nZZsN~ zEZgdnI468=CvYb$xr6Y@pooXQ#Wr5H^@k5=_u^P|8Wv0UPKf)bQD)ef{$ek+n}dIs zRPFghg59C~)ubBv5KZ&zziLk;HNxcCHKkIyTn>W@wFwSpc1@g=IhvqwAHf)!!WbMW~HKM}YWZSBy`T}2$>6b0o}{yhAM-CuYrQ)u=|2+mOX z63NI3PL1Ag4Zp|HZs2~`=o3ELO@S(@8 z7N3bL#3oR6n-Wg$l)?OAtiXUXC(_6!fhVc9yi8GX!YayVdYra_kFJo>=dI@0ikcU# z=J=T!<_(ULK7JMoDgVuE$3?7{wVUB7vY#>|vYJo-o;8Nna^~v{vyf~P4HKcij2eAG zFdBRZco>f0d-$8@LszO)H38zTQwn2qKE^#I`RZf9XdoGUmSUcU!|ps!?bif~l-wyj zqwT?A9(cYx>5Sny4r{zGdD2Xf4)n2B0wpUJ+i`QSiMp}qnAk{Y!ndhoUvx52pw$=c z(vd)4v=i&iM%MG+l-yd3)Fo%u#0$UBvSFeyc`PU*BM;M|L976s~dG^|;8_cnJq zY#>!>muH(_jPdJ7s2=(*MPDuzsxQ&w?7v2(P{E#B7yxDQ9d38n2vsUwf;pHvqX{$N9qUL$4dGt&TR1aQ` z*pWb3abTHk=_wJ}b64iAFp6+7H%<=T$|x~HCw|6mY33F|co9yvspH5k8*v0uW(WS> zP5Ptr?kxGr-6@MbXMhg=h=FsGCfkXT7%TAG2!aQV(5tP-BM(@B{v5Zm{CVRtIe>)F zQ1_LxAbnRvRJAEyUn8*GrTa_B9^|ieX7Mhj>U`hD##q=L-HoutcV`{ob^-mQGbka0 z%k+-!GI?b4Rr(5zrYZt**Iht1IV~fnA*>|7W8=3my?7W17u!bWrok${Va6CRMUUsK z!W#$c@#j>8Y7Pb9FICC`SjGRa3J<_4{>Cai0IR@Nj5CtQKha)oEFO?4AB%PUi(|@B zbc(n!k<3D`5(lFGs?BSVlmpQl+KGH`+_=tRrwLd;Wxq*v=rloAf`={!;FH$#P})~J zEb2m}y zHxnIMH3W+Mp5`=j_6npo-&pfzoQd5_RyVsNv!0$`Xy=~RlgPis-4f-8H0`$TFyDA`i2^btz7T$N-&KE$JIEY_N#^u5BIQ_b6Wh~lHBNF#W(pSJ7v85_PG zfZMz7JKB3>Sp%d=SrNXCmV45{JsUT-10JE=`x#$r5PV5D{RXbBKBVx5WMPmoaWF1;# z-Z!rWw67)WD{B)Om5pIW75I&FC&ytnNtDrX>GJZOMkzWAfAZ7xvq*f^O)5EqjUt3Y;+hCAItlhRvWK@mSk+FEauUTA3HQ9l_@uECx9h0N4@-mMur$aIOV6CN zVpHiy(knMK&{mJ2v^qpu6yna7?c~x!6LeEaCpLtwEe1tydHJpb`ADuPW8{rZ z;GFri`i&f+R5XhZ3UwI%`>+k+ozSLHiAS5^_r)1+S(GVT|r&9hQj6 z&?lw(G)l5f&T~Na0`IB!5rpglPKb#^rF!hFq?%P$i9Vnf^50d62tpe;!@3|sviw0< z1oH%xv!)jP6QOcdj!9V=H8pa33tUVZIY3#Bg!r=>2_H$ZSf3u&dAHF?$dJj`p(d_R z$!1RQKOp;K`SlIdqp8#vmE?Li7VD9``t>N?7ot9_2MvdUcpKs1m&SUF)yXzc%sORs zjbPXf>u-ePi`e80?d-hBZp{HX_Pd9ixfQXLU|w~APR;Fst}%zM=MZ}rN?b&s)N!cY+)ExtTSapldL$$by@5@T z!or7;s9o(tyf3hEt6Yf=wAk?AMy^$6$Q*~Il~$mnRI4Fz%1|QjWajk@&N?tyg=KpY z#i~4r3lF)@1MXE1C8?xWD90loY=~YZbO}C@!+Uz0pwj6?jBHeoE1*+h4lDYj;>e0pONs?M8|OSJ7+^ zHzE{-xi~Qk6j#g`tzK(I6c=N(a`I!hWOd}J!(3Hmvr&3XF~`>Fdvy?x^R_AT z%O=RU^+{@7V(mX_AYlYpY6h;)BbWo`^EL-rwZ{WebeE}p9RaB!(%nYHjF1A)Xci^9 zRhA%yp<0zT_7vBN5Qc7dZeE4H>bldNbP2N_1FutZjyb9dFKk}3W2-@zA+QHcxT45` zREW?zi#{?DE9ir0m4qQCaVOv-U0uje-%mZ_L%`fnStwzL^e_F6HE?@N6XZ9FR$Yj( zzuAFN7sV4?TM8>9w_g-8JU@3;;2Dx#z(Gyw+7J*9?;;}hdLve&=ytxiT zNzy4%mF^H%@QhVf!L7Y&98Iu=QKTWEe9qpGbDjL7K562*h_ci}g2D|hdiXcqy_Ncw zr>250a3K(LFF%yHVWzvP;l4%e_P{5KE49InuYUdu|LLLACmtNMblHw4zVY!FK6moI z-_1x_R6db}-HIX#*P*o$#ktfpodx^bG6Vytc6xIS$M3rYT%y6ax%fb;zf19Vjj=3; zswI&cGII}vz}KANDGrxW-c#YN7rWD+Nzz;70egI0Y~I}bxw%CQh(Noi{zbc69(P#a zkHe`M)dB=hZa_@X9yw|?s$F68RTO4Ip_Y7Ir*pdoGz()%>A*>ae6sSU-rUeKf@wm3Q!Rvj#DGFt(qPN6=tl-ZbkLTr zG6czWF%AjkauJu!^oM^o3xqfOpO07dEXL->%F&3}Kbpw+a|{D2EU-m-06_Z}t%Cp* z_;ib~G&OE*x7_-JE_g3l9<}2$)vi{BQnu(z4iH<%?t7tbgLSx$R+cpFk1lNlJDOrd z#0c=|Xf@5zz8b=7d{~F;p~m*Vnu1do4e&U2xC>jny&4?Ql(7JG3P2Ooybls%Swb0w z#&XPRgG3x9vOq8XObUl4s$uQrSG>S2`}>GLG_K1@0Uqj`V(gTZ%gw8ahsED4OgcG%I}!}G zvFa6bYtAgIZIH@XF)d@Aa07D_S+6KQDB!AlfPH4^7i;}=;{`QQR^!JH#Og}UYU-~= zr#IC~+RB(;%u2J|+ql(*qL75Lh%exw$ZRpzI^~Japi~2#Z4>1sxE+{>6@H#KMP5tJ zZ&$Bl-OPiGh>Ze-N_`;Tsf(G0hHL1xlBqG|6C1Yd>&Lt^cTyzO2J(R@rsp77r8cw_rUZpIi$-4RB-=i zfC`_LX7}|g&6z702%>-Gl?Bf|K0z7`J2D}#B=U` zAljMUj+egs_4|*WzW=*--+$juR6}H1jSNK@O-Kwt!>?*=*B@bVH*%((s!Ax+L5zUK zFakKmHL0ZicZ4ibduCwzlqQsA^G{d*Cjff$de58vMLBq~E$50< z155ShQvc%O!ra2thwHQbTc#$Pdl&kf^}RDot>)qWrRG%s%=~oy&Mi~T$yR-7%gn;& z(LIA>(?dhI-#$6Gbzop{4;^NUA05~{vSoP7fDN0Q{P5xa{gaD}GxK}5G?#+!zi{ch zuA7{ht50XGg^V96$n1v+vYGkp7T;@owitvEL;u2HmhZ>-ypzw*4^Mt?U5j=(tG<7+rPWMMPiJ?` zwDx5Shw9Bea|?Hr85HK9nCCV1sfFqK)%t~n`mQF+txx;H`}x6yW~)AZQ~mIJ7h2aX z9Gsuty`v6IX|uoo;CyRlf89g7c4~TQ^8KI*K8JnP z`J#IL&XxqE8im0;w0eopFYwv5ub$QKtWO<;JlWL3JilNu)ynoCTxw_U%iHbriRG4iopzw4||{>vv8f z?e(Spy729vo4Fk({59}Jw@yAKKKXBnWC&UFaCXP!QYMi<9BfQNqXpEPo6hDJS{aBg z)|+#OvuP9cY}Lr%8v0)byaN6o^L`nZ{T}>jibTI)g`(|0IMV z$>tqc3dq&35qio<>Rpx1NvtMfxiICcC-2yOs6Hj}28WUtoJT=Yf;Ba{I5{=bI^4Dz z)IC5Sd{?_~HS&x&Pxu<0;LE$Fnz0RGdW$xK8i}P9V-VdJB z&^Y6Ho+d{g`u8tPdzo0@>1ARPjT6m^@@dM2Os|mtrGvM7Gq_s*wdtrllCJ1@jz`)= z%BHYHf6t^+l;T-Tq`I|y7ANOtre?*KR<^y{{C~D^uq7F|T^?#_d)C4@&(-I%nI*)6 zCY60hYDT#wn*ry8JTK(AokB79ozy|^AmiWV-F){)VXv61nSZCeMn4sIRV zI=ppc>(;HKTgSGJZ{0RJFgiFoG&(#wGP-qibaZTVe01B`z}Vo}(AeQ9$9~PBx4HDL( z{29svl+O=JOLH?*^?oeW)V`)yqT9N|;2`rK;&T(9qI?JMBYX&(_SW%8lT9p;qS>qv zXWxRE$_%O`9I4(*B=;j=N_M*|VNh$sz@_F8uB1L)(SAPHK10BwmH#?8$gw;F{ol!R zY2jdViiL_m#X9;nWz!2-ZTVC z{*yTlMfp|?;%4g3A5P|twbKcXfsd^JJ-Z-WP|LR8J2d2Cyj4$9CJZ{Xo0&J;Gzp77SwFrtZRjU&Zc6>pWLhf7aB&Pu`N> zesB-JT4*Mrz4MaJD}XL`Vk)mYt30@(T<2XjqUiq{yvtq|<=^7H%ID{^rp3u7LH*_> zcBl2t+V)Rv9^Nv#Wt+tzR@Q1ZUf@$4@=@B5yq%BM^fo?Pi^_MgbNn=)uk!gipYN;< F|1WbE1VjJ; literal 0 HcmV?d00001 diff --git a/packages/api-contract/src/test/contracts/ink/v4/index.ts b/packages/api-contract/src/test/contracts/ink/v4/index.ts index abe6c64bfa33..b9ec4dbdf248 100644 --- a/packages/api-contract/src/test/contracts/ink/v4/index.ts +++ b/packages/api-contract/src/test/contracts/ink/v4/index.ts @@ -1,5 +1,7 @@ // Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 +export { default as erc20Contract } from './erc20.contract.json' assert { type: 'json' }; +export { default as erc20Metadata } from './erc20.json' assert { type: 'json' }; export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json b/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json index 37d7e5f88d3d..56f4b9e564a6 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json +++ b/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json @@ -1,1026 +1 @@ -{ - "source": { - "hash": "0x37cb53e1aa5636a016d38d70a3f8ca2a533c4c6f9da07541f1ae7ce1ed01b5c2", - "language": "ink! 5.0.0-rc", - "compiler": "rustc 1.75.0", - "wasm": "0x0061736d01000000014d0d60027f7f0060037f7f7f0060037f7f7f017f60017f0060000060047f7f7f7f017f60027e7e0060047f7f7f7f0060047f7f7e7e0060037e7e7f0060037f7e7e006000017f60047f7f7e7e017f02b10109057365616c310b6765745f73746f726167650005057365616c3005696e7075740000057365616c300d6465706f7369745f6576656e740007057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e0001057365616c300663616c6c65720000057365616c301176616c75655f7472616e736665727265640000057365616c300f686173685f626c616b65325f323536000103656e76066d656d6f72790201021003222102020202080000090a0001030103000000030100030b0001000604060000040c040616037f01418080040b7f0041c880050b7f0041d080050b0711020463616c6c0026066465706c6f7900280ad932212b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6f01017f0240200020014d04402000210303402002450d02200320012d00003a0000200141016a2101200341016a2103200241016b21020c000b000b200141016b2101200041016b210303402002450d01200220036a200120026a2d00003a0000200241016b21020c000b000b20000b2501017f037f2002200346047f200005200020036a20013a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b9e0101037f230041106b22042400200442808001370208200441c8800436020441b7c380e57e200441046a2205100d20002005100e20012005100e024020042802082206200428020c2200490d00200428020421012004410036020c2004200620006b3602082004200020016a360204200220032005100f200428020c220620042802084b0d00200120002004280204200610031a200441106a24000f0b000b2601017f230041106b220224002002200036020c20012002410c6a41041014200241106a24000b0a0020012000412010140b2a01017f230041106b2203240020032001370308200320003703002002200341101014200341106a24000b980101047f230041106b22032400200342808001370208200341c8800436020441e7b98fb102200341046a2205100d20002005100e024020032802082204200328020c2200490d00200328020421062003410036020c2003200420006b3602082003200020066a360204200120022005100f200328020c220420032802084b0d00200620002003280204200410031a200341106a24000f0b000ba90101057f230041306b2202240002402000280204220420002802082203490d00200028020021052002410036020c2002200420036b22043602082002200320056a22053602042001200241046a2206100e200228020c220120022802084b0d0020062002280204200110122002410036022c20022004360228200220053602242006200241246a100e2003200228022c6a22012003490d0020002001360208200241306a24000f0b000bed0101077f230041406a22032400200341186a22044200370300200341106a22054200370300200341086a22064200370300200342003703000240200241214f0440200341386a22074200370300200341306a22084200370300200341286a220942003703002003420037032020012002200341206a1007200420072903003703002005200829030037030020062009290300370300200320032903203703000c010b20032001200210081a0b20002003290300370000200041186a200341186a290300370000200041106a200341106a290300370000200041086a200341086a290300370000200341406b24000bb40101077f230041306b2201240002402000280204220320002802082202490d00200028020021042001410036020c2001200320026b22033602082001200220046a2204360204200141003a0024200141046a2205200141246a220641011014200128020c220720012802084b0d0020052001280204200710122001410036022c200120033602282001200436022420052006100e20022002200128022c6a22024b0d0020002002360208200141306a24000f0b000b4801027f024002402000280208220320026a22042003490d00200420002802044b0d00200420036b2002470d01200028020020036a2001200210081a200020043602080f0b000b000b3e01027f024020002802082201200028020422024b2001200246720d00200028020020016a410c3a0000200141016a2201450d00200020013602080f0b000b5502027f017e230041206b22022400200241086a20011017200241186a29030021042002280208210320002002290310370308200041106a200437030020002003200128020472410047ad370300200241206a24000b5c02017f037e20012802042202411049047e4201052001200241106b36020420012001280200220141106a360200200141086a29000021032001290000210442000b21052000200437030820002005370300200041106a20033703000bb90102027f017e230041206b22032400420121040240200128020422024120490d002001200241206b36020420012001280200220241206a360200200341086a200110172003290308a70d00200341186a2903002104200041286a200329031037030020002002290000370008200041306a2004370300200041206a200241186a290000370000200041186a200241106a290000370000200041106a200241086a290000370000420021040b20002004370300200341206a24000bb00201057f230041306b2201240020014280800137020c200141c88004360208200141086a1015200141286a200141106a28020036020020012001290208370320200141146a2202200141206a41858004101a200041316a2104024020002d001004402002200041116a10110c010b200141146a10130b200141286a2001411c6a28020036020020012001290214370320024020042d00000440200141206a200041326a10110c010b200141206a10130b02402001280224220320012802282202490d0020012802202105200141003602282001200320026b3602242001200220056a360220200041106a200141206a2203101b20042003101b2000290300200041086a2903002003100f2001280228220020012802244b0d0020052002200128022020001002200141306a24000f0b000bd10101057f230041306b2203240002400240200204402001280204220520012802082204490d02200128020021062003410036020c2003200520046b22053602082003200420066a22063602042002200341046a2207100e200328020c220220032802084b0d0220072003280204200210122003410036022c20032005360228200320063602242007200341246a100e2004200328022c6a22022004490d02200120023602080c010b200110130b20002001290200370200200041086a200141086a280200360200200341306a24000f0b000b210020002d00004504402001410010250f0b200141011025200041016a2001100e0b6d01017f230041106b2201240020014180800136020c41c880042001410c6a1005200041c98004290000370001200041096a41d18004290000370000200041116a41d98004290000370000200041186a41e08004290000370000200041c880042d00003a0000200141106a24000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10062000290308210120002903002102200041206a2400410541042001200284501b0bda0102047f027e230041306b22022400200242808001370228200241c8800436022441e7b98fb102200241246a2203100d20012003100e024020022802282205200228022c2201490d00200228022421042002200520016b220536022420042001200120046a2201200310002104200520022802242203490d00027e0240024020040e0400030301030b2002200336022820022001360224200241086a200241246a10162002290308a70d0220022903102106200241186a2903000c010b42000b21072000200637030020002007370308200241306a24000f0b000be00102037f027e230041306b22032400200342808001370228200341c8800436022441b7c380e57e200341246a2204100d20012004100e20022004100e024020032802282205200328022c2201490d00200328022421022003200520016b220536022420022001200120026a2201200410002102200520032802242204490d00027e0240024020020e0400030301030b2003200436022820032001360224200341086a200341246a10162003290308a70d0220032903102106200341186a2903000c010b42000b21072000200637030020002007370308200341306a24000f0b000b4401027f41c8800441003a000041012103200141ff0171410247044041c9800441013a000041022103200121020b200341c880046a20023a00002000200341016a1024000b4c01017f230041106b22022400200241c8800436020441c8800441003a0000200242808081801037020820002001200241046a100f200228020c2202418180014f0440000b410020021024000b130041c880044181023b0100410141021024000b8e0101057f230041106b22022400200242808001370208200241c880043602044100200241046a2206100d024020022802082203200228020c2204490d00200228020421052002410036020c2002200320046b3602082002200420056a360204200020012006100f200228020c220320022802084b0d00200520042002280204200310031a200241106a24000f0b000b0d00200041c8800420011004000b2d01017f2000280208220220002802044904402000200241016a360208200028020020026a20013a00000f0b000ba91202087f047e23004190046b2200240002400240101d41ff01714105470d002000418080013602b80341c88004200041b8036a100120002802b8032202418180014f0d0020024104490d01200041cc80043602a8032000200241046b22053602ac0341cb80042d0000210141ca80042d0000210341c980042d00002104027f02400240024002400240024041c880042d00002206410b6b0e050508080801000b0240200641e8006b0e03040802000b2006418401460d02200641db0147200441e3004772200341f50047200141a8014772720d0741000c050b200441f50047200541204972200341da0047200141d6004772720d0620004190016a41d5800429000037030020004198016a41dd80042900003703002000419f016a41e48004290000370000200041cd80042900003703880141cc80042d0000210241010c040b2004200341164772200141de004720054120497272200241c4006b41604f720d05200041df036a41f48004290200370000200041e7036a41fc8004290200370000200041ef036a41848104290200370000200041c0036a41d58004290000370300200041c8036a41dd8004290000370300200041cf036a41e48004290000370000200041ec80042902003700d703200041cd80042900003703b80341cc80042d0000210220004188016a200041b8036a413f10081a41020c030b200441a10147200341dd004772200141a10147720d04200041b8036a200041a8036a101820002903b8034200520d04200041d6026a200041ce016a200041366a200041c0036a4130100841301008413010081a20004188016a200041d0026a413610081a41030c020b2004411247200341e6004772200141a00147720d03200041b8036a200041a8036a101820002903b8034200520d03200041d6026a200041ce016a200041366a200041c0036a4130100841301008413010081a20004188016a200041d0026a413610081a41040c010b2004413947200341ef0047722001411847200541204972720d02200241c4006b220241604f2002410f4d720d02200041d8026a41d48004290200370300200041e0026a41dc8004290200370300200041e8026a41e48004290200370300200041f8026a41f4800429020037030020004180036a41fc800429020037030020004188036a41848104290200370300200041cc80042902003703d002200041ec80042902003703f002419481042902002108418c8104290200210920004190026a2201200041d0026a41c00010081a200041ce016a200041366a200041be036a200141c000100841c000100841c00010081a20004188016a200041c8016a413f10081a20002000418a026a28000036009f03200020002800870236029c0341050b2101200041306a220441027220004188016a413f10081a200041f4006a200028009f0336000020004180016a20083703002000200028029c0336007120002009370378200020023a0031200020013a00302000428080013702bc03200041c880043602b8034100200041b8036a2205100d20002802bc03220620002802c0032202490d0020002802b80321032000200620026b22063602b80320032002200220036a220320051000200620002802b803220249722002411047200241104972720d0020044101722102200341086a290000210820002003290000220937038801200020083703900102400240024002400240024002400240200141016b0e050001040502030b230041406a22012400200141286a200241086a290000370200200141306a200241106a290000370200200141386a200241186a290000370200200120004188016a36021c20012002290000370220200141086a200141206a101e200129030821082000200141106a29030037030820002008370300200141406b24002000290300200041086a2903001021000b230041e0006b22012400200120004188016a36021c200141086a200141206a200241c0001008200141406b101f20012903082108200041106a2202200141106a29030037030820022008370300200141e0006a24002000290310200041186a2903001021000b200041c0036a200041386a41d00010082102200020004188016a3602b80320004180046a290300210920004188046a2903002108200041c8016a2201101c200041206a20022001101f41012103410121012000290320220b2009542204200041286a290300220a2008542008200a511b0d04410221012002200041e0036a20092008102741ff017122054102460d03200541004721010c040b200920081021000b200041c0036a200041386a413010082102200020004188016a3602b803200041e8036a2903002108200041e0036a2903002109200041c8016a2201101c20012002200920081027220241ff0171410246047f20002903880120004190016a290300102341000541010b20021020000b200041d8026a200041386a413010082102200020004188016a3602d00220004180036a2903002108200041f8026a290300210920004190026a2201101c2001200220092008100c200041e0016a200041a8026a290000370300200041d8016a200041a0026a290000370300200041d0016a20004198026a290000370300200041f0016a200041406b290300370300200041f8016a200041c8006a29030037030020004180026a200041d0006a29030037030020002000290090023703c801200020002903383703e801200041b8036a2203200041c8016a41c00010081a20004180046a22052008370300200020093703f80320004280800137029403200041c880043602900320004190036a1015200041b0036a220120004198036a28020036020020002000290290033703a8032000419c036a2204200041a8036a220241a68004101a2004200310112001200041a4036a2802003602002000200029029c033703a8032002200041d8036a2206101120002802ac03220720012802002201490d0220002802a8032104200041003602b0032000200720016b3602ac032000200120046a3602a80320032002100e20062002100e20002903f80320052903002002100f20002802b003220220002802ac034b0d022004200120002802a8032002100220002903880120004190016a2903001023410041021020000b2002200041c8016a200b20097d200a20087d2004ad7d100c20002903880120004190016a2903001023410021030b200320011020000b000b1022000bc80202037f037e23004180016b22042400200441186a2000101e0240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d1010200441086a2001101e2004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b4101460d012001200920081010200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1019410221050b20044180016a240020050f0b000bef0302067f027e23004190016b220024000240101d41ff01714105470d0020004180800136022841c88004200041286a2204100120002802282201418180014f0d00024020014104490d0041c880042d0000419b01470d0041c980042d000041ae01470d0041ca80042d0000419d01470d0041cb80042d000041de0047200141146b416f4b720d0041d48004290200210641cc80042902002107200041086a101c200041c4006a200041206a2900003702002000413c6a200041186a290000370200200041346a200041106a2900003702002000200029000837022c20004180800436022820004280800137028801200041c880043602840141e7b98fb10220004184016a2202100d2000412c6a2002100e2000280288012205200028028c012201490d0120002802840121032000410036028c012000200520016b360288012000200120036a36028401200720062002100f200028028c0122022000280288014b0d0120032001200028028401200210031a200041f2006a200041206a290000370100200041ea006a200041186a290000370100200041e2006a200041106a290000370100200041da006a20002900083701002000200637033020002007370328200041013a0059200041003a00382004101920072006102341c8800441003b0100410041021024000b1022000b000b0b4e0100418080040b46e7dc232601b5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb011a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d", - "build_info": { - "build_mode": "Release", - "cargo_contract_version": "4.0.0-rc.1", - "rust_toolchain": "stable-aarch64-apple-darwin", - "wasm_opt_settings": { - "keep_debug_symbols": false, - "optimization_passes": "Z" - } - } - }, - "contract": { - "name": "erc20", - "version": "5.0.0-rc", - "authors": [ - "Parity Technologies " - ] - }, - "image": null, - "spec": { - "constructors": [ - { - "args": [ - { - "label": "total_supply", - "type": { - "displayName": [ - "Balance" - ], - "type": 0 - } - } - ], - "default": false, - "docs": [ - "Creates a new ERC-20 contract with the specified initial supply." - ], - "label": "new", - "payable": false, - "returnType": { - "displayName": [ - "ink_primitives", - "ConstructorResult" - ], - "type": 14 - }, - "selector": "0x9bae9d5e" - } - ], - "docs": [], - "environment": { - "accountId": { - "displayName": [ - "AccountId" - ], - "type": 2 - }, - "balance": { - "displayName": [ - "Balance" - ], - "type": 0 - }, - "blockNumber": { - "displayName": [ - "BlockNumber" - ], - "type": 23 - }, - "chainExtension": { - "displayName": [ - "ChainExtension" - ], - "type": 24 - }, - "hash": { - "displayName": [ - "Hash" - ], - "type": 21 - }, - "maxEventTopics": 4, - "staticBufferSize": 16384, - "timestamp": { - "displayName": [ - "Timestamp" - ], - "type": 22 - } - }, - "events": [ - { - "args": [ - { - "docs": [], - "indexed": true, - "label": "from", - "type": { - "displayName": [ - "Option" - ], - "type": 20 - } - }, - { - "docs": [], - "indexed": true, - "label": "to", - "type": { - "displayName": [ - "Option" - ], - "type": 20 - } - }, - { - "docs": [], - "indexed": false, - "label": "value", - "type": { - "displayName": [ - "Balance" - ], - "type": 0 - } - } - ], - "docs": [ - "Event emitted when a token transfer occurs." - ], - "label": "Transfer", - "module_path": "erc20::erc20", - "signature_topic": "0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb" - }, - { - "args": [ - { - "docs": [], - "indexed": true, - "label": "owner", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - }, - { - "docs": [], - "indexed": true, - "label": "spender", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - }, - { - "docs": [], - "indexed": false, - "label": "value", - "type": { - "displayName": [ - "Balance" - ], - "type": 0 - } - } - ], - "docs": [ - "Event emitted when an approval occurs that `spender` is allowed to withdraw", - "up to the amount of `value` tokens from `owner`." - ], - "label": "Approval", - "module_path": "erc20::erc20", - "signature_topic": "0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d" - } - ], - "lang_error": { - "displayName": [ - "ink", - "LangError" - ], - "type": 15 - }, - "messages": [ - { - "args": [], - "default": false, - "docs": [ - " Returns the total token supply." - ], - "label": "total_supply", - "mutates": false, - "payable": false, - "returnType": { - "displayName": [ - "ink", - "MessageResult" - ], - "type": 16 - }, - "selector": "0xdb6375a8" - }, - { - "args": [ - { - "label": "owner", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - } - ], - "default": false, - "docs": [ - " Returns the account balance for the specified `owner`.", - "", - " Returns `0` if the account is non-existent." - ], - "label": "balance_of", - "mutates": false, - "payable": false, - "returnType": { - "displayName": [ - "ink", - "MessageResult" - ], - "type": 16 - }, - "selector": "0x0f755a56" - }, - { - "args": [ - { - "label": "owner", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - }, - { - "label": "spender", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - } - ], - "default": false, - "docs": [ - " Returns the amount which `spender` is still allowed to withdraw from `owner`.", - "", - " Returns `0` if no allowance has been set." - ], - "label": "allowance", - "mutates": false, - "payable": false, - "returnType": { - "displayName": [ - "ink", - "MessageResult" - ], - "type": 16 - }, - "selector": "0x6a00165e" - }, - { - "args": [ - { - "label": "to", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - }, - { - "label": "value", - "type": { - "displayName": [ - "Balance" - ], - "type": 0 - } - } - ], - "default": false, - "docs": [ - " Transfers `value` amount of tokens from the caller's account to account `to`.", - "", - " On success a `Transfer` event is emitted.", - "", - " # Errors", - "", - " Returns `InsufficientBalance` error if there are not enough tokens on", - " the caller's account balance." - ], - "label": "transfer", - "mutates": true, - "payable": false, - "returnType": { - "displayName": [ - "ink", - "MessageResult" - ], - "type": 17 - }, - "selector": "0x84a15da1" - }, - { - "args": [ - { - "label": "spender", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - }, - { - "label": "value", - "type": { - "displayName": [ - "Balance" - ], - "type": 0 - } - } - ], - "default": false, - "docs": [ - " Allows `spender` to withdraw from the caller's account multiple times, up to", - " the `value` amount.", - "", - " If this function is called again it overwrites the current allowance with", - " `value`.", - "", - " An `Approval` event is emitted." - ], - "label": "approve", - "mutates": true, - "payable": false, - "returnType": { - "displayName": [ - "ink", - "MessageResult" - ], - "type": 17 - }, - "selector": "0x681266a0" - }, - { - "args": [ - { - "label": "from", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - }, - { - "label": "to", - "type": { - "displayName": [ - "AccountId" - ], - "type": 2 - } - }, - { - "label": "value", - "type": { - "displayName": [ - "Balance" - ], - "type": 0 - } - } - ], - "default": false, - "docs": [ - " Transfers `value` tokens on the behalf of `from` to the account `to`.", - "", - " This can be used to allow a contract to transfer tokens on ones behalf and/or", - " to charge fees in sub-currencies, for example.", - "", - " On success a `Transfer` event is emitted.", - "", - " # Errors", - "", - " Returns `InsufficientAllowance` error if there are not enough tokens allowed", - " for the caller to withdraw from `from`.", - "", - " Returns `InsufficientBalance` error if there are not enough tokens on", - " the account balance of `from`." - ], - "label": "transfer_from", - "mutates": true, - "payable": false, - "returnType": { - "displayName": [ - "ink", - "MessageResult" - ], - "type": 17 - }, - "selector": "0x0b396f18" - } - ] - }, - "storage": { - "root": { - "layout": { - "struct": { - "fields": [ - { - "layout": { - "leaf": { - "key": "0x00000000", - "ty": 0 - } - }, - "name": "total_supply" - }, - { - "layout": { - "root": { - "layout": { - "leaf": { - "key": "0xe7dc2326", - "ty": 0 - } - }, - "root_key": "0xe7dc2326", - "ty": 1 - } - }, - "name": "balances" - }, - { - "layout": { - "root": { - "layout": { - "leaf": { - "key": "0xb721a0ec", - "ty": 0 - } - }, - "root_key": "0xb721a0ec", - "ty": 9 - } - }, - "name": "allowances" - } - ], - "name": "Erc20" - } - }, - "root_key": "0x00000000", - "ty": 13 - } - }, - "types": [ - { - "id": 0, - "type": { - "def": { - "primitive": "u128" - } - } - }, - { - "id": 1, - "type": { - "def": { - "composite": {} - }, - "params": [ - { - "name": "K", - "type": 2 - }, - { - "name": "V", - "type": 0 - }, - { - "name": "KeyType", - "type": 5 - } - ], - "path": [ - "ink_storage", - "lazy", - "mapping", - "Mapping" - ] - } - }, - { - "id": 2, - "type": { - "def": { - "composite": { - "fields": [ - { - "type": 3, - "typeName": "[u8; 32]" - } - ] - } - }, - "path": [ - "ink_primitives", - "types", - "AccountId" - ] - } - }, - { - "id": 3, - "type": { - "def": { - "array": { - "len": 32, - "type": 4 - } - } - } - }, - { - "id": 4, - "type": { - "def": { - "primitive": "u8" - } - } - }, - { - "id": 5, - "type": { - "def": { - "composite": {} - }, - "params": [ - { - "name": "L", - "type": 6 - }, - { - "name": "R", - "type": 7 - } - ], - "path": [ - "ink_storage_traits", - "impls", - "ResolverKey" - ] - } - }, - { - "id": 6, - "type": { - "def": { - "composite": {} - }, - "path": [ - "ink_storage_traits", - "impls", - "AutoKey" - ] - } - }, - { - "id": 7, - "type": { - "def": { - "composite": {} - }, - "params": [ - { - "name": "ParentKey", - "type": 8 - } - ], - "path": [ - "ink_storage_traits", - "impls", - "ManualKey" - ] - } - }, - { - "id": 8, - "type": { - "def": { - "tuple": [] - } - } - }, - { - "id": 9, - "type": { - "def": { - "composite": {} - }, - "params": [ - { - "name": "K", - "type": 10 - }, - { - "name": "V", - "type": 0 - }, - { - "name": "KeyType", - "type": 11 - } - ], - "path": [ - "ink_storage", - "lazy", - "mapping", - "Mapping" - ] - } - }, - { - "id": 10, - "type": { - "def": { - "tuple": [ - 2, - 2 - ] - } - } - }, - { - "id": 11, - "type": { - "def": { - "composite": {} - }, - "params": [ - { - "name": "L", - "type": 6 - }, - { - "name": "R", - "type": 12 - } - ], - "path": [ - "ink_storage_traits", - "impls", - "ResolverKey" - ] - } - }, - { - "id": 12, - "type": { - "def": { - "composite": {} - }, - "params": [ - { - "name": "ParentKey", - "type": 8 - } - ], - "path": [ - "ink_storage_traits", - "impls", - "ManualKey" - ] - } - }, - { - "id": 13, - "type": { - "def": { - "composite": { - "fields": [ - { - "name": "total_supply", - "type": 0, - "typeName": ",>>::Type" - }, - { - "name": "balances", - "type": 1, - "typeName": " as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type" - }, - { - "name": "allowances", - "type": 9, - "typeName": " as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type" - } - ] - } - }, - "path": [ - "erc20", - "erc20", - "Erc20" - ] - } - }, - { - "id": 14, - "type": { - "def": { - "variant": { - "variants": [ - { - "fields": [ - { - "type": 8 - } - ], - "index": 0, - "name": "Ok" - }, - { - "fields": [ - { - "type": 15 - } - ], - "index": 1, - "name": "Err" - } - ] - } - }, - "params": [ - { - "name": "T", - "type": 8 - }, - { - "name": "E", - "type": 15 - } - ], - "path": [ - "Result" - ] - } - }, - { - "id": 15, - "type": { - "def": { - "variant": { - "variants": [ - { - "index": 1, - "name": "CouldNotReadInput" - } - ] - } - }, - "path": [ - "ink_primitives", - "LangError" - ] - } - }, - { - "id": 16, - "type": { - "def": { - "variant": { - "variants": [ - { - "fields": [ - { - "type": 0 - } - ], - "index": 0, - "name": "Ok" - }, - { - "fields": [ - { - "type": 15 - } - ], - "index": 1, - "name": "Err" - } - ] - } - }, - "params": [ - { - "name": "T", - "type": 0 - }, - { - "name": "E", - "type": 15 - } - ], - "path": [ - "Result" - ] - } - }, - { - "id": 17, - "type": { - "def": { - "variant": { - "variants": [ - { - "fields": [ - { - "type": 18 - } - ], - "index": 0, - "name": "Ok" - }, - { - "fields": [ - { - "type": 15 - } - ], - "index": 1, - "name": "Err" - } - ] - } - }, - "params": [ - { - "name": "T", - "type": 18 - }, - { - "name": "E", - "type": 15 - } - ], - "path": [ - "Result" - ] - } - }, - { - "id": 18, - "type": { - "def": { - "variant": { - "variants": [ - { - "fields": [ - { - "type": 8 - } - ], - "index": 0, - "name": "Ok" - }, - { - "fields": [ - { - "type": 19 - } - ], - "index": 1, - "name": "Err" - } - ] - } - }, - "params": [ - { - "name": "T", - "type": 8 - }, - { - "name": "E", - "type": 19 - } - ], - "path": [ - "Result" - ] - } - }, - { - "id": 19, - "type": { - "def": { - "variant": { - "variants": [ - { - "index": 0, - "name": "InsufficientBalance" - }, - { - "index": 1, - "name": "InsufficientAllowance" - } - ] - } - }, - "path": [ - "erc20", - "erc20", - "Error" - ] - } - }, - { - "id": 20, - "type": { - "def": { - "variant": { - "variants": [ - { - "index": 0, - "name": "None" - }, - { - "fields": [ - { - "type": 2 - } - ], - "index": 1, - "name": "Some" - } - ] - } - }, - "params": [ - { - "name": "T", - "type": 2 - } - ], - "path": [ - "Option" - ] - } - }, - { - "id": 21, - "type": { - "def": { - "composite": { - "fields": [ - { - "type": 3, - "typeName": "[u8; 32]" - } - ] - } - }, - "path": [ - "ink_primitives", - "types", - "Hash" - ] - } - }, - { - "id": 22, - "type": { - "def": { - "primitive": "u64" - } - } - }, - { - "id": 23, - "type": { - "def": { - "primitive": "u32" - } - } - }, - { - "id": 24, - "type": { - "def": { - "variant": {} - }, - "path": [ - "ink_env", - "types", - "NoChainExtension" - ] - } - } - ], - "version": "4" -} +{"source":{"hash":"0x656ec6137638ba8ad1477e96dfe91eb90ca625dfbe543057868ea521fd1b73fe","language":"ink! 5.0.0-rc.1","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001691160037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f0060047f7f7f7f017f60057f7f7f7f7f0060000060017f017f60027e7e0060037f7e7e0060037e7e7f0060047f7f7e7e006000017f60057f7f7f7f7f017f60047f7f7e7e017f02c7010a057365616c310b6765745f73746f726167650006057365616c3005696e7075740002057365616c300d6465706f7369745f6576656e740005057365616c320b7365745f73746f726167650006057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c300663616c6c65720002057365616c301176616c75655f7472616e736665727265640002057365616c300f686173685f626c616b65325f323536000303656e76066d656d6f7279020102100356550007030b0202030c0d0202030504040307040202000202020403020204070e01010203040903030102010f080a020a0208100408030502040802090100000101010402010107060506020501010300050101010205040501700116160608017f01418080040b0711020463616c6c0039066465706c6f79003c091b010041010b15555432302829485b492c2c282c4647444b2c57595a0aac7e552b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2200200120034d044020002001360204200020023602000f0b200120032004100b000b0e0020002001200241d49604105d0bb50102047f017e230041306b2203240020034100360220200342808001370228200341d2a60436022441e7b98fb102200341246a2204100d20002004100e20032003290224370218200341106a200341186a2205200328022c100f2003280214210020032802102106200329021821072003410036022c20032007370224200120022004101020032003290224370218200341086a2005200328022c100f200620002003280208200328020c10031a200341306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041018200241106a24000b0a0020012000412010180b4501017f2002200128020422034b044041e4a1044123419ca404102f000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101018200341106a24000bbb0102037f017e230041306b2204240020044100360220200442808001370228200441d2a60436022441b7c380e57e200441246a2205100d20002005100e20012005100e20042004290224370218200441106a200441186a2206200428022c100f2004280214210020042802102101200429021821072004410036022c20042007370224200220032005101020042004290224370218200441086a2006200428022c100f200120002004280208200428020c10031a200441306a24000bb20102037f017e230041d0006b22022400200241186a220420001013200229021821052002410036022c200220053702242001200241246a2203100e20022002290224370218200241106a2004200228022c100f2003200228021020022802141014200241086a200028020020002802042000280208220110152002410036024c200220022903083702442003200241c4006a100e20012001200228024c6a22014d101620002001360208200241d0006a24000b3f01027f200128020422032001280208220249044020022003418ca404102e000b200041003602082000200320026b3602042000200128020020026a3602000b8f0201077f230041d0006b22032400200341286a22044200370300200341206a22054200370300200341186a22064200370300200342003703100240200241214f0440200341c8006a22074200370300200341406b22084200370300200341386a220942003703002003420037033020012002200341306a1008200420072903003703002005200829030037030020062009290300370300200320032903303703100c010b200341086a2002200341106a412041ac8104100a2003280208200328020c2001200241bc810410190b20002003290310370000200041186a200341286a290300370000200041106a200341206a290300370000200041086a200341186a290300370000200341d0006a24000b2900200220034904402003200241fc8504102e000b2000200220036b3602042000200120036a3602000b150020004504404187a204412b418c8604102f000b0bbd0102047f017e230041d0006b22012400200141186a220220001013200129021821052001410036022c20012005370224200141003a0044200141246a2203200141c4006a22044101101820012001290224370218200141106a2002200128022c100f2003200128021020012802141014200141086a200028020020002802042000280208220210152001410036024c2001200129030837024420032004100e20022002200128024c6a22024d101620002002360208200141d0006a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741bca304105c0240200320044f0440200320054b0d01200420066a200320046b2001200241dca3041019200741eca304105c200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41073602002000410236020c200041889704360208200041073602242000200041206a3602102000200041046a36022820002000360220200041086a41cca3041031000b2003200541cca304100b000b7b002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41073602002000410336020c200041dc9804360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a20041031000b5c01027f230041206b22012400200141086a200028020020002802042000280208220210152001410036021c20012001290308370214200141146a410c101b20022002200128021c6a22024d101620002002360208200141206a24000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41073602002000410236020c200041d89004360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a41fca3041031000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101d45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f20002802042203200249220445044020012002200028020022012002418ca60410192000200320026b3602042000200120026a3602000b20040b5502027f017e230041206b22022400200241086a2001101f200241186a29030021042002280208210320002002290310370308200041106a200437030020002003200128020472410047ad370300200241206a24000b5f02017f037e230041106b2202240020024200370308200242003703000240200120024110101d45044020022903082104200229030021050c010b420121030b2000200537030820002003370300200041106a2004370300200241106a24000ba90102017f027e230041406a220224002002411f6a2001101c0240024020022d001f0d0020022001101f2002290300a70d00200241106a2903002103200229030821042000200229002037000820004200370300200041286a2004370300200041306a2003370300200041206a200241386a290000370000200041186a200241306a290000370000200041106a200241286a2900003700000c010b200042013703000b200241406b24000be90202077f017e230041406a22012400200142808001370228200141d2a604360224200141246a101a200141186a2001412c6a28020036020020012001290224370310200141306a200141106a41bd87041022200041316a2105024020002d00100440200141306a200041116a10120c010b200141306a10170b200041106a2106200141186a200141386a28020036020020012001290230370310024020052d00000440200141106a200041326a10120c010b200141106a10170b200141386a2202200141186a220328020036020020012001290310370330200141106a2204200141306a2207102320022003280200360200200120012902102208370330200141206a2802002102200128021c210320014100360218200120083702102006200410242005200410242000290300200041086a2903002004101020012001290210370330200141086a20072001280218100f200320022001280208200128020c1002200141406b24000bda0102037f017e230041d0006b22032400024020020440200341186a220520011013200329021821062003410036022c200320063702242002200341246a2204100e20032003290224370218200341106a2005200328022c100f2004200328021020032802141014200341086a200128020020012802042001280208220210152003410036024c200320032903083702442004200341c4006a100e20022002200328024c6a22024d1016200120023602080c010b200110170b20002001290200370200200041086a200141086a280200360200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200100f20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b210020002d000045044020014100101b0f0b20014101101b200041016a2001100e0bb20101027f230041306b2201240020014180800136020441d2a604200141046a2202100620014180800136022c200141d2a6043602282002200141286a101c20012d00040440200141103a000441e7840441c100200141046a41d0820441a885041026000b2000200141066a290000370001200041096a2001410e6a290000370000200041116a200141166a290000370000200041186a2001411d6a290000370000200020012d00053a0000200141306a24000b7c01017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a42023702002005413c6a41013602002005410236021c200541ec9004360218200541023602342005200541306a3602202005200541106a3602382005200541086a360230200541186a20041031000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10072000290308210120002903002102200041206a2400410541042001200284501b0b1b00200128021441d489044105200141186a28020028020c1100000b3400200128021420002802002d0000410274220041c088046a2802002000418088046a280200200141186a28020028020c1100000bff0202057f027e230041d0006b220224002002410036023020024280800137023c200241d2a60436023841e7b98fb102200241386a2204100d20012004100e20022002290238370228200241206a200241286a2002280240100f2002280224210320022802202105200228022821012002200228022c2206360238200520032001200410002103200241186a20022802382001200641c08204100a027e024002400240024020030e0400010103010b200228021821012002200228021c36023c200220013602382002200241386a101e2002290300a70d0120022903082107200241106a2903000c030b200241c4006a42003702002002410136023c200241e48504360238200241e4a104360240200241386a41ec85041031000b200241103a0037200241c4006a42013702002002410136023c2002419481043602382002410336022c2002200241286a3602402002200241376a360228200241386a419c81041031000b42000b21082000200737030020002008370308200241d0006a24000b850302047f027e230041d0006b220324002003410036023020034280800137023c200341d2a60436023841b7c380e57e200341386a2204100d20012004100e20022004100e20032003290238370228200341206a200341286a2003280240100f2003280224210220032802202105200328022821012003200328022c2206360238200520022001200410002102200341186a20032802382001200641c08204100a027e024002400240024020020e0400010103010b200328021821012003200328021c36023c200320013602382003200341386a101e2003290300a70d0120032903082107200341106a2903000c030b200341c4006a42003702002003410136023c200341e48504360238200341e4a104360240200341386a41ec85041031000b200341103a0037200341c4006a42013702002003410136023c2003419481043602382003410336022c2003200341286a3602402003200341376a360228200341386a419c81041031000b42000b21082000200737030020002008370308200341d0006a24000b0300010b1b002000418180014f044020004180800141b88504100b000b20000b0e0020002001200241b49604105d0b4601017f230041206b220324002003410c6a420037020020034101360204200341e4a1043602082003200136021c200320003602182003200341186a360200200320021031000b840101017f230041306b22022400200241146a42013702002002410136020c200241b09f0436020820024102360224200220002d00004102742200419ca6046a28020036022c2002200041b0a6046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10452100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241889004360210200241e4a10436020c2002410c6a104a000b8f0101027f230041106b22022400027f024002400240410220002d000041106b41ff01712203200341024f1b41016b0e020102000b20022000360208200141e082044106200241086a410510330c020b200128021441e68204410e200141186a28020028020c1100000c010b2002200036020c200141f48204410b2002410c6a410610330b2100200241106a240020000ba20201047f230041406a220524004101210702402000280214220620012002200041186a280200220228020c22011100000d000240200028021c22084104714504402006419a9104410120011100000d022003200020041101000d0220002802142106200028021828020c21010c010b2006419b9104410220011100000d01200541013a001b200541346a41fc9004360200200520023602102005200636020c20052008360238200520002d00203a003c2005200028021036022c200520002902083702242005200029020037021c20052005411b6a36021420052005410c6a36023020032005411c6a20041101000d012005280230419891044102200528023428020c1100000d010b200641ec8f044101200111000021070b200541406b240020070b3c01027f230041106b22002400200042808001370208200041d2a604360204200041046a22014101101b20014101101b4101200028020c102d1038000b3e01027f230041106b22022400200242808001370208200241d2a604360204200241046a22034100101b20002001200310104100200228020c102d1038000b5101027f230041106b22022400200242808001370208200241d2a604360204200241046a22034100101b2003200141ff0171410247047f20034101101b20010541000b101b2000200228020c102d1038000bab0102057f017e230041306b2202240020024100360220200242808001370228200241d2a6043602244100200241246a2203100d20022002290224370218200241106a200241186a2204200228022c100f2002280214210520022802102106200229021821072002410036022c20022007370224200020012003101020022002290224370218200241086a2004200228022c100f200620052002280208200228020c10031a200241306a24000b0d00200041d2a60420011005000b8a1602087f047e230041a0056b22002400024002400240102741ff017141054604402000418080013602c80441d2a604200041c8046a2201100120004180016a20002802c80441d2a6044180800141c08204100a20002000290380013702bc04200041003602c804200041bc046a20014104101d0d0220002d00cb04210220002d00ca04210320002d00c9042101027f02400240024002400240024020002d00c8042204410b6b0e050509090901000b0240200441e8006b0e03040902000b2004418401460d02200441db0147200141ff017141e3004772200341f50047200241a8014772720d0841000c050b200141ff017141f50047200341da004772200241d60047720d07200041c8046a200041bc046a101c20002d00c8040d07200041f0016a200041d2046a290000370300200041f8016a200041da046a290000370300200041ff016a200041e1046a2900003700002000200041ca046a2900003703e80120002d00c904210141010c040b200141ff0171200341164772200241de0047720d06200041a8026a200041bc046a101c20002d00a8020d0620004188016a200041bc046a101c20002d0088010d06200041ff046a200041a1016a290000370000200041f7046a20004199016a290000370000200041ef046a20004191016a290000370000200041d0046a200041b2026a290000370300200041d8046a200041ba026a290000370300200041df046a200041c1026a29000037000020002000290089013700e7042000200041aa026a2900003703c80420002d00a9022101200041e8016a200041c8046a413f10091a41020c030b200141ff017141a10147200341dd004772200241a10147720d05200041c8046a200041bc046a102020002903c8044200520d05200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41030c020b200141ff0171411247200341e6004772200241a00147720d04200041c8046a200041bc046a102020002903c8044200520d04200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41040c010b200141ff0171413947200341ef0047722002411847720d03200041f0036a200041bc046a101c20002d00f0030d0320004198046a200041bc046a101c20002d0098040d03200041e8006a200041bc046a101f2000290368a70d03200041f8006a290300210820002903702109200041c8036a200041f1036a220141186a290000370300200041c0036a200141106a290000370300200041b8036a200141086a290000370300200041d8036a200041a1046a290000370300200041e0036a200041a9046a290000370300200041e8036a200041b1046a29000037030020002000290099043703d003200020012900003703b003200041f0026a2202200041b0036a41c00010091a200041ae026a2000418e016a200041ce046a200241c000100941c000100941c00010091a200041e8016a200041a8026a413f10091a2000200041ea026a2800003600e301200020002800e7023602e00141050b210220004188016a410272200041e8016a413f10091a200041cc016a20002800e301360000200041d8016a2008370300200020002802e0013600c901200020093703d001200020013a008901200020023a008801200041003602b0022000428080013702cc04200041d2a6043602c8044100200041c8046a2203100d200020002902c8043702a802200041e0006a200041a8026a20002802d004100f200028026421042000280260210520002802a8022101200020002802ac0222063602c804200520042001200310002103200041d8006a20002802c8042001200641c08204100a02400240024020030e0400040401040b200028025821012000200028025c3602cc04200020013602c804200041406b200041c8046a101f2000290340a745044020002802cc04450d020b200041d4046a4200370200200041013602cc04200041a487043602c8040c050b200041d4046a4200370200200041013602cc04200041f486043602c8040c040b20004188016a4101722101200041d0006a290300210820002000290348220937039804200020083703a00402400240024002400240024002400240200241016b0e050001040502030b230041406a22022400200241286a200141086a290000370200200241306a200141106a290000370200200241386a200141186a290000370200200220004198046a36021c20022001290000370220200241086a200241206a102a20022903082108200041086a2201200241106a29030037030820012008370300200241406b24002000290308200041106a2903001035000b230041e0006b22022400200220004198046a36021c200241086a200241206a200141c0001009200241406b102b20022903082108200041186a2201200241106a29030037030820012008370300200241e0006a24002000290318200041206a2903001035000b200041d0046a20004190016a41d00010092101200020004198046a3602c80420004190056a290300210920004198056a2903002108200041a8026a22021025200041306a20012002102b41012103410121022000290330220b2009542204200041386a290300220a2008542008200a511b0d04410221022001200041f0046a20092008103a41ff017122054102460d03200541004721020c040b200920081035000b200041d0046a20004190016a413010092101200020004198046a3602c804200041f8046a2903002108200041f0046a2903002109200041a8026a220210252002200120092008103a220141ff0171410246047f200029039804200041a0046a290300103741000541010b20011036000b200041b8036a20004190016a413010092101200020004198046a3602b003200041e0036a2903002108200041d8036a2903002109200041f0026a2202102520022001200920081011200041c0026a20004188036a290000370300200041b8026a20004180036a290000370300200041b0026a200041f8026a290000370300200041d0026a20004198016a290300370300200041d8026a200041a0016a290300370300200041e0026a200041a8016a290300370300200020002900f0023703a80220002000290390013703c802200041c8046a2204200041a8026a41c00010091a20004190056a2206200837030020002009370388052000428080013702c004200041d2a6043602bc04200041bc046a101a200041f0016a2202200041c4046a280200360200200020002902bc043703e801200041f0036a2203200041e8016a220141de870410222003200410122002200041f8036a2205280200360200200020002902f0033703e8012001200041e8046a2207101220052002280200360200200020002903e8013703f00320012003102320052002280200360200200020002902e80122083703f003200041f8016a280200210220002802f4012105200041003602f001200020083702e80120042001100e20072001100e200029038805200629030020011010200020002902e8013703f003200041286a200320002802f001100f200520022000280228200028022c1002200029039804200041a0046a2903001037410041021036000b2001200041a8026a200b20097d200a20087d2004ad7d1011200029039804200041a0046a2903001037410021030b200320021036000b200041043a00c804200041c8046a103b000b200041d4046a4200370200200041013602cc04200041e485043602c804200041e4a1043602d004200041c8046a41ec85041031000b1034000b200041e4a1043602d004200041c8046a41cc86041031000bd40202037f037e23004180016b22042400200441186a2000102a0240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d100c200441086a2001102a2004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b4101460d01200120092008100c200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1021410221050b20044180016a240020050f0b4187a204412b41ac8704102f000b4801017f230041206b220124002001410c6a420137020020014101360204200141b09f043602002001410436021c200120003602182001200141186a360208200141cc86041031000bf40402087f037e230041c0016b2200240002401027220141ff0171410546044020004180800136025041d2a604200041d0006a22011001200041286a200028025041d2a6044180800141c08204100a200020002903283702502000410036023002402001200041306a4104101d0d0020002d0030419b01470d0020002d003141ae01470d0020002d0032419d01470d0020002d003341de00470d00200041106a200041d0006a101f2000290310a7450d020b1034000b200020013a0050200041d0006a103b000b200041206a290300210820002903182109200041306a1025200041ec006a200041c8006a2202290000370200200041e4006a200041406b2203290000370200200041dc006a200041386a220429000037020020002000290030370254200041f08004360250200041003602b0012000428080013702b801200041d2a6043602b40141e7b98fb102200041b4016a2201100d200041d4006a2001100e200020002902b4013702a801200041086a200041a8016a220520002802bc01100f200028020c21062000280208210720002902a801210a200041003602bc012000200a3702b4012009200820011010200020002902b4013702a8012000200520002802bc01100f200720062000280200200028020410031a2000419a016a200229000037010020004192016a20032900003701002000418a016a200429000037010020004182016a20002900303701002000200837035820002009370350200041013a008101200041003a0060200041d0006a1021200920081037230041106b22002400200042808001370208200041d2a604360204200041046a22014100101b20014100101b4100200028020c102d1038000b7701027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002103e2004280208200428020c103f200028020821030b200028020020036a2001200210091a2003200220036a22014b044041808904411c418c8f04102f000b20002001360208200441106a24000bc00301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003104220022802082105200228020c0c020b200528020021080240200310432205450440410021050c010b20052008200710091a0b20030c010b2002200310422002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41a08904412141e88a04102f000b1f00024020004181808080784704402000450d0120011040000b0f0b1041000b860101017f230041306b220124002001200036020c2001411c6a420137020020014102360214200141b88c043602102001410736022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c200041c88c043602182000200141106a360214200041889004360210200041e4a10436020c2000410c6a104a000b3c01017f230041206b22002400200041146a42003702002000410136020c2000418c8b04360208200041e4a104360210200041086a41948b041031000b2001017f41d2a6052d00001a20011043210220002001360204200020023602000be70101027f024002400240027f41c4a6042d0000044041c8a6042802000c010b3f002202418080044f0d0141c8a60441e0a60536020041c4a60441013a000041cca604200241107436020041e0a6050b2101027f4100200020016a22022001490d001a41cca6042802002002490440200041ffff036a220241107640002201417f460d042001418080044f0d032001411074220120024180807c716a22022001490d0441cca60420023602004100200020016a22022001490d011a0b41c8a604200236020020010b0f0b41b0a1044121419ca104102f000b41b0a104412141d4a104102f000b41000b0c00200041dc8904200110450bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10562003200329031037021c200341086a20062001105620032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0c00200020012002103d41000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101103e2004280208200428020c103f200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b103d0b200241106a240041000f0b41808904411c41fc8e04102f000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e2206410174418d92046a2f00003b0000200241026b2006419c7f6c20046a41ffff0371410174418d92046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff0371410174418d92046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a2002410174418d92046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041e4a1042104200241e4a10441e4a104104c20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004104f0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004104f0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004104f0d03200341106a2001200920026b4101105020032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10510d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101105020032802082205418080c400460d02200328020c2109200128021422022001280218220120072004104f0d02200220082006200128020c1100000d022005200920022001105121000c020b0c020b41d08f04411c41c89404102f000b200341406b240020000f0b41a08f04412141a09f04102f000b0e0020002802001a03400c000b000bc20201047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141b4a2043602102001410836022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441b8a2046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000104220012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10440d032001280230210020012802382103024041d0a6042d000045044041d1a6042d00004101710d010b200020031004410947044041d0a60441013a00000b41d1a60441013a00000b000b41808904411c41909f04102f000b1041000b20001040000b41d88c0441332001413f6a41c4890441f88d041026000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200104d22042006200120006b2200417c716a2000410371104d6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b418c9804104e200228020c21052002280208210620022002280200200228020422002000417c7141f89904104e200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41d08f04411c41b89a04102f000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441d08f04411c41989a04102f000b41d08f04411c41889a04102f000b41d08f04411c41a89a04102f000b41d08f04411c41e89904102f000b20002001104d21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41d08f04411c41909f04102f000b3d002002200349044041e4a10441232004102f000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41d08f04411c41d89404102f000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41d08f04411c41bc9b04102f000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41a08f04412141d09c04102f000bca0301067f230041306b22022400200028020421042000280200210302400240027f024020012802002205200128020822007204402000450d032001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1052200228021c418080c400470d010c050b0b200241106a200241246a10522002280214418080c400460d03024020022802102200450d00200020044f044020002004460d010c030b200020036a2c00004140480d020b200241086a4100200020031053200228020c210620022802080c020b200128021420032004200141186a28020028020c11000021000c030b41000b21002006200420001b21042000200320001b21030b2005450440200128021420032004200141186a28020028020c11000021000c010b200128020422002003200320046a104c22054b044020022001200020056b410010504101210020022802002205418080c400460d01200228020421062001280214220720032004200141186a280200220128020c1100000d012005200620072001105121000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044109470d0120012802000b2802002104410121030b20002004360204200020033602000bd40701107f230041d0006b22032400200341003b014c200320023602482003410036024420034281808080a00137023c2003200236023820034100360234200320023602302003200136022c2003410a3602282000280204210c2000280200210d2000280208210e200341406b210f027f0340024020032d004d450440200328022c210a02400240024002402003280238220b200328023022104b0d0020032802342202200b4b0d00200328023c2204450d012004200f6a41016b21110340200a200222076a210020112d0000210602400240024002400240027f02400240200b20026b220541084f0440024002402000200041036a417c712202460440200541086b2108410021020c010b200341206a20062000200220006b2202105820032802204101460d012002200541086b22084b0d030b200641818284086c21090340200020026a220141046a2802002009732212417f73201241818284086b7120012802002009732201417f73200141818284086b7172418081828478710d03200241086a220220084d0d000b0c020b200328022421010c020b200341106a20062000200510582003280214210120032802100c020b200220054b0d02200341186a2006200020026a200520026b1058410020032802184101470d011a2002200328021c6a22012002490d030b41010b22004101460440200141016a2202450d0302402007200220076a22024d04402003200236023420022004490d07200220104d0d010c070b41d08f04411c41f49d04102f000b200441054f0d04027f200a200220046b6a2106200f210720042105034041002005450d011a200541016b210520072d0000210820062d00002109200641016a2106200741016a210720082009460d000b200920086b0b0d05200341086a20032802442002200a105320032002360244200328020c2100200328020821020c0a0b2003200b3602340c060b41a08f04412141e09504102f000b41d08f04411c41f09504102f000b41d08f04411c41e49d04102f000b2004410441849e04100b000b2002200b4d0d000b0b200341013a004d20032d004c044020032802482101200328024421040c020b20032802482201200328024422044f04404100210220012004470d020c030b41a08f04412141cc9b04102f000b41a08f04412141d49d04102f000b200320042001200a105320032802042100200328020021020b20020d010b41000c020b0240200e2d00000440200d419491044104200c28020c1100000d010b200e2000047f200020026a41016b2d0000410a460541000b22013a0000200d20022000200c28020c110000450d010b0b41010b2100200341d0006a240020000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4e01027f20002802042102200028020021030240200028020822002d0000450d002003419491044104200228020c110000450d0041010f0b20002001410a463a00002003200120022802101101000b0c00200041fc9004200110450beb0201057f230041406a22022400200028020021054101210002402001280214220441989004410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4107360200200241346a410736020020024103360214200241f08f0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10450d00200528020822030440200441a49004410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a104521000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441a49004410220011100000d00200420032802002003280204200111000021000b200241406b240020000b130020004504404187a204412b2001102f000b0b6901017f230041306b220424002004200136020420042000360200200441146a42023702002004412c6a41073602002004410236020c20042003360208200441073602242004200441206a3602102004200441046a36022820042004360220200441086a20021031000b0bc5260200418080040bc10f2f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f73746f726167652d352e302e302d72632e312f7372632f6c617a792f6d617070696e672e7273e7dc23264661696c656420746f206765742076616c756520696e204d617070696e673a2074000100200000000000010070000000c4000000250000002c1201007500000091000000200000002c1201007500000091000000300000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b2d70616c6c65742d636f6e7472616374732d756170692d362e302e302f7372632f686f73742e7273000000cc000100710000002d000000170000000a0000000100000001000000030000004465636f6465427566666572546f6f536d616c6c52657475726e4572726f725375636365737343616c6c65655472617070656443616c6c656552657665727465644b65794e6f74466f756e645f42656c6f7753756273697374656e63655468726573686f6c645472616e736665724661696c65645f456e646f776d656e74546f6f4c6f77436f64654e6f74466f756e644e6f7443616c6c61626c654c6f6767696e6744697361626c656443616c6c52756e74696d654661696c656445636473615265636f766572794661696c6564537232353531395665726966794661696c656458636d457865637574696f6e4661696c656458636d53656e644661696c6564556e6b6e6f776e54686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e2c12010075000000800100000e0000002c120100750000001801000032000000656e636f756e746572656420756e6578706563746564206572726f72c80201001c0000002c12010075000000e1000000170000004411010076000000c40000003d0000004411010076000000c70000003b0000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f65726332302f6c69622e727300001c0301002e000000070000000500000073746f7261676520656e7472792077617320656d707479005c03010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279007c030100270000001c0301002e000000d30000003d00000001b5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb011a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d0000070000000d0000000e0000000b0000001a0000000e000000100000000c0000000b0000000f000000110000001300000013000000120000000d000000070000007f0101008601010093010100a1010100ac010100c6010100d4010100e4010100f0010100fb0101000a0201001b0201002e020100410201005302010060020100617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000c0000004572726f720000000d0000000c000000040000000e0000000f000000100000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e7273000000f404010071000000980100001c0000006361706163697479206f766572666c6f770000007805010011000000f40401007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000001306010015000000280601000d000000a40501006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72738b0601006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000000807010071000000610700000d0000000807010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041d08f040bf316617474656d707420746f206164642077697468206f766572666c6f77293a0000e410010000000000ed07010001000000ed070100010000000b00000000000000010000001100000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320260801002000000046080100120000003a200000e4100100000000006808010002000000120000000c00000004000000130000001400000015000000202020202c0a28280a2f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000d509010070000000050500000d000000d50901007000000097050000300000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000680a010075000000760000004b000000680a010075000000770000003400000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820000b010012000000120b01002200000072616e676520656e6420696e64657820440b010010000000120b010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000640b0100160000007a0b01000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300980b010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820281c0c010015000000310c01002b000000ec070100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000740c0100720000004700000015000000740c0100720000004f00000032000000740c0100720000005a00000009000000740c010072000000660000000d000000740c0100720000006400000011000000740c01007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000480d0100710000009100000011000000480d0100710000004f0200002d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e727300dc0d010073000000d3000000130000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273600e010074000000a101000047000000600e010074000000b401000020000000600e010074000000b401000011000000600e010074000000b8010000370000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000140f01007a00000095000000010000009d08010070000000d201000005000000e410010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167652f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f616c6c6f6361746f722d352e302e302d72632e312f7372632f62756d702e72730000301001006a000000870000001100000000000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000301001006a0000009400000016000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00e41001000000000032110100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000044110100760000005c0000003b00000044110100760000005c0000001400000044110100760000005d0000000e00000044110100760000005e000000340000004411010076000000680000000900000044110100760000008600000025000000441101007600000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72732f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e7273a11201006b000000770000000e000000190000001c000000160000001400000019000000b80f0100d10f0100ed0f010003100100171001","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"erc20","version":"5.0.0-rc.1","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"total_supply","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":["Creates a new ERC-20 contract with the specified initial supply."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":14},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":2},"balance":{"displayName":["Balance"],"type":0},"blockNumber":{"displayName":["BlockNumber"],"type":23},"chainExtension":{"displayName":["ChainExtension"],"type":24},"hash":{"displayName":["Hash"],"type":21},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":22}},"events":[{"args":[{"docs":[],"indexed":true,"label":"from","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":true,"label":"to","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when a token transfer occurs."],"label":"Transfer","module_path":"erc20::erc20","signature_topic":"0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb"},{"args":[{"docs":[],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":true,"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when an approval occurs that `spender` is allowed to withdraw","up to the amount of `value` tokens from `owner`."],"label":"Approval","module_path":"erc20::erc20","signature_topic":"0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d"}],"lang_error":{"displayName":["ink","LangError"],"type":15},"messages":[{"args":[],"default":false,"docs":[" Returns the total token supply."],"label":"total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0xdb6375a8"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the account balance for the specified `owner`.",""," Returns `0` if the account is non-existent."],"label":"balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x0f755a56"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"label":"spender","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the amount which `spender` is still allowed to withdraw from `owner`.",""," Returns `0` if no allowance has been set."],"label":"allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x6a00165e"},{"args":[{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` amount of tokens from the caller's account to account `to`.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the caller's account balance."],"label":"transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x84a15da1"},{"args":[{"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Allows `spender` to withdraw from the caller's account multiple times, up to"," the `value` amount.",""," If this function is called again it overwrites the current allowance with"," `value`.",""," An `Approval` event is emitted."],"label":"approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x681266a0"},{"args":[{"label":"from","type":{"displayName":["AccountId"],"type":2}},{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` tokens on the behalf of `from` to the account `to`.",""," This can be used to allow a contract to transfer tokens on ones behalf and/or"," to charge fees in sub-currencies, for example.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientAllowance` error if there are not enough tokens allowed"," for the caller to withdraw from `from`.",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the account balance of `from`."],"label":"transfer_from","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x0b396f18"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"total_supply"},{"layout":{"root":{"layout":{"leaf":{"key":"0xe7dc2326","ty":0}},"root_key":"0xe7dc2326","ty":1}},"name":"balances"},{"layout":{"root":{"layout":{"leaf":{"key":"0xb721a0ec","ty":0}},"root_key":"0xb721a0ec","ty":9}},"name":"allowances"}],"name":"Erc20"}},"root_key":"0x00000000","ty":13}},"types":[{"id":0,"type":{"def":{"primitive":"u128"}}},{"id":1,"type":{"def":{"composite":{}},"params":[{"name":"K","type":2},{"name":"V","type":0},{"name":"KeyType","type":5}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":2,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":3,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":7}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":6,"type":{"def":{"composite":{}},"path":["ink_storage_traits","impls","AutoKey"]}},{"id":7,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":8,"type":{"def":{"tuple":[]}}},{"id":9,"type":{"def":{"composite":{}},"params":[{"name":"K","type":10},{"name":"V","type":0},{"name":"KeyType","type":11}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":10,"type":{"def":{"tuple":[2,2]}}},{"id":11,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":12}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":12,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"total_supply","type":0,"typeName":",>>::Type"},{"name":"balances","type":1,"typeName":" as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type"},{"name":"allowances","type":9,"typeName":" as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type"}]}},"path":["erc20","erc20","Erc20"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":15}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":15}],"path":["Result"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":15}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":19}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":19}],"path":["Result"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"index":0,"name":"InsufficientBalance"},{"index":1,"name":"InsufficientAllowance"}]}},"path":["erc20","erc20","Error"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":22,"type":{"def":{"primitive":"u64"}}},{"id":23,"type":{"def":{"primitive":"u32"}}},{"id":24,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"5"} diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.json b/packages/api-contract/src/test/contracts/ink/v5/erc20.json new file mode 100644 index 000000000000..c995eaaf8b29 --- /dev/null +++ b/packages/api-contract/src/test/contracts/ink/v5/erc20.json @@ -0,0 +1,1024 @@ +{ + "source": { + "hash": "0x656ec6137638ba8ad1477e96dfe91eb90ca625dfbe543057868ea521fd1b73fe", + "language": "ink! 5.0.0-rc.1", + "compiler": "rustc 1.75.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.2.0", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "erc20", + "version": "5.0.0-rc.1", + "authors": [ + "Parity Technologies " + ] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "total_supply", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + "Creates a new ERC-20 contract with the specified initial supply." + ], + "label": "new", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 14 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 2 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 0 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 23 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 24 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 21 + }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 22 + } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": [ + "Option" + ], + "type": 20 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": [ + "Option" + ], + "type": 20 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when a token transfer occurs." + ], + "label": "Transfer", + "module_path": "erc20::erc20", + "signature_topic": "0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval", + "module_path": "erc20::erc20", + "signature_topic": "0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d" + } + ], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 15 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [ + " Returns the total token supply." + ], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0xdb6375a8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0x0f755a56" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0x6a00165e" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x84a15da1" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x681266a0" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "to", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xe7dc2326", + "ty": 0 + } + }, + "root_key": "0xe7dc2326", + "ty": 1 + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xb721a0ec", + "ty": 0 + } + }, + "root_key": "0xb721a0ec", + "ty": 9 + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000", + "ty": 13 + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 2 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 5 + } + ], + "path": [ + "ink_storage", + "lazy", + "mapping", + "Mapping" + ] + } + }, + { + "id": 2, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 3, + "type": { + "def": { + "array": { + "len": 32, + "type": 4 + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 7 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ResolverKey" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": {} + }, + "path": [ + "ink_storage_traits", + "impls", + "AutoKey" + ] + } + }, + { + "id": 7, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ManualKey" + ] + } + }, + { + "id": 8, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 9, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 10 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 11 + } + ], + "path": [ + "ink_storage", + "lazy", + "mapping", + "Mapping" + ] + } + }, + { + "id": 10, + "type": { + "def": { + "tuple": [ + 2, + 2 + ] + } + } + }, + { + "id": 11, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 12 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ResolverKey" + ] + } + }, + { + "id": 12, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ManualKey" + ] + } + }, + { + "id": 13, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "total_supply", + "type": 0, + "typeName": ",>>::Type" + }, + { + "name": "balances", + "type": 1, + "typeName": " as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type" + }, + { + "name": "allowances", + "type": 9, + "typeName": " as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type" + } + ] + } + }, + "path": [ + "erc20", + "erc20", + "Erc20" + ] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 18 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 18 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 19 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 19 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": [ + "erc20", + "erc20", + "Error" + ] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 2 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 21, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 22, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 23, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 24, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } + } + ], + "version": "5" +} diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.wasm b/packages/api-contract/src/test/contracts/ink/v5/erc20.wasm new file mode 100644 index 0000000000000000000000000000000000000000..0ad59dc4371c938e94aa1f798970dd90464308e0 GIT binary patch literal 21581 zcmchf3zS{edEd|L&fJ+hBOS1eWh94luVok+jpqH33}%k32L!}ZI8N$R8qHiu^U%!b z&Wu0~MuQjF*d_)$PA%KG0qO;~wX?7nPH9VOk&;-pX_jo$l;u)~)FjZ9tf(zX=nAX! z_y6`eckT#ink*M--Fwd7XFtCEJ^tUfzq99hqw|M-&-46=bM}SDk01As?+fy8&uYAV z{&8<##IyWDn}UjzJv~*QTW?is`@Z#7*H8to-j*B2xb;^5c<^1nwJ={Do$e_etS;=G zUzn|p9;|vzR@Ysan3-E#@B&wAAFs~M&QC1ttsbq;EO-U0?Jdo}z8@|3FCN@`xH>FH`MpW>XOqtlDky$iL`nfU|NTCF;sKUsZfbpFuZ z{nMjU)!x0m1A|@|R%ebj9j+dptsM*eAPzrxqt_gkf*@>b=c^D!VRIA&UJwLP$ftRg z?+0Pj5{7=@uP(L*twAx4ieVv$ia`r(_kBMKe80J=&=eGWKlJ$WgF;mB=lt`|YbwIq zbZIFnHJ=kiqT1Wi1Vg50k9n80tn8!!JyS8UqUv1#Y7?N@I4rCt0>HVg%8c@R(XwRW;nNWzX_Q@mQ2HDyNZ z2;y>+8m=uj(}eLi(Xn|b*dRg}Ctfj5aWbh7(ZoFTFY2o;4$r51_v8kzbRkTE=6I?S zKy#2VW}B_5Z8DAGwJa}IvsNwDOOtqQX$L)M=ywEBCA=~kNuR$zO5dH{`_(A!@*IDH zDY48~8?ORold#TlP>h71Ug^E{d5u?zKNLb+;thqO0v<58IKkZi29>FEHiF8?aW=|1 z8|9q+m;Y|*PjBThoGln<3vkv?^c^Kp#@|T%jl|!kBy#-aBK~rT%f1?lzc$MzIvRhW ziE-i;2dnkPz)(@~kAO;(!oh9gszVtzk7S!rqL)QyBiTlZuP z_mk$0p-ogsirHOL(vscD$ii;s!N%zU+f3Ca(?vRL(shdlU; z=;+rmsqw6ArkX658B(U3Jr6U6ZZw@16D5LI@5q>_*>moJLNbfDGszBY>Jtw{>BZ?? zA2*vS{casw#8Mv<@TEjpD@x=$CGwpTq3xzbDTub6X3``sh`kb}K1SuMgXxqnoial< zjFALmeMzVMH_)j7ow8Z3vO#j45_+Mi>WMxDPM-kFB8{Cs{n+;l04~ajvP)3`G1F2M zTI5C7RGQPr|5+4&82PJcj4E8&jx8ola5RagOd!wF=AB7%`jXm8F3hsJj;hMCtdlOnEl;*NZ+@tZ#S$g8*Gv9E{@|16~ z=8XH#-1GNXbNZ^|{-=lyvSpjEk_m(k2n3Hg!UPB`N0`7p_Jn89pTzINxU>{AP#+@S ziF(zo`5Z8|UTDF4xeP^yYTE(2tS zj!9IyF$kPPLxOH8NYIZjpr2t!*^s_i#vh8*SiTV-4Rvyl8WdxTYN@yD8|E(^O?w04 z8wDV_GuPrlb>l%`^x;;G0}NW!B&@GoU~$|0awwoH*i1=i)6^#vcUkk-h}n(@nqUOQ zQM8a=AhOp7Ba9w&dKa`)=hnf%52-{?%>ftOj8p-JLmunNL<5>;%L2jknG=919iH6i zWiSiu20X5p1zdt*doD2dwh=&Jpg}q^1*!iv2$~&-A=U6Qj}`nZR=^lGOvdMPVQfF$ zG>PD(w!VYM5F`{m!pQV@KM}rpNs={`afHlp!hf8gwv$P<;4+n1Q)b=qX$s@EYEpE2WArEdw6 zottycpDhIuwp5v>5$Y040@2ZzINkIrH)x-pEaREN|R{$ysiu&8Q zz`G(BeBT-_$Roz3Zpi#}A-!ZWHIG?Hd9sS;zm_Gf< zC}kncf}UUm=XhSJ-#s(nM~G>#Q1Q}}cSdT$P)pg}%1*BZLBS#E@}>aBbc5B%a45J0 z)i4hgm-;@+8h-jSFG%FG#V$dnOVm zo2fO}Z^Nh9jsxz?VkBBE?fE;9DZRCG91MU921#E+3l(C~cdIwVg^(3cZ|wK^+p>OW z&nBC^1G&?m)ws6N4fdi9twc8G^bP3=y3e$Z|*wVJ-%4oES7nT@38KB?i~e#8B^-i6Kl) z44T}DL3d6JHq!q^3^~4ro-gC_(%Y7N1^w8|lAk_?CJ@D4} z+Lk>B>NhbMJDWn>*B0P#gl~UFHTjZ8e3P>@YDfyDFY{amN@}Pn?km}96dAIb2LczH zJGf8%ax-=bMy?^r0xTd|1I-FZ(pK>S&UVi=SYIio(GmH+ru0jnjZ#0crx*n`8=d2O z?Q~`ww`E*Q_p&ddn$j=R8h&XkHoYmkk#$`9C(~EOG`Sq-T@qkVo~P*04_PK#y-TQI zSp2{y-E9nr926082Ug*D7-}6dl#?p3V1ctXf9r8DB8nM1g6{N$(ZFrLa|i84*-Lll z>nJyu=%hF)X-4Aa#F3eENe1;GltUV}t@7l~^V>JPke7)&<6*D#{(5Iq7w0FWq6Slh z^6DHae1LBtKpdwiTfO^r|L@%uETTSXu!}4yM$d?TA@xc&^74rPg0yTsE9X=grA?B| zg<%kmv<;%e(hy|iFpb89mbNO(Xk zE{1_GS~*!xXKp37BF1K-se)Jf)OkVic%+TYeFYPSGoSb(TX(_s^e&h>e8ADh+&2q$a0GhF)(E zeup;@Ui#a{iO<-e(42P1E&1pC`fQJclj)#l3k|SMs^@C5KXa4ar^%#q%R+6KOb`Ac zlSOWCD;3(J$^Oz!wwAfj;Pi~qUzgUI&}vT@PwTZOBCCDT%jJE6m~iMJt9`|@3;{T} zF`O&6h<+RMzlQ=t(jn~eO$SfvWsL&Myy7vdVB?xsJYya2Z_v``tmbPCH7{DtHIW_mx%39 zq^`kM?@q1)pGO$k`G}_^d2-m>3_&Ax`F3JNux49{DDuGqo`0z9Lo7ER9t=dC zVjfu+e$tUgA`E31dB}2g9kkiePKe^APe)n6$Hv%oO~3jHeEq3NIQNFnU;emzu9=O~ zeoeD0F|FNRQG{#^FR#GL6CwpJ-xoFFv5_ArhAMb|R0u+)o9p>60)FlJr8PtxayE4p zweqmaPKQ-yVoXD^DS?Z1O6Y_G3kV(K_qy#9G*MOYskHE2`xf7cKX9Q06swUvjR!nY z^qg0Jfmfd*9~cs(z>GIC6<@qO3BLD@CqWk!)NKscGK;<3&@9|LJiP}!J^(rI-c7h!QCA-Rj9E={FO(7WiIs#w8?48s#qHaZNPN1f; zNx&Tofb2E#MpKORK5HKjr5>RsU>^?}M}$FMDvq2rpJ52_lg|e><@24%7?RI-4kMg2 z4{#@qaxi<$YL*&m9m%PO7QliUm9Zd%+*EgTdyL**=LWn1rBcD16Z* z39Jh%06WpX4+YVS8u`7q411S8X?)x zmCu3~eWgQrY7q?MO6NL)mwf@6VDbzDvpO0I$jGda?c^J-u+S#BO3~g4ZKO#yk~aAo z<%|zVGNJA}^tFkkC_RNE4eFAz$v{=K0--C)`q2a(|7a3@8Z7x!l?c1ntMSB( z-y0Bh0s$3*={@K`Lzulc%l2G5vk@KM+nel%%fL2a}H&wRj)&P7@Ww^Uk^ z<~=bJO}~=g_N9dIwxhE57fk6KcKne1v{N?4B$`7H zo!Xiok;6r&40d^4BB$^YtVg|}JCJ;2`04XjH$tALUiGY1DGQocNkh7af<3f9vjiKn zB|XA=96~*&l^H@k>SuXWFMU+Fqv$7nS~8chGf?m-8@Gqm9_7VQX#_%a1dq$cxwg6V zgOX}Ae%LR!(hB}PPM4&0i0<+n%V3cY2R`JZH1pPlduHS9g|?<%`X$0TTQn-?rJti@ z>$TFSDA`i2^f5}dT$KdJAL0TWYt3-_Hc`$C|9xD<@v`}`A>x9+E7_oYfv>DV%E0w( z!ASsQzksD&ggMw0pd+gL#!8^)7G6powVw1)zyU zSJHIFI!kyJcXLgT&!-n0wH#C+lp^rOzO<9Uh-GkCwhRtSG-tC$ro4u?dyZquW@w3( zChg6WW=05YN?s%5o%AZDz+<{rnl*eNc7*XZOFg&@Mw|9%@?_;ABZTn>Dg|1m?rket z0rbHbfZiq8vd%o#7*Pp5D=;wW48cW{#@F!$HuN}$CI=!`O9~bZ&}2Xq95l>yHeSgz}3)1CI;z6IKX!w0xhR6 ze#!)T0a8N=ZIoTCz}q2Qk4L=H>Jk~L(#QRJ?$wY{z^ByW`Z_>Dg-$9wb{8hCm$0mx zS6bXCrRp$J>9`K3CLp3zU%692M16=^X{=X6YpBW+s6dKx+-=mj1nP43)r~+3IKv(k zL(T5`H0?nv*D>aXWa;NW?cPza27pDcanZ>51Bxo7$Ks8cSb9O}S=3kmkEc&Q7|{~x zpL!5h>MX%!9y+|V6kUTBQ<*;ZAaeH9P}c0FPl4qKYeAJfgZX9&Orqe*mnEnTgJBlp za{Ah9*cV-nj&S@SJ-(AffZhi(1ECQkRS+-bTaIJ{L~agE00Zme`sbHKkgX!|ky-i( zhx^Luz4x1Rv(nR9$t$&q`_F!o$>JTQS3|!^*30fFL@Xh>SaC&np)#&vnn;$Il6z^v zg`}!V8{B2RW137LuK3Qf+RV(nG+Yn_v(DED%`p$!X#2*6S9c*Mo-|oXEWvD*Nab-w zCd50FZo!iB!QAJ0S~d-`aQ3%CfHEAw?65wC31uISgi7@mNcHY$XPMYn06=I^UI8x9 zJ`yRHWt0?^uhc^hRX~d=eRMVvCax7kSfIzmmW4)6o!)xmlZaVsJVK8F0TC5{P%vlj zk9o5}h3fN4OI~N|5qi4yD4FVGrK|@afrBo#&X&e{^VNY9P|wjhVY@L5c(V4!IKBvh zmU+innCw6dBZqEF>YFNHr$KxvX8yy#52Xs(`w8qorh)Bc5=J-eg-;;q%l?<*E82Zs zrLts+xxMTNjcQvxoh~DSI+{MG67N7LH65)#ZYLiGBOwy+q)SBp)=eFug}JLDkG;}W zIhSMoR(LGE!e)1hx7wj>n)xStk=a0!64^$?Nh68;pIF$?fMoVcD(j2LSLKE{_h{OD zgguiMmPV!cQt6poVJc*GuJYB-nC<;hQ&6g(zL9-NHkIHT<#vM^K~46bA@2D@kN0Wm zMJPghd6iT$jjm{KVPTwiQmB=3qHfhTnk`k@x1ITBcx$rimWR-7aO4Q#*GvT`vylG! z=c36j&wC#%;a%7iKIY!z(+LSmYqqihGf3}NZF}vB|Je0GAd!ia0OLv8A7Z|rdApSY z=Y>?e-&QOcX<4l@3jx8cQ8%gP4Ri!=KBaio>RuZX95g8rz>68Bf>iHPMhcp{kSysjMJ%t?Up@`_e?7Yg>8 zPWSOuiT3zcLIbBbmzJL7_0KwcA#3ahw-`zXK2kq3Rlzz&4@`6LI2LLL#0WN}jv18A z@mrgy(jw9Ry*d)DK&57g%Su#tn``AoSh>v&B)603`5NM0Bc!!X2ycQF$dNyq!icUF z62u5pt5Oz*;utex9owA@gt1$!;v-* z&G@~b{vy-I$ow}AP#%3C3s88k_=W+B7Mh!6h(7T@094b*9x(5Oo8o{gY+#*b{JsJ$ z`5F`t!=iN>U%jqE*uWj(E=yxmzD>-)>UXpQdBp8<64dKxj4!9H^I^)eA+mV8IFI)$ zvkJ}@l*3>oJ#C?g6z_+2hc4@tB_Y}U+z$+_Qh1dF5Ai+5LW?yiYPH2{`|N8;VeBiT`5(Br5M<^?0Lxv+!xDuFq? zlf0zGKu`L-1HbD;6kjbb*M?KHpaG9O`!_~iDCcd~D9ljo)1IsS`=q&`dLuXE^2F5XcY;36FjnPOgwg(W(y zoPxpWy8%)+UE{Vz8vwQ9+`W@eC?OK+m$rDQ5P#WX@FP=TN?Kw&vAyxvZViLgPKF0z z3Mmfl-0{5J)D^}hcre}=@JCLbVmxJ&+dbqFA>kx26>%Yh;*1a_zyloxL_=NlBwN=r z8Fn$6g{owSkfg#oA-S3NnoQX=A;*vvL?J$Qo+4V>V9T)xM*yLSM!UmOFDws^hv*;w zBeHMj6Drv(Fy1ge>#yo5z~+k5Jpu83Fp_v|M$D%{1z03v7(iPgt%D$w@o5%xdR~R2 zHw)?7#nii+gpr=(7xi3E72?^VFE~Q{9HxKl%O0B2riCP`+23JV52b{&9sxa|r)i;P z&h(70%@2u{w2d0uN^1)8#I~I>8k^E{7ohfxcSKW$8lYJN)F93I8TLF{LJ@-o8m6>C zB32Sx;1`F9a9ZLTXfNO46z=gan{I8gHHm7|6m&{05daFc>}XEkYmL93ZI8O$n;J!` ztX{rH(9D1F)>vxtEmpjm1_tWUdD{k|{eduF#~~2n23?58?5_kQI}dSs(gS%7ovq-D zL(bO=uh!dY1u_NDM3&d^a81Sv=uq3ZBF#xyv%_PlhsD?|Og1@!JJJ~Jh}9~LZ%{Ag z$hZ`x<1Ay1XoK>G!;;SNb1csTpIQ1kt)FJxU?xhCym?1ZS9(@ado4P?s#4H)#r$GY zm?DRDZR(3dQp!ArK!#$o#ZhaNbzUZ^!f+O=$V)V#MJ{x3^SmMPT5@)HYYppW9z-oM zY9QY$-RL&`w(&PIgaK@XfIKOs9EYRFwpLmVE?0`iNF}KOmgWowa2J1@s-(1-0wxa~IbHusUlWSgxg917Hvepk}jC3fQ4d$*dlh$(GO_eh0m z56vlTc5>y_!h~QX2|K;rk_RE!rgE#Pr&SY3R6sPsib{MXI>KE)22;xJFL4kQC965d zJ5@d>9N}F@P-zx$p93D0oARN!I!3{qDdbf|)$|O7$lZUSgE%~yDsz&>U=bPW76%X0*q39yc^qW z&T;AGuQ;DalH!{72yX`W`Qs`5LBeVvlMF{V0tEy~OwLYb3SZJJxe!b1(gNcE63jst zUd<#eAiKR_ohlJnS-=j-+ZnbMvo~r`KUu#mtcaXiVU0rl{W+S*QR26F%+6%D)bT2(jh8znZ+E_wi7$tFqNpOUlAa{^vt8{vl9NsT zlmqLm^mI0zL4jL@tihAwXoJ5PR38FCw5#Ciehs;y&`p13DUmCkX8J)4*!JM5{5q>YFr zP^LF@hb1`cZ-0{)=+I_%$69pm^~~M2xsm}X*~?jR?uy)TL|%t-GY{B7eUK%FwMUR! zi{-kQjckzkmVOnI&;47>PH39PJq-+mVI*md$6& z!O#Zy%A6unoqXT+#NYg{7oYl#Z~ZX6gAo~ws^@?D-8=3%eaBBfddKb88joqaf*6X@ zThlxEYnyyI3Og+7mEHz}r5g5!ps=4vwlq=Cok#GWP7*wh0>LwO{wIbJf6V0A$-g6Y~qTV_oyLv95`k@#@W+$7-Vs)%nd6vz>zndWOb(d-v}j?HTCq z?m0k%sr-ixItMm)Z|?4_jcx9+zSE;0Io5S}bZ%~9=HTYq{0q;%`@)^06Vui4WMMYp z2N4qcJ%VInCfV&8ZA}(DAO7f{@6GZ3B%k;2*>tY&Epq)VpX97^H|3w(S~}M%3I;of&t98)v3wW^bC=bEukBtr>#P*_s?)oL@)| zjUKHgqltd+p;}9BnpikQ38k1APe#YaSocCQF}^vM{SwSw1z+>>TFSkYVTYPl`8|td zai)6nTy+fQCH%m}Z0%Iwd+Qte{0aAx)pkJeC|Bv%r48lpa!*$D_4;&hVnM3jS-pAm z@Z5BDzN=ar>+SBEp4e~7us-y?&Gc*LQ{a>R)JK9KYR8hBM(302;kkul-iK+Y`Js4v zJeiqYNakv@bJg1Pv1HuTC0WtayM^`_(LNvl$J~ov|J%QF{`)7(_fI{4X8X6_@q3^8 zgU?;jHUInH`SD--H-F>AcMrb&1ONPi7cTs(|NYue-uc<>f8FwH7e6rcwm-e%J3n~t zo|7kj;eG%9Z=ZUXqqUu}#M2U=^RxSyYg<;gnkxwAy)FBk%T;}}&f~uCeVos4@VTGQ z*ZKSbpQrge&*u!Ezva`44A$}4%qQh@1D}0-Mi&;u6oJ9$__!0l6z%|;&hU-T4=+wH zOw7R~(~*WoqFeuDccR%Wi>qiv5unA}-E#EzHhNj~yDFn3?aIUyxCB zj*iyG4h{BqVwjZ1M{74t%t+o{>Y=OPQTM8>je?h`@$8tZ9=&Pr(dwAPiI*dX6DJ^2 zx;QpEH##=4a4cz9$IS)b_?)*b2TqUPB6^K-sC7U1l2~z6W}VC)NRs`>0RQBGK{xcj zt;zS^&b5Q9`21C9pXK@h>r;6&IWSv0jC4Vm1Q4CTie)oGB{!)1l^SexbjF$KTeQpr zhXviAhVH}AIS!8#u5Z!g=tI}x*>R^6#b&1yqZpESmX}XcZlSDy4fZj=xZk|dS^BTA zyYxTLYiRg7L)u8>_k1k#@VviZQr+d(M&pr@&yCJZj7>=_3(3}2^Zd!|;(~NwznsuK z{uwZzuFfPA^QZ-nRCW!ixv=OPLw9l&P;5<>=RQOo{I>esFa;`W_(+)&{%vaQ=xF`_ zDvhz(TGb2`P3W3gJd7~9iDJ5YyZgHPy9c@lyN9}mySMao_w@Ai_Vo4i_YCw5_6+q5 z_iX9y?(OOA?d|LB?;YqJ>>cVI?%mSY-PhCC+t=6E-#5@V*f-QS+_$B_yT7Nux4*By zzki^Auz#q3xPQw)_dw4;??B%`|G>b&;K0zp@W7VA?!lhH-od`X{=tF4!NH-y;lV9K z-9tS?y+eIN{X+vogF{0@!$Vt!yN7#*dx!gm`-caH2Zx7-hljUpfy6CLzlEW<&}|D< zZyn$2O8g&MT##14<4KA0@)sz-aZvVi1lzhO=cgyes$C%0*rA#;u0yRZSd@dml22Zi zSLx?N#B{KVqaCe*Op0%lT+Q7R;486FrTJ+4LE;jx$)CIa zZgiVzURGr`LnkYEu)Cz08ExX#Zm*2Z9tn3}J> zV`DNtiw97+0(Y`VV9Ifovu7c<^V8Roo2Yg?#wSukjdumBA;XxPO^ z7?YQ;;a-7bUj7yC1-g0p0QZtdULNOO_?VaXWaYPRO}Vr@osY9k$7eGd^71u+YbSMY z9Zlxh=f&t}p-DRQV?M(4w~mH6xxU&AMC@DTdkf5cKMqdv&dZNdPR=SzmihC?cs@k= zt)W?R>~f6jVuxc62p_oG_dWs*zsU!3yszLZ=eYie0%lqF--|N}OcgKZdxh#WdmVh* ziXD*cx{~?q+3PyluMRHnKWf!cVHm$eI5(<&*9?28xzS@bQ}z>sujkD_G*OTRmb109 zQw94M56_v+b`z^ivgS|lk(~6eA-;LjjX>V-^RySHj?RCiJ5BG?95)"]},"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Creates a new flipper smart contract initialized with the given value."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Creates a new flipper smart contract initialized to `false`."],"label":"new_default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x61ef7e3e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":6},"balance":{"displayName":["Balance"],"type":9},"blockNumber":{"displayName":["BlockNumber"],"type":12},"chainExtension":{"displayName":["ChainExtension"],"type":13},"hash":{"displayName":["Hash"],"type":10},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":11}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":4},"messages":[{"args":[],"default":false,"docs":[" Flips the current value of the Flipper's boolean."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":2},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Returns the current value of the Flipper's boolean."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":5},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Flipper"}},"root_key":"0x00000000","ty":1}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"}]}},"path":["flipper","flipper","Flipper"]}},{"id":2,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":4}],"path":["Result"]}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":4}],"path":["Result"]}},{"id":6,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":7,"type":{"def":{"array":{"len":32,"type":8}}}},{"id":8,"type":{"def":{"primitive":"u8"}}},{"id":9,"type":{"def":{"primitive":"u128"}}},{"id":10,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":11,"type":{"def":{"primitive":"u64"}}},{"id":12,"type":{"def":{"primitive":"u32"}}},{"id":13,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file +{"source":{"hash":"0x536329645b973de35b88a083a0fb769b9a6778dd7daacf1f2069c966a26fcc25","language":"ink! 5.0.0-rc","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001400b60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f017f60000060017f017f60047f7f7f7f0060057f7f7f7f7f006000017f028a0107057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650001057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100333320302030a0703010207000602040302020604060308020304060207010004000101010104020101090508050902010103010204050170010e0e0608017f01418080040b0711020463616c6c0016066465706c6f7900180913010041010b0d0c33263628342327232425212a0ae93e322c01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b1a0b2601017f230041106b22022400200220003a000f20012002410f6a41011008200241106a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741e8990410370240200320044f0440200320054b0d01200420066a200320046b2001200241889a041031200741989a041037200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41033602002000410236020c200041fc8f04360208200041033602242000200041206a3602102000200041046a36022820002000360220200041086a41f89904100d000b2003200541f89904100b000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10012000290308210120002903002102200041206a2400410541042001200284501b0b1b002000418180014f044020004180800141f88104100b000b20000b6b01017f230041306b220324002003200136020420032000360200200341146a42023702002003412c6a41033602002003410236020c200341c88f04360208200341033602242003200341206a3602102003200341046a36022820032003360220200341086a2002100d000b840101017f230041306b22022400200241146a42013702002002410136020c200241dc950436020820024102360224200220002d0000410274220041c49b046a28020036022c2002200041d89b046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10222100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241d88a0436021020024194980436020c2002410c6a1029000b4701027f230041106b22012400200141003a000f20002001410f6a4101100f220045044020012d000f21020b200141106a240041024101410220024101461b410020021b20001b0b3d01027f2000280204220320024922044504402001200220002802002201200241b49b0410312000200320026b3602042000200120026a3602000b20040b3c01027f230041106b22002400200042808001370208200041f89b04360204200041046a2201410010152001410010154100200028020c100a1014000b4401027f230041106b22022400200242808001370208200241f89b04360204200241046a22032001047f20034101101541010541000b10152000200228020c100a1014000bb20102057f017e230041306b220124002001410036021c200142808001370228200141f89b0436022420014100360220200141246a2202200141206a4104100820012001290224370214200141086a200141146a2203200128022c1013200128020c210420012802082105200129021421062001410036022c200120063702242000200210072001200129022437021420012003200128022c1013200520042001280200200128020410041a200141306a24000b4501017f2002200128020422034b044041949804412341b89a04101c000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d00200041f89b0420011005000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41033602002000410236020c200041a88b04360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a41a89a04100d000b900501077f230041306b22002400024002400240024002400240100941ff0171410546044020004180800136021441f89b04200041146a100220002802142201418180014f0d0120002001360218200041f89b0436021420004100360208200041146a200041086a4104100f0d0520002d000b210120002d000a210220002d00092103024020002d00082204412f470440200441e300470d07410121042003413a47200241a5014772200141d1004772450d010c070b41002104200341860147200241db004772200141d90147720d060b20004100360210200042808001370218200041f89b043602142000410036022c200041146a22032000412c6a41041008200020002902143702082000200041086a200028021c10132000280204210520002802002106200028020821012000200028020c2202360214200620052001200310002105200220002802142203490d0202400240024020050e0400060601060b2000200336021820002001360214200041146a100e220141ff017141024704402000280218450d020b200041206a420037020020004101360218200041c483043602140c080b200041206a4200370200200041013602182000419483043602140c070b20040d04230041106b22002400200042808001370208200041f89b04360204200041046a220241001015200141ff0171410047200210074100200028020c100a1014000b200041043a0014200041146a1017000b20014180800141f48004100b000b2003200241f48004100b000b200041206a420037020020004101360218200041a4820436021420004194980436021c200041146a41ac8204100d000b200141ff0171451012410041001011000b410141011011000b20004194980436021c200041146a41ec8204100d000b4801017f230041206b220124002001410c6a420137020020014101360204200141dc95043602002001410136021c200120003602182001200141186a360208200141ec8204100d000b860201057f230041106b22002400024002401009220141ff0171410546044020004180800136020441f89b04200041046a100220002802042201418180014f0d0120002001360208200041f89b043602042000410036020c0240200041046a2000410c6a4104100f0d0020002d000f210120002d000e210220002d000d210320002d000c220441e1004704402004419b0147200341ae0147722002419d0147200141de004772720d01200041046a100e220041ff01714102460d01200010121010000b200341ef0147200241fe0047720d002001413e460d030b410141011011000b200020013a0004200041046a1017000b20014180800141f48004100b000b410010121010000b7601027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002101a2004280208200428020c101b200028020821030b200028020020036a2001200210062003200220036a22014b044041d08304411c41dc8904101c000b20002001360208200441106a24000bbf0301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003101f20022802082105200228020c0c020b200528020021080240200310202205450440410021050c010b20052008200710060b20030c010b20022003101f2002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41f08304412141b88504101c000b1f00024020004181808080784704402000450d012001101d000b0f0b101e000b4601017f230041206b220324002003410c6a4200370200200341013602042003419498043602082003200136021c200320003602182003200341186a36020020032002100d000b860101017f230041306b220124002001200036020c2001411c6a4201370200200141023602142001418887043602102001410336022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c2000419887043602182000200141106a360214200041d88a0436021020004194980436020c2000410c6a1029000b3c01017f230041206b22002400200041146a42003702002000410136020c200041dc8504360208200041949804360210200041086a41e48504100d000b2001017f41fa9b052d00001a20011020210220002001360204200020023602000be70101027f024002400240027f41ec9b042d0000044041f09b042802000c010b3f002202418080044f0d0141f09b0441809c0536020041ec9b0441013a000041f49b04200241107436020041809c050b2101027f4100200020016a22022001490d001a41f49b042802002002490440200041ffff036a220241107640002201417f460d042001418080044f0d032001411074220120024180807c716a22022001490d0441f49b0420023602004100200020016a22022001490d011a0b41f09b04200236020020010b0f0b41e09704412141c49704101c000b41e09704412141849804101c000b41000b0c00200041ac8404200110220bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10352003200329031037021c200341086a20062001103520032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0300010b0c00200020012002101941000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101101a2004280208200428020c101b200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10190b200241106a240041000f0b41d08304411c41cc8904101c000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e220641017441bc8c046a2f00003b0000200241026b2006419c7f6c20046a41ffff037141017441bc8c046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff037141017441bc8c046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a200241017441bc8c046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041949804210420024194980441949804102b20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004102e0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004102e0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004102e0d03200341106a2001200920026b4101102f20032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10300d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101102f20032802082205418080c400460d02200328020c2109200128021422022001280218220120072004102e0d02200220082006200128020c1100000d022005200920022001103021000c020b0c020b41a08a04411c41f48e04101c000b200341406b240020000f0b41f08904412141cc9504101c000b1b00200128021441a484044105200141186a28020028020c1100000b0e0020002802001a03400c000b000bad0301047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141e498043602102001410436022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441e898046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000101f20012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10210d032001280230210020012802382103024041f89b052d000045044041f99b052d00004101710d010b200020031003410947044041f89b0541013a00000b41f99b0541013a00000b000b41d08304411c41bc9504101c000b101e000b2000101d000b230041406a220024002000413336020c200041a8870436020820004194840436021420002001413f6a360210200041246a42023702002000413c6a41063602002000410236021c200041bc8b04360218200041023602342000200041306a3602202000200041106a3602382000200041086a360230200041186a41c88804100d000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200102c22042006200120006b2200417c716a2000410371102c6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b41809104102d200228020c21052002280208210620022002280200200228020422002000417c7141ec9204102d200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41a08a04411c41ac9304101c000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441a08a04411c418c9304101c000b41a08a04411c41fc9204101c000b41a08a04411c419c9304101c000b41a08a04411c41dc9204101c000b20002001102c21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a08a04411c41bc9504101c000b3d00200220034904404194980441232004101c000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41a08a04411c41848f04101c000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b7a002001200346044020002002200110060f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41033602002000410336020c200041d09104360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a2004100d000b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41a08a04411c41b09404101c000bb90301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d002001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1032200228021c418080c400470d010c020b0b200241106a200241246a10322002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200141186a28020028020c11000021000c030b200128020422002003200320046a102b22054d0d01200241086a2001200020056b4100102f4101210020022802082205418080c400460d02200228020c21062001280214220720032004200141186a280200220128020c1100000d022005200620072001103021000c020b200128021420032004200141186a28020028020c11000021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000beb0201057f230041406a22022400200028020021054101210002402001280214220441e88a04410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4103360200200241346a410336020020024103360214200241c08a0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10220d00200528020822030440200441f48a04410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a102221000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441f48a04410220011100000d00200420032802002003280204200111000021000b200241406b240020000b1300200045044041b79804412b2001101c000b0b0be61b0300418080040b910a2f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000000000010071000000e4000000170000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72730084000100730000002701000032000000656e636f756e746572656420756e6578706563746564206572726f72080101001c0000008400010073000000f0000000170000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f666c69707065722f6c69622e72733c01010030000000060000000500000073746f7261676520656e7472792077617320656d707479007c01010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279009c0101002700000000000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000070000000000000001000000080000004572726f72000000090000000c000000040000000a0000000b0000000c0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72730000004402010071000000980100001c0000006361706163697479206f766572666c6f77000000c802010011000000440201007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000006303010015000000780301000d000000f40201006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273db0301006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000005804010071000000610700000d0000005804010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041a08a040bb10d617474656d707420746f206164642077697468206f766572666c6f77293a0000140c0100000000003d050100010000003d050100010000000700000000000000010000000d00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320760501002000000096050100120000003a200000140c010000000000b8050100020000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730407010070000000050500000d00000004070100700000009705000030000000206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e646578200000b6070100100000009407010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000d807010016000000ee0701000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000c08010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820289008010015000000a50801002b0000003c050100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000e8080100720000004700000015000000e8080100720000004f00000032000000e8080100720000005a00000009000000e808010072000000660000000d000000e8080100720000006400000011000000e80801007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000bc0901007100000091000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000400a01007a0000009500000001000000cc05010070000000d201000005000000140c010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167652f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f616c6c6f6361746f722d352e302e302d72632f7372632f62756d702e72735c0b01006800000087000000110041e097040b8b04617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000005c0b0100680000009400000016000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00140c010000000000620c0100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273740c0100740000005c0000003b000000740c0100740000005c00000014000000740c0100740000005d0000000e000000740c0100740000005e00000034000000740c0100740000006800000009000000740c01007400000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e727300480d01006b000000770000000e000000190000001c000000160000001400000019000000e40a0100fd0a0100190b01002f0b0100430b01","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"flipper","version":"5.0.0-rc","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Creates a new flipper smart contract initialized with the given value."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Creates a new flipper smart contract initialized to `false`."],"label":"new_default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x61ef7e3e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":6},"balance":{"displayName":["Balance"],"type":9},"blockNumber":{"displayName":["BlockNumber"],"type":12},"chainExtension":{"displayName":["ChainExtension"],"type":13},"hash":{"displayName":["Hash"],"type":10},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":11}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":4},"messages":[{"args":[],"default":false,"docs":[" Flips the current value of the Flipper's boolean."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":2},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Returns the current value of the Flipper's boolean."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":5},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Flipper"}},"root_key":"0x00000000","ty":1}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"}]}},"path":["flipper","flipper","Flipper"]}},{"id":2,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":4}],"path":["Result"]}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":4}],"path":["Result"]}},{"id":6,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":7,"type":{"def":{"array":{"len":32,"type":8}}}},{"id":8,"type":{"def":{"primitive":"u8"}}},{"id":9,"type":{"def":{"primitive":"u128"}}},{"id":10,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":11,"type":{"def":{"primitive":"u64"}}},{"id":12,"type":{"def":{"primitive":"u32"}}},{"id":13,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"5"} diff --git a/packages/api-contract/src/test/contracts/ink/v5/flipper.json b/packages/api-contract/src/test/contracts/ink/v5/flipper.json index 804edb779d9f..fdd97d85b6e2 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/flipper.json +++ b/packages/api-contract/src/test/contracts/ink/v5/flipper.json @@ -415,5 +415,5 @@ } } ], - "version": "4" -} \ No newline at end of file + "version": "5" +} diff --git a/packages/api-contract/src/test/contracts/ink/v5/index.ts b/packages/api-contract/src/test/contracts/ink/v5/index.ts index 99bdc1efa682..b9ec4dbdf248 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/index.ts +++ b/packages/api-contract/src/test/contracts/ink/v5/index.ts @@ -1,6 +1,7 @@ // Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -export { default as erc20 } from './erc20.contract.json' assert { type: 'json' }; +export { default as erc20Contract } from './erc20.contract.json' assert { type: 'json' }; +export { default as erc20Metadata } from './erc20.json' assert { type: 'json' }; export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; diff --git a/packages/api-contract/src/types.ts b/packages/api-contract/src/types.ts index f5c1b2a18098..f1d0007f2344 100644 --- a/packages/api-contract/src/types.ts +++ b/packages/api-contract/src/types.ts @@ -7,6 +7,7 @@ import type { Text } from '@polkadot/types'; import type { ContractExecResultResult, ContractSelector, StorageDeposit, Weight, WeightV2 } from '@polkadot/types/interfaces'; import type { Codec, TypeDef } from '@polkadot/types/types'; import type { BN } from '@polkadot/util'; +import type { HexString } from '@polkadot/util/types'; import type { Abi } from './index.js'; export interface ContractBase { @@ -28,7 +29,7 @@ export interface AbiEvent { fromU8a: (data: Uint8Array) => DecodedEvent; identifier: string; index: number; - signatureTopic?: string; + signatureTopic?: HexString; } export interface AbiMessage { From 013ea59f70b265c7038936dbf8fa85729559a4a2 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Mon, 26 Feb 2024 14:43:09 +0100 Subject: [PATCH 11/25] changes `Abi.decodeEvent(data:Bytes)` method interface to `Abi.decodeEvent(record:EventRecord)` which includes the event and the topic for decoding. --- packages/api-contract/src/Abi/Abi.spec.ts | 106 +++++++++-------- packages/api-contract/src/Abi/index.ts | 16 ++- packages/api-contract/src/base/Contract.ts | 5 +- .../static-substrate-contracts-node.ts | 10 ++ .../v14/substrate-contracts-node-hex.ts | 8 ++ .../v14/substrate-contracts-node-rpc.ts | 108 ++++++++++++++++++ .../v14/substrate-contracts-node-ver.ts | 58 ++++++++++ scripts/metadata-get.mjs | 3 +- 8 files changed, 258 insertions(+), 56 deletions(-) create mode 100644 packages/types-support/src/metadata/static-substrate-contracts-node.ts create mode 100644 packages/types-support/src/metadata/v14/substrate-contracts-node-hex.ts create mode 100644 packages/types-support/src/metadata/v14/substrate-contracts-node-rpc.ts create mode 100644 packages/types-support/src/metadata/v14/substrate-contracts-node-ver.ts diff --git a/packages/api-contract/src/Abi/Abi.spec.ts b/packages/api-contract/src/Abi/Abi.spec.ts index 62cc1d505db2..4659ba07e636 100644 --- a/packages/api-contract/src/Abi/Abi.spec.ts +++ b/packages/api-contract/src/Abi/Abi.spec.ts @@ -9,9 +9,10 @@ import fs from 'node:fs'; import process from 'node:process'; import { TypeDefInfo } from '@polkadot/types/types'; -import { hexToU8a } from '@polkadot/util'; +import rpcMetadata from '@polkadot/types-support/metadata/static-substrate-contracts-node'; import { blake2AsHex } from '@polkadot/util-crypto'; +import { Metadata, TypeRegistry } from '../../../types/src/bundle.js'; import abis from '../test/contracts/index.js'; import { Abi } from './index.js'; @@ -124,68 +125,77 @@ describe('Abi', (): void => { expect(bundle.source.hash).toEqual(abi.info.source.wasmHash.toHex()); }); - it('decoding <=ink!v4 events', (): void => { - const abi = new Abi(abis['ink_v4_erc20Metadata']); + describe('Events', (): void => { + const registry = new TypeRegistry(); - const dataHex = '0x0001d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb10600000000000000'; - const dataU8A = hexToU8a(dataHex); + beforeAll((): void => { + const metadata = new Metadata(registry, rpcMetadata); - const decodedEvent = abi.decodeEvent(dataU8A); + registry.setMetadata(metadata); + }); - expect(decodedEvent.event.args.length).toEqual(3); - expect(decodedEvent.args.length).toEqual(3); - expect(decodedEvent.event.identifier).toEqual('Transfer'); + it('decoding <=ink!v4 events', (): void => { + const abiJson = abis['ink_v4_erc20Metadata']; - const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { - return { - ...prev, - [cur.name]: decodedEvent.args[index].toHuman() - }; - }, {}); + expect(abiJson).toBeDefined(); + const abi = new Abi(abiJson); - const expectedEvent = { - from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', - to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', - value: '123.4567 MUnit' - }; + const eventRecordHex = + '0x0001000000080360951b8baf569bca905a279c12d6ce17db7cdce23a42563870ef585129ce5dc64d010001d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb106000000000000000c0045726332303a3a5472616e7366657200000000000000000000000000000000da2d695d3b5a304e0039e7fc4419c34fa0c1f239189c99bb72a6484f1634782b2b00c7d40fe6d84d660f3e6bed90f218e022a0909f7e1a7ea35ada8b6e003564'; + const record = registry.createType('EventRecord', eventRecordHex); - expect(decodedEventHuman).toEqual(expectedEvent); - }); + const decodedEvent = abi.decodeEvent(record); + + expect(decodedEvent.event.args.length).toEqual(3); + expect(decodedEvent.args.length).toEqual(3); + expect(decodedEvent.event.identifier).toEqual('Transfer'); + + const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { + return { + ...prev, + [cur.name]: decodedEvent.args[index].toHuman() + }; + }, {}); - it('decoding <=ink!v5 events', (): void => { - const metadataJson = abis['ink_v5_erc20Metadata']; + const expectedEvent = { + from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + value: '123.4567 MUnit' + }; - expect(metadataJson).toBeDefined(); - const abi = new Abi(metadataJson); + expect(decodedEventHuman).toEqual(expectedEvent); + }); - const dataHex = '0x01d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb10600000000000000'; - const dataU8A = hexToU8a(dataHex); + it('decoding <=ink!v5 events', (): void => { + const abiJson = abis['ink_v5_erc20Metadata']; - const signatureTopicHex = '0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb'; + expect(abiJson).toBeDefined(); + const abi = new Abi(abiJson); - expect(abi.events.length).toEqual(2); - expect(abi.events[0].signatureTopic).toEqual(signatureTopicHex); + const eventRecordHex = + '0x00010000000803da17150e96b3955a4db6ad35ddeb495f722f9c1d84683113bfb096bf3faa30f2490101d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb106000000000000000cb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cbd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48'; + const record = registry.createType('EventRecord', eventRecordHex); - const signatureTopicHash = abi.registry.createType('Hash', signatureTopicHex); - const decodedEvent = abi.decodeEvent(dataU8A, signatureTopicHash); + const decodedEvent = abi.decodeEvent(record); - expect(decodedEvent.event.args.length).toEqual(3); - expect(decodedEvent.args.length).toEqual(3); - expect(decodedEvent.event.identifier).toEqual('erc20::erc20::Transfer'); + expect(decodedEvent.event.args.length).toEqual(3); + expect(decodedEvent.args.length).toEqual(3); + expect(decodedEvent.event.identifier).toEqual('erc20::erc20::Transfer'); - const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { - return { - ...prev, - [cur.name]: decodedEvent.args[index].toHuman() - }; - }, {}); + const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { + return { + ...prev, + [cur.name]: decodedEvent.args[index].toHuman() + }; + }, {}); - const expectedEvent = { - from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', - to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', - value: '123.4567 MUnit' - }; + const expectedEvent = { + from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + value: '123.4567 MUnit' + }; - expect(decodedEventHuman).toEqual(expectedEvent); + expect(decodedEventHuman).toEqual(expectedEvent); + }); }); }); diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 9e99e4125e9f..0b05795f1782 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,8 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec } from '@polkadot/types/interfaces'; -import type { Hash } from '@polkadot/types/interfaces/runtime'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec, EventRecord } from '@polkadot/types/interfaces'; import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; @@ -163,7 +162,12 @@ export class Abi { /** * Warning: Unstable API, bound to change */ - public decodeEvent (data: Bytes | Uint8Array, signatureTopic?: Hash): DecodedEvent { + public decodeEvent (record: EventRecord): DecodedEvent { + // TODO we could double check here if record is actually section `contract` and type `ContractExecution` or `ContractEmitted` + const data = record.event.data[1] as Bytes; + + const signatureTopic = record.topics[0]; + if (signatureTopic !== undefined) { const event = this.events.find((e) => e.signatureTopic !== undefined && e.signatureTopic === signatureTopic.toHex()); @@ -173,7 +177,11 @@ export class Abi { throw new Error(`Unable to find event with signature_topic ${signatureTopic.toHex()}`); } } else { - // otherwise fallback to using the index to determine event - ink! v4 downwards + if (!data) { + throw new Error('Unable to find event data'); + } + + // otherwise fallback to using the index to determine event - ink! v4 downwards const index = data[0]; const event = this.events[index]; diff --git a/packages/api-contract/src/base/Contract.ts b/packages/api-contract/src/base/Contract.ts index 9dd14cad7da3..64e4eb07c262 100644 --- a/packages/api-contract/src/base/Contract.ts +++ b/packages/api-contract/src/base/Contract.ts @@ -4,7 +4,6 @@ import type { ApiBase } from '@polkadot/api/base'; import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; -import type { Bytes } from '@polkadot/types'; import type { AccountId, ContractExecResult, EventRecord, Weight, WeightV2 } from '@polkadot/types/interfaces'; import type { ISubmittableResult } from '@polkadot/types/types'; import type { Abi } from '../Abi/index.js'; @@ -115,9 +114,9 @@ export class Contract extends Base { // ContractEmitted is the current generation, ContractExecution is the previous generation new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records: EventRecord[]) => records - .map(({ event: { data: [, data] }, topics }): DecodedEvent | null => { + .map((record): DecodedEvent | null => { try { - return this.abi.decodeEvent(data as Bytes, topics[0]); + return this.abi.decodeEvent(record); } catch (error) { l.error(`Unable to decode contract event: ${(error as Error).message}`); diff --git a/packages/types-support/src/metadata/static-substrate-contracts-node.ts b/packages/types-support/src/metadata/static-substrate-contracts-node.ts new file mode 100644 index 000000000000..d1b990c60b17 --- /dev/null +++ b/packages/types-support/src/metadata/static-substrate-contracts-node.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2024 @polkadot/types-support authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import metadata from './v14/substrate-contracts-node-hex.js'; +import rpc from './v14/substrate-contracts-node-rpc.js'; +import version from './v14/substrate-contracts-node-ver.js'; + +export { rpc, version }; + +export default metadata; diff --git a/packages/types-support/src/metadata/v14/substrate-contracts-node-hex.ts b/packages/types-support/src/metadata/v14/substrate-contracts-node-hex.ts new file mode 100644 index 000000000000..a0ec87cc2f7a --- /dev/null +++ b/packages/types-support/src/metadata/v14/substrate-contracts-node-hex.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2024 @polkadot/types-support authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/* eslint-disable */ + +// cargo run --release -- purge-chain -y --dev && cargo run --release -- --dev + +export default '0x6d6574610e7d02000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f08144e6f6e636501102c4163636f756e74446174610114001401146e6f6e63651001144e6f6e6365000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500140c3c70616c6c65745f62616c616e6365731474797065732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500011866726f7a656e18011c42616c616e6365000114666c6167731c01284578747261466c61677300001800000507001c0c3c70616c6c65745f62616c616e636573147479706573284578747261466c61677300000400180110753132380000200c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540124000c01186e6f726d616c2401045400012c6f7065726174696f6e616c240104540001246d616e6461746f7279240104540000240c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d6528010c75363400012870726f6f665f73697a6528010c7536340000280000062c002c000005060030083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d000034000002080038102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f67733c013c5665633c4469676573744974656d3e00003c000002400040102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e00060024436f6e73656e7375730800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e000400105365616c0800440144436f6e73656e737573456e67696e654964000034011c5665633c75383e000500144f74686572040034011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e74557064617465640008000044000003040000000800480000024c004c08306672616d655f73797374656d2c4576656e745265636f7264080445015004540130000c01147068617365ac011450686173650001146576656e7450010445000118746f70696373b001185665633c543e0000500858636f6e7472616374735f6e6f64655f72756e74696d653052756e74696d654576656e7400011c1853797374656d04005401706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c5574696c697479040078015470616c6c65745f7574696c6974793a3a4576656e740002002042616c616e636573040084017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000400485472616e73616374696f6e5061796d656e7404008c01a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e000600105375646f040090016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e00070024436f6e747261637473040098018070616c6c65745f636f6e7472616374733a3a4576656e743c52756e74696d653e000800184173736574730400a4017470616c6c65745f6173736574733a3a4576656e743c52756e74696d653e00090000540c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304013464697370617463685f696e666f5801304469737061746368496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7264013444697370617463684572726f7200013464697370617463685f696e666f5801304469737061746368496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e7449640001106861736830011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e04704576656e7420666f72207468652053797374656d2070616c6c65742e580c346672616d655f737570706f7274206469737061746368304469737061746368496e666f00000c0118776569676874240118576569676874000114636c6173735c01344469737061746368436c617373000120706179735f6665656001105061797300005c0c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000600c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000064082873705f72756e74696d653444697370617463684572726f72000138144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65040068012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e04006c0128546f6b656e4572726f720007002841726974686d65746963040070013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007401485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c0038526f6f744e6f74416c6c6f776564000d000068082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7244018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d00006c082873705f72756e74696d6528546f6b656e4572726f720001284046756e6473556e617661696c61626c65000000304f6e6c7950726f76696465720001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f727465640006004043616e6e6f74437265617465486f6c64000700344e6f74457870656e6461626c650008001c426c6f636b65640009000070083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000074082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c6179657200010000780c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000118404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7264013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7264013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c747c01384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65747c0418526573756c740804540180044501640108084f6b040080000000000c4572720400640000010000800000040000840c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001541c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475738801185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000b049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000d04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e744964000e0460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e6365000f042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650010042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500110460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500120468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140460536f6d652062616c616e636520776173207468617765642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65748814346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e63655374617475730001081046726565000000205265736572766564000100008c0c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574900c2c70616c6c65745f7375646f1870616c6c6574144576656e7404045400010c14537564696404012c7375646f5f726573756c747c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e00047041207375646f2063616c6c206a75737420746f6f6b20706c6163652e284b65794368616e6765640401286f6c645f7375646f65729401504f7074696f6e3c543a3a4163636f756e7449643e04ac546865206f6c64207375646f206b6579206966206f6e65207761732070726576696f75736c79207365742e010478546865207375646f206b657920686173206265656e20757064617465642e285375646f4173446f6e6504012c7375646f5f726573756c747c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e0204c841205b7375646f5f61735d2850616c6c65743a3a7375646f5f6173292063616c6c206a75737420746f6f6b20706c6163652e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749404184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000980c4070616c6c65745f636f6e7472616374731870616c6c6574144576656e7404045400012830496e7374616e7469617465640801206465706c6f796572000130543a3a4163636f756e744964000120636f6e7472616374000130543a3a4163636f756e744964000004d8436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e285465726d696e61746564080120636f6e7472616374000130543a3a4163636f756e744964048454686520636f6e7472616374207468617420776173207465726d696e617465642e012c62656e6566696369617279000130543a3a4163636f756e74496404e4546865206163636f756e7420746861742072656365697665642074686520636f6e7472616374732072656d61696e696e672062616c616e6365011868436f6e747261637420686173206265656e2072656d6f7665642e001823204e6f7465003d01546865206f6e6c792077617920666f72206120636f6e747261637420746f2062652072656d6f76656420616e6420656d697474696e672074686973206576656e742069732062792063616c6c696e6744607365616c5f7465726d696e617465602e28436f646553746f7265640c0124636f64655f6861736830011c543a3a486173680001306465706f7369745f68656c6418013042616c616e63654f663c543e00012075706c6f61646572000130543a3a4163636f756e744964000204b4436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e3c436f6e7472616374456d6974746564080120636f6e7472616374000130543a3a4163636f756e744964049054686520636f6e7472616374207468617420656d697474656420746865206576656e742e01106461746134011c5665633c75383e0835014461746120737570706c6965642062792074686520636f6e74726163742e204d657461646174612067656e65726174656420647572696e6720636f6e747261637420636f6d70696c6174696f6e5c6973206e656564656420746f206465636f64652069742e03049c4120637573746f6d206576656e7420656d69747465642062792074686520636f6e74726163742e2c436f646552656d6f7665640c0124636f64655f6861736830011c543a3a486173680001406465706f7369745f72656c656173656418013042616c616e63654f663c543e00011c72656d6f766572000130543a3a4163636f756e744964000404ac4120636f6465207769746820746865207370656369666965642068617368207761732072656d6f7665642e4c436f6e7472616374436f6465557064617465640c0120636f6e7472616374000130543a3a4163636f756e744964048c54686520636f6e7472616374207468617420686173206265656e20757064617465642e01346e65775f636f64655f6861736830011c543a3a4861736804b04e657720636f646520686173682074686174207761732073657420666f722074686520636f6e74726163742e01346f6c645f636f64655f6861736830011c543a3a48617368048c50726576696f757320636f64652068617368206f662074686520636f6e74726163742e0504784120636f6e7472616374277320636f64652077617320757064617465642e1843616c6c656408011863616c6c65729c01244f726967696e3c543e04745468652063616c6c6572206f66207468652060636f6e7472616374602e0120636f6e7472616374000130543a3a4163636f756e744964047454686520636f6e74726163742074686174207761732063616c6c65642e061c11014120636f6e7472616374207761732063616c6c656420656974686572206279206120706c61696e206163636f756e74206f7220616e6f7468657220636f6e74726163742e001823204e6f7465003101506c65617365206b65657020696e206d696e642074686174206c696b6520616c6c206576656e74732074686973206973206f6e6c7920656d697474656420666f72207375636365737366756c290163616c6c732e20546869732069732062656361757365206f6e206661696c75726520616c6c2073746f72616765206368616e67657320696e636c7564696e67206576656e74732061726530726f6c6c6564206261636b2e3844656c656761746543616c6c6564080120636f6e7472616374000130543a3a4163636f756e74496408210154686520636f6e7472616374207468617420706572666f726d6564207468652064656c65676174652063616c6c20616e642068656e636520696e2077686f736520636f6e74657874707468652060636f64655f68617368602069732065786563757465642e0124636f64655f6861736830012c436f6465486173683c543e049c54686520636f646520686173682074686174207761732064656c65676174652063616c6c65642e071c9c4120636f6e74726163742064656c65676174652063616c6c6564206120636f646520686173682e001823204e6f7465003101506c65617365206b65657020696e206d696e642074686174206c696b6520616c6c206576656e74732074686973206973206f6e6c7920656d697474656420666f72207375636365737366756c290163616c6c732e20546869732069732062656361757365206f6e206661696c75726520616c6c2073746f72616765206368616e67657320696e636c7564696e67206576656e74732061726530726f6c6c6564206261636b2e8053746f726167654465706f7369745472616e73666572726564416e6448656c640c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000804f4536f6d652066756e64732068617665206265656e207472616e7366657272656420616e642068656c642061732073746f72616765206465706f7369742e9053746f726167654465706f7369745472616e73666572726564416e6452656c65617365640c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e7418013042616c616e63654f663c543e000904f8536f6d652073746f72616765206465706f7369742066756e64732068617665206265656e207472616e7366657272656420616e642072656c65617365642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749c084070616c6c65745f636f6e747261637473184f726967696e04045401a0010810526f6f74000000185369676e65640400000130543a3a4163636f756e74496400010000a00858636f6e7472616374735f6e6f64655f72756e74696d651c52756e74696d6500000000a40c3470616c6c65745f6173736574731870616c6c6574144576656e740804540004490001601c437265617465640c012061737365745f6964100128543a3a4173736574496400011c63726561746f72000130543a3a4163636f756e7449640001146f776e6572000130543a3a4163636f756e74496400000474536f6d6520617373657420636c6173732077617320637265617465642e184973737565640c012061737365745f6964100128543a3a417373657449640001146f776e6572000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500010460536f6d65206173736574732077657265206973737565642e2c5472616e7366657272656410012061737365745f6964100128543a3a4173736574496400011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500020474536f6d65206173736574732077657265207472616e736665727265642e184275726e65640c012061737365745f6964100128543a3a417373657449640001146f776e6572000130543a3a4163636f756e74496400011c62616c616e6365180128543a3a42616c616e63650003046c536f6d652061737365747320776572652064657374726f7965642e2c5465616d4368616e67656410012061737365745f6964100128543a3a41737365744964000118697373756572000130543a3a4163636f756e74496400011461646d696e000130543a3a4163636f756e74496400011c667265657a6572000130543a3a4163636f756e74496400040470546865206d616e6167656d656e74207465616d206368616e6765642e304f776e65724368616e67656408012061737365745f6964100128543a3a417373657449640001146f776e6572000130543a3a4163636f756e74496400050448546865206f776e6572206368616e6765642e1846726f7a656e08012061737365745f6964100128543a3a4173736574496400010c77686f000130543a3a4163636f756e74496400060478536f6d65206163636f756e74206077686f60207761732066726f7a656e2e1854686177656408012061737365745f6964100128543a3a4173736574496400010c77686f000130543a3a4163636f756e74496400070478536f6d65206163636f756e74206077686f6020776173207468617765642e2c417373657446726f7a656e04012061737365745f6964100128543a3a4173736574496400080484536f6d65206173736574206061737365745f696460207761732066726f7a656e2e2c417373657454686177656404012061737365745f6964100128543a3a4173736574496400090484536f6d65206173736574206061737365745f69646020776173207468617765642e444163636f756e747344657374726f7965640c012061737365745f6964100128543a3a417373657449640001486163636f756e74735f64657374726f79656410010c7533320001486163636f756e74735f72656d61696e696e6710010c753332000a04a04163636f756e747320776572652064657374726f79656420666f7220676976656e2061737365742e48417070726f76616c7344657374726f7965640c012061737365745f6964100128543a3a4173736574496400014c617070726f76616c735f64657374726f79656410010c75333200014c617070726f76616c735f72656d61696e696e6710010c753332000b04a4417070726f76616c7320776572652064657374726f79656420666f7220676976656e2061737365742e484465737472756374696f6e5374617274656404012061737365745f6964100128543a3a41737365744964000c04d0416e20617373657420636c61737320697320696e207468652070726f63657373206f66206265696e672064657374726f7965642e2444657374726f79656404012061737365745f6964100128543a3a41737365744964000d0474416e20617373657420636c617373207761732064657374726f7965642e30466f7263654372656174656408012061737365745f6964100128543a3a417373657449640001146f776e6572000130543a3a4163636f756e744964000e048c536f6d6520617373657420636c6173732077617320666f7263652d637265617465642e2c4d6574616461746153657414012061737365745f6964100128543a3a417373657449640001106e616d6534011c5665633c75383e00011873796d626f6c34011c5665633c75383e000120646563696d616c73080108753800012469735f66726f7a656ea80110626f6f6c000f049c4e6577206d6574616461746120686173206265656e2073657420666f7220616e2061737365742e3c4d65746164617461436c656172656404012061737365745f6964100128543a3a417373657449640010049c4d6574616461746120686173206265656e20636c656172656420666f7220616e2061737365742e40417070726f7665645472616e7366657210012061737365745f6964100128543a3a41737365744964000118736f75726365000130543a3a4163636f756e74496400012064656c6567617465000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650011043101284164646974696f6e616c292066756e64732068617665206265656e20617070726f76656420666f72207472616e7366657220746f20612064657374696e6174696f6e206163636f756e742e44417070726f76616c43616e63656c6c65640c012061737365745f6964100128543a3a417373657449640001146f776e6572000130543a3a4163636f756e74496400012064656c6567617465000130543a3a4163636f756e744964001204f0416e20617070726f76616c20666f72206163636f756e74206064656c656761746560207761732063616e63656c6c656420627920606f776e6572602e4c5472616e73666572726564417070726f76656414012061737365745f6964100128543a3a417373657449640001146f776e6572000130543a3a4163636f756e74496400012064656c6567617465000130543a3a4163636f756e74496400012c64657374696e6174696f6e000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650013083101416e2060616d6f756e746020776173207472616e7366657272656420696e2069747320656e7469726574792066726f6d20606f776e65726020746f206064657374696e6174696f6e602062796074686520617070726f766564206064656c6567617465602e4841737365745374617475734368616e67656404012061737365745f6964100128543a3a41737365744964001404f8416e2061737365742068617320686164206974732061747472696275746573206368616e676564206279207468652060466f72636560206f726967696e2e5841737365744d696e42616c616e63654368616e67656408012061737365745f6964100128543a3a4173736574496400013c6e65775f6d696e5f62616c616e6365180128543a3a42616c616e63650015040101546865206d696e5f62616c616e6365206f6620616e20617373657420686173206265656e207570646174656420627920746865206173736574206f776e65722e1c546f75636865640c012061737365745f6964100128543a3a4173736574496400010c77686f000130543a3a4163636f756e7449640001246465706f7369746f72000130543a3a4163636f756e744964001604fc536f6d65206163636f756e74206077686f6020776173206372656174656420776974682061206465706f7369742066726f6d20606465706f7369746f72602e1c426c6f636b656408012061737365745f6964100128543a3a4173736574496400010c77686f000130543a3a4163636f756e7449640017047c536f6d65206163636f756e74206077686f602077617320626c6f636b65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a80000050000ac08306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000b00000023000b4000002b800b800000408101000bc08306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6ec0014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d65c4016473705f72756e74696d653a3a52756e74696d65537472696e670000c00000061000c40000050200c80c306672616d655f73797374656d1870616c6c65741043616c6c0404540001201872656d61726b04011872656d61726b34011c5665633c75383e0000045c536565205b6050616c6c65743a3a72656d61726b605d2e387365745f686561705f706167657304011470616765732c010c7536340001047c536565205b6050616c6c65743a3a7365745f686561705f7061676573605d2e207365745f636f6465040110636f646534011c5665633c75383e00020464536565205b6050616c6c65743a3a7365745f636f6465605d2e5c7365745f636f64655f776974686f75745f636865636b73040110636f646534011c5665633c75383e000304a0536565205b6050616c6c65743a3a7365745f636f64655f776974686f75745f636865636b73605d2e2c7365745f73746f726167650401146974656d73cc01345665633c4b657956616c75653e00040470536565205b6050616c6c65743a3a7365745f73746f72616765605d2e306b696c6c5f73746f726167650401106b657973d401205665633c4b65793e00050474536565205b6050616c6c65743a3a6b696c6c5f73746f72616765605d2e2c6b696c6c5f70726566697808011870726566697834010c4b657900011c7375626b65797310010c75333200060470536565205b6050616c6c65743a3a6b696c6c5f707265666978605d2e4472656d61726b5f776974685f6576656e7404011872656d61726b34011c5665633c75383e00070488536565205b6050616c6c65743a3a72656d61726b5f776974685f6576656e74605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ecc000002d000d000000408343400d40000023400d80c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2401185765696768740001246d61785f626c6f636b2401185765696768740001247065725f636c617373dc01845065724469737061746368436c6173733c57656967687473506572436c6173733e0000dc0c346672616d655f737570706f7274206469737061746368405065724469737061746368436c61737304045401e0000c01186e6f726d616ce001045400012c6f7065726174696f6e616ce00104540001246d616e6461746f7279e00104540000e00c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632401185765696768740001346d61785f65787472696e736963e401384f7074696f6e3c5765696768743e0001246d61785f746f74616ce401384f7074696f6e3c5765696768743e0001207265736572766564e401384f7074696f6e3c5765696768743e0000e404184f7074696f6e04045401240108104e6f6e6500000010536f6d650400240000010000e80c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178ec01545065724469737061746368436c6173733c7533323e0000ec0c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f7279100104540000f0082873705f776569676874733c52756e74696d6544625765696768740000080110726561642c010c75363400011477726974652c010c7536340000f4082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d65c4013452756e74696d65537472696e67000124696d706c5f6e616d65c4013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973f8011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013473746174655f76657273696f6e08010875380000f8040c436f7704045401fc000400fc000000fc000002010100010100000408050110000501000003080000000800090100000504000d010c306672616d655f73797374656d1870616c6c6574144572726f720404540001183c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e046c4572726f7220666f72207468652053797374656d2070616c6c657411010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540130045300000400b001185665633c543e000015010c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400011814626174636804011463616c6c731901017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000458536565205b6050616c6c65743a3a6261746368605d2e3461735f64657269766174697665080114696e6465780901010c75313600011063616c6c1d01017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00010478536565205b6050616c6c65743a3a61735f64657269766174697665605d2e2462617463685f616c6c04011463616c6c731901017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00020468536565205b6050616c6c65743a3a62617463685f616c6c605d2e2c64697370617463685f617308012461735f6f726967696e51010154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6c1d01017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00030470536565205b6050616c6c65743a3a64697370617463685f6173605d2e2c666f7263655f626174636804011463616c6c731901017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00040470536565205b6050616c6c65743a3a666f7263655f6261746368605d2e2c776974685f77656967687408011063616c6c1d01017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00011877656967687424011857656967687400050470536565205b6050616c6c65743a3a776974685f776569676874605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e19010000021d01001d010858636f6e7472616374735f6e6f64655f72756e74696d652c52756e74696d6543616c6c00011c1853797374656d0400c801ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e0000001c5574696c6974790400150101b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e0002002454696d657374616d700400210101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0003002042616c616e6365730400250101b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000400105375646f04003d0101a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e00070024436f6e7472616374730400410101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6e7472616374732c2052756e74696d653e0008001841737365747304004d0101ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4173736574732c2052756e74696d653e0009000021010c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77280124543a3a4d6f6d656e7400000450536565205b6050616c6c65743a3a736574605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e25010c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c08045400044900011c507472616e736665725f616c6c6f775f646561746808011064657374290101504163636f756e7449644c6f6f6b75704f663c543e00011476616c756535010128543a3a42616c616e636500000494536565205b6050616c6c65743a3a7472616e736665725f616c6c6f775f6465617468605d2e38666f7263655f7472616e736665720c0118736f75726365290101504163636f756e7449644c6f6f6b75704f663c543e00011064657374290101504163636f756e7449644c6f6f6b75704f663c543e00011476616c756535010128543a3a42616c616e63650002047c536565205b6050616c6c65743a3a666f7263655f7472616e73666572605d2e4c7472616e736665725f6b6565705f616c69766508011064657374290101504163636f756e7449644c6f6f6b75704f663c543e00011476616c756535010128543a3a42616c616e636500030490536565205b6050616c6c65743a3a7472616e736665725f6b6565705f616c697665605d2e307472616e736665725f616c6c08011064657374290101504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665a80110626f6f6c00040474536565205b6050616c6c65743a3a7472616e736665725f616c6c605d2e3c666f7263655f756e7265736572766508010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050480536565205b6050616c6c65743a3a666f7263655f756e72657365727665605d2e40757067726164655f6163636f756e747304010c77686f390101445665633c543a3a4163636f756e7449643e00060484536565205b6050616c6c65743a3a757067726164655f6163636f756e7473605d2e44666f7263655f7365745f62616c616e636508010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f6672656535010128543a3a42616c616e636500080488536565205b6050616c6c65743a3a666f7263655f7365745f62616c616e6365605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e29010c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780180011408496404000001244163636f756e74496400000014496e64657804002d0101304163636f756e74496e6465780001000c526177040034011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400310101205b75383b2032305d000400002d010000068000310100000314000000080035010000061800390100000200003d010c2c70616c6c65745f7375646f1870616c6c65741043616c6c040454000110107375646f04011063616c6c1d01017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000454536565205b6050616c6c65743a3a7375646f605d2e547375646f5f756e636865636b65645f77656967687408011063616c6c1d01017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00011877656967687424011857656967687400010498536565205b6050616c6c65743a3a7375646f5f756e636865636b65645f776569676874605d2e1c7365745f6b657904010c6e6577290101504163636f756e7449644c6f6f6b75704f663c543e00020460536565205b6050616c6c65743a3a7365745f6b6579605d2e1c7375646f5f617308010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e00011063616c6c1d01017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00030460536565205b6050616c6c65743a3a7375646f5f6173605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e41010c4070616c6c65745f636f6e7472616374731870616c6c65741043616c6c0404540001283c63616c6c5f6f6c645f77656967687414011064657374290101504163636f756e7449644c6f6f6b75704f663c543e00011476616c75653501013042616c616e63654f663c543e0001246761735f6c696d69742801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974450101c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e0001106461746134011c5665633c75383e00000480536565205b6050616c6c65743a3a63616c6c5f6f6c645f776569676874605d2e80696e7374616e74696174655f776974685f636f64655f6f6c645f77656967687418011476616c75653501013042616c616e63654f663c543e0001246761735f6c696d69742801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974450101c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000110636f646534011c5665633c75383e0001106461746134011c5665633c75383e00011073616c7434011c5665633c75383e000104c4536565205b6050616c6c65743a3a696e7374616e74696174655f776974685f636f64655f6f6c645f776569676874605d2e58696e7374616e74696174655f6f6c645f77656967687418011476616c75653501013042616c616e63654f663c543e0001246761735f6c696d69742801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974450101c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000124636f64655f6861736830012c436f6465486173683c543e0001106461746134011c5665633c75383e00011073616c7434011c5665633c75383e0002049c536565205b6050616c6c65743a3a696e7374616e74696174655f6f6c645f776569676874605d2e2c75706c6f61645f636f64650c0110636f646534011c5665633c75383e00015473746f726167655f6465706f7369745f6c696d6974450101c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e00012c64657465726d696e69736d4901012c44657465726d696e69736d00030470536565205b6050616c6c65743a3a75706c6f61645f636f6465605d2e2c72656d6f76655f636f6465040124636f64655f6861736830012c436f6465486173683c543e00040470536565205b6050616c6c65743a3a72656d6f76655f636f6465605d2e207365745f636f646508011064657374290101504163636f756e7449644c6f6f6b75704f663c543e000124636f64655f6861736830012c436f6465486173683c543e00050464536565205b6050616c6c65743a3a7365745f636f6465605d2e1063616c6c14011064657374290101504163636f756e7449644c6f6f6b75704f663c543e00011476616c75653501013042616c616e63654f663c543e0001246761735f6c696d697424011857656967687400015473746f726167655f6465706f7369745f6c696d6974450101c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e0001106461746134011c5665633c75383e00060454536565205b6050616c6c65743a3a63616c6c605d2e54696e7374616e74696174655f776974685f636f646518011476616c75653501013042616c616e63654f663c543e0001246761735f6c696d697424011857656967687400015473746f726167655f6465706f7369745f6c696d6974450101c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000110636f646534011c5665633c75383e0001106461746134011c5665633c75383e00011073616c7434011c5665633c75383e00070498536565205b6050616c6c65743a3a696e7374616e74696174655f776974685f636f6465605d2e2c696e7374616e746961746518011476616c75653501013042616c616e63654f663c543e0001246761735f6c696d697424011857656967687400015473746f726167655f6465706f7369745f6c696d6974450101c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000124636f64655f6861736830012c436f6465486173683c543e0001106461746134011c5665633c75383e00011073616c7434011c5665633c75383e00080470536565205b6050616c6c65743a3a696e7374616e7469617465605d2e1c6d6967726174650401307765696768745f6c696d697424011857656967687400090460536565205b6050616c6c65743a3a6d696772617465605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e450104184f7074696f6e0404540135010108104e6f6e6500000010536f6d6504003501000001000049010c4070616c6c65745f636f6e747261637473107761736d2c44657465726d696e69736d00010820456e666f726365640000001c52656c61786564000100004d010c3470616c6c65745f6173736574731870616c6c65741043616c6c080454000449000180186372656174650c01086964c0014c543a3a41737365744964506172616d6574657200011461646d696e290101504163636f756e7449644c6f6f6b75704f663c543e00012c6d696e5f62616c616e6365180128543a3a42616c616e63650000045c536565205b6050616c6c65743a3a637265617465605d2e30666f7263655f6372656174651001086964c0014c543a3a41737365744964506172616d657465720001146f776e6572290101504163636f756e7449644c6f6f6b75704f663c543e00013469735f73756666696369656e74a80110626f6f6c00012c6d696e5f62616c616e636535010128543a3a42616c616e636500010474536565205b6050616c6c65743a3a666f7263655f637265617465605d2e3473746172745f64657374726f790401086964c0014c543a3a41737365744964506172616d6574657200020478536565205b6050616c6c65743a3a73746172745f64657374726f79605d2e4064657374726f795f6163636f756e74730401086964c0014c543a3a41737365744964506172616d6574657200030484536565205b6050616c6c65743a3a64657374726f795f6163636f756e7473605d2e4464657374726f795f617070726f76616c730401086964c0014c543a3a41737365744964506172616d6574657200040488536565205b6050616c6c65743a3a64657374726f795f617070726f76616c73605d2e3866696e6973685f64657374726f790401086964c0014c543a3a41737365744964506172616d657465720005047c536565205b6050616c6c65743a3a66696e6973685f64657374726f79605d2e106d696e740c01086964c0014c543a3a41737365744964506172616d6574657200012c62656e6566696369617279290101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e7435010128543a3a42616c616e636500060454536565205b6050616c6c65743a3a6d696e74605d2e106275726e0c01086964c0014c543a3a41737365744964506172616d6574657200010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e7435010128543a3a42616c616e636500070454536565205b6050616c6c65743a3a6275726e605d2e207472616e736665720c01086964c0014c543a3a41737365744964506172616d65746572000118746172676574290101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e7435010128543a3a42616c616e636500080464536565205b6050616c6c65743a3a7472616e73666572605d2e4c7472616e736665725f6b6565705f616c6976650c01086964c0014c543a3a41737365744964506172616d65746572000118746172676574290101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e7435010128543a3a42616c616e636500090490536565205b6050616c6c65743a3a7472616e736665725f6b6565705f616c697665605d2e38666f7263655f7472616e736665721001086964c0014c543a3a41737365744964506172616d65746572000118736f75726365290101504163636f756e7449644c6f6f6b75704f663c543e00011064657374290101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e7435010128543a3a42616c616e6365000a047c536565205b6050616c6c65743a3a666f7263655f7472616e73666572605d2e18667265657a650801086964c0014c543a3a41737365744964506172616d6574657200010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e000b045c536565205b6050616c6c65743a3a667265657a65605d2e10746861770801086964c0014c543a3a41737365744964506172616d6574657200010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e000c0454536565205b6050616c6c65743a3a74686177605d2e30667265657a655f61737365740401086964c0014c543a3a41737365744964506172616d65746572000d0474536565205b6050616c6c65743a3a667265657a655f6173736574605d2e28746861775f61737365740401086964c0014c543a3a41737365744964506172616d65746572000e046c536565205b6050616c6c65743a3a746861775f6173736574605d2e487472616e736665725f6f776e6572736869700801086964c0014c543a3a41737365744964506172616d657465720001146f776e6572290101504163636f756e7449644c6f6f6b75704f663c543e000f048c536565205b6050616c6c65743a3a7472616e736665725f6f776e657273686970605d2e207365745f7465616d1001086964c0014c543a3a41737365744964506172616d65746572000118697373756572290101504163636f756e7449644c6f6f6b75704f663c543e00011461646d696e290101504163636f756e7449644c6f6f6b75704f663c543e00011c667265657a6572290101504163636f756e7449644c6f6f6b75704f663c543e00100464536565205b6050616c6c65743a3a7365745f7465616d605d2e307365745f6d657461646174611001086964c0014c543a3a41737365744964506172616d657465720001106e616d6534011c5665633c75383e00011873796d626f6c34011c5665633c75383e000120646563696d616c73080108753800110474536565205b6050616c6c65743a3a7365745f6d65746164617461605d2e38636c6561725f6d657461646174610401086964c0014c543a3a41737365744964506172616d657465720012047c536565205b6050616c6c65743a3a636c6561725f6d65746164617461605d2e48666f7263655f7365745f6d657461646174611401086964c0014c543a3a41737365744964506172616d657465720001106e616d6534011c5665633c75383e00011873796d626f6c34011c5665633c75383e000120646563696d616c73080108753800012469735f66726f7a656ea80110626f6f6c0013048c536565205b6050616c6c65743a3a666f7263655f7365745f6d65746164617461605d2e50666f7263655f636c6561725f6d657461646174610401086964c0014c543a3a41737365744964506172616d6574657200140494536565205b6050616c6c65743a3a666f7263655f636c6561725f6d65746164617461605d2e48666f7263655f61737365745f7374617475732001086964c0014c543a3a41737365744964506172616d657465720001146f776e6572290101504163636f756e7449644c6f6f6b75704f663c543e000118697373756572290101504163636f756e7449644c6f6f6b75704f663c543e00011461646d696e290101504163636f756e7449644c6f6f6b75704f663c543e00011c667265657a6572290101504163636f756e7449644c6f6f6b75704f663c543e00012c6d696e5f62616c616e636535010128543a3a42616c616e636500013469735f73756666696369656e74a80110626f6f6c00012469735f66726f7a656ea80110626f6f6c0015048c536565205b6050616c6c65743a3a666f7263655f61737365745f737461747573605d2e40617070726f76655f7472616e736665720c01086964c0014c543a3a41737365744964506172616d6574657200012064656c6567617465290101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e7435010128543a3a42616c616e636500160484536565205b6050616c6c65743a3a617070726f76655f7472616e73666572605d2e3c63616e63656c5f617070726f76616c0801086964c0014c543a3a41737365744964506172616d6574657200012064656c6567617465290101504163636f756e7449644c6f6f6b75704f663c543e00170480536565205b6050616c6c65743a3a63616e63656c5f617070726f76616c605d2e54666f7263655f63616e63656c5f617070726f76616c0c01086964c0014c543a3a41737365744964506172616d657465720001146f776e6572290101504163636f756e7449644c6f6f6b75704f663c543e00012064656c6567617465290101504163636f756e7449644c6f6f6b75704f663c543e00180498536565205b6050616c6c65743a3a666f7263655f63616e63656c5f617070726f76616c605d2e447472616e736665725f617070726f7665641001086964c0014c543a3a41737365744964506172616d657465720001146f776e6572290101504163636f756e7449644c6f6f6b75704f663c543e00012c64657374696e6174696f6e290101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e7435010128543a3a42616c616e636500190488536565205b6050616c6c65743a3a7472616e736665725f617070726f766564605d2e14746f7563680401086964c0014c543a3a41737365744964506172616d65746572001a0458536565205b6050616c6c65743a3a746f756368605d2e18726566756e640801086964c0014c543a3a41737365744964506172616d65746572000128616c6c6f775f6275726ea80110626f6f6c001b045c536565205b6050616c6c65743a3a726566756e64605d2e3c7365745f6d696e5f62616c616e63650801086964c0014c543a3a41737365744964506172616d6574657200012c6d696e5f62616c616e6365180128543a3a42616c616e6365001c0480536565205b6050616c6c65743a3a7365745f6d696e5f62616c616e6365605d2e2c746f7563685f6f746865720801086964c0014c543a3a41737365744964506172616d6574657200010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e001d0470536565205b6050616c6c65743a3a746f7563685f6f74686572605d2e30726566756e645f6f746865720801086964c0014c543a3a41737365744964506172616d6574657200010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e001e0474536565205b6050616c6c65743a3a726566756e645f6f74686572605d2e14626c6f636b0801086964c0014c543a3a41737365744964506172616d6574657200010c77686f290101504163636f756e7449644c6f6f6b75704f663c543e001f0458536565205b6050616c6c65743a3a626c6f636b605d2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e51010858636f6e7472616374735f6e6f64655f72756e74696d65304f726967696e43616c6c65720001081873797374656d0400550101746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000010566f69640400590101410173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a0a5f5f707269766174653a3a566f69640001000055010c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200005901081c73705f636f726510566f6964000100005d010c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e61010c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e6465645665630804540165010453000004006d0101185665633c543e000065010c3c70616c6c65745f62616c616e6365731474797065732c42616c616e63654c6f636b041c42616c616e63650118000c01086964050101384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e736901011c526561736f6e73000069010c3c70616c6c65745f62616c616e6365731474797065731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200006d0100000265010071010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017501045300000400790101185665633c543e000075010c3c70616c6c65745f62616c616e6365731474797065732c52657365727665446174610844526573657276654964656e7469666965720105011c42616c616e6365011800080108696405010144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e6365000079010000027501007d010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540181010453000004008d0101185665633c543e000081010c3c70616c6c65745f62616c616e636573147479706573204964416d6f756e74080849640185011c42616c616e63650118000801086964850101084964000118616d6f756e7418011c42616c616e6365000085010858636f6e7472616374735f6e6f64655f72756e74696d654452756e74696d65486f6c64526561736f6e00010424436f6e74726163747304008901017070616c6c65745f636f6e7472616374733a3a486f6c64526561736f6e0008000089010c4070616c6c65745f636f6e7472616374731870616c6c657428486f6c64526561736f6e00010860436f646555706c6f61644465706f736974526573657276650000005453746f726167654465706f73697452657365727665000100008d0100000281010091010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019501045300000400990101185665633c543e000095010c3c70616c6c65745f62616c616e636573147479706573204964416d6f756e740808496401801c42616c616e636501180008010869648001084964000118616d6f756e7418011c42616c616e6365000099010000029501009d010c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001283856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804884e756d626572206f6620686f6c64732065786365656420604d6178486f6c6473602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ea1010c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000a501086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000a9010c2c70616c6c65745f7375646f1870616c6c6574144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f2070616c6c6574ad010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000b1010c4070616c6c65745f636f6e747261637473107761736d20436f6465496e666f04045400001401146f776e65720001384163636f756e7449644f663c543e00011c6465706f7369743501013042616c616e63654f663c543e000120726566636f756e7428010c75363400012c64657465726d696e69736d4901012c44657465726d696e69736d000120636f64655f6c656e10010c7533320000b5010c4070616c6c65745f636f6e7472616374731c73746f7261676530436f6e7472616374496e666f040454000020011c747269655f6964b9010118547269654964000124636f64655f6861736830012c436f6465486173683c543e00013473746f726167655f627974657310010c75333200013473746f726167655f6974656d7310010c75333200015073746f726167655f627974655f6465706f73697418013042616c616e63654f663c543e00015073746f726167655f6974656d5f6465706f73697418013042616c616e63654f663c543e00015073746f726167655f626173655f6465706f73697418013042616c616e63654f663c543e00015464656c65676174655f646570656e64656e63696573bd01011d01426f756e64656442547265654d61703c436f6465486173683c543e2c2042616c616e63654f663c543e2c20543a3a0a4d617844656c6567617465446570656e64656e636965733e0000b9010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000bd010c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560118045300000400c101013842547265654d61703c4b2c20563e0000c101042042547265654d617008044b013004560118000400c501000000c501000002c90100c90100000408301800cd010c4070616c6c65745f636f6e7472616374731c73746f726167655044656c6574696f6e51756575654d616e616765720404540000080138696e736572745f636f756e74657210010c75333200013864656c6574655f636f756e74657210010c7533320000d1010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e0000d5010c4070616c6c65745f636f6e747261637473207363686564756c65205363686564756c6504045400000c01186c696d697473d90101184c696d69747300014c696e737472756374696f6e5f77656967687473dd010154496e737472756374696f6e576569676874733c543e00013c686f73745f666e5f77656967687473e1010140486f7374466e576569676874733c543e0000d9010c4070616c6c65745f636f6e747261637473207363686564756c65184c696d69747300002801306576656e745f746f7069637310010c75333200011c676c6f62616c7310010c7533320001186c6f63616c7310010c753332000128706172616d657465727310010c7533320001306d656d6f72795f706167657310010c7533320001287461626c655f73697a6510010c75333200013462725f7461626c655f73697a6510010c75333200012c7375626a6563745f6c656e10010c75333200012c7061796c6f61645f6c656e10010c75333200013872756e74696d655f6d656d6f727910010c7533320000dd010c4070616c6c65745f636f6e747261637473207363686564756c6548496e737472756374696f6e5765696768747304045400000401106261736510010c7533320000e1010c4070616c6c65745f636f6e747261637473207363686564756c6534486f7374466e576569676874730404540000fc011863616c6c657224011857656967687400012c69735f636f6e7472616374240118576569676874000124636f64655f686173682401185765696768740001346f776e5f636f64655f6861736824011857656967687400014063616c6c65725f69735f6f726967696e24011857656967687400013863616c6c65725f69735f726f6f7424011857656967687400011c616464726573732401185765696768740001206761735f6c65667424011857656967687400011c62616c616e636524011857656967687400014476616c75655f7472616e7366657272656424011857656967687400013c6d696e696d756d5f62616c616e6365240118576569676874000130626c6f636b5f6e756d62657224011857656967687400010c6e6f772401185765696768740001347765696768745f746f5f666565240118576569676874000114696e707574240118576569676874000138696e7075745f7065725f62797465240118576569676874000120722372657475726e24011857656967687400013c72657475726e5f7065725f627974652401185765696768740001247465726d696e61746524011857656967687400011872616e646f6d2401185765696768740001346465706f7369745f6576656e7424011857656967687400015c6465706f7369745f6576656e745f7065725f746f7069632401185765696768740001586465706f7369745f6576656e745f7065725f6279746524011857656967687400013464656275675f6d65737361676524011857656967687400015864656275675f6d6573736167655f7065725f6279746524011857656967687400012c7365745f73746f726167652401185765696768740001607365745f73746f726167655f7065725f6e65775f627974652401185765696768740001607365745f73746f726167655f7065725f6f6c645f627974652401185765696768740001347365745f636f64655f68617368240118576569676874000134636c6561725f73746f72616765240118576569676874000158636c6561725f73746f726167655f7065725f62797465240118576569676874000140636f6e7461696e735f73746f72616765240118576569676874000164636f6e7461696e735f73746f726167655f7065725f6279746524011857656967687400012c6765745f73746f726167652401185765696768740001506765745f73746f726167655f7065725f6279746524011857656967687400013074616b655f73746f7261676524011857656967687400015474616b655f73746f726167655f7065725f627974652401185765696768740001207472616e7366657224011857656967687400011063616c6c24011857656967687400013464656c65676174655f63616c6c24011857656967687400015c63616c6c5f7472616e736665725f73757263686172676524011857656967687400015063616c6c5f7065725f636c6f6e65645f6279746524011857656967687400012c696e7374616e7469617465240118576569676874000178696e7374616e74696174655f7472616e736665725f737572636861726765240118576569676874000168696e7374616e74696174655f7065725f696e7075745f62797465240118576569676874000164696e7374616e74696174655f7065725f73616c745f62797465240118576569676874000134686173685f736861325f323536240118576569676874000158686173685f736861325f3235365f7065725f6279746524011857656967687400013c686173685f6b656363616b5f323536240118576569676874000160686173685f6b656363616b5f3235365f7065725f6279746524011857656967687400013c686173685f626c616b65325f323536240118576569676874000160686173685f626c616b65325f3235365f7065725f6279746524011857656967687400013c686173685f626c616b65325f313238240118576569676874000160686173685f626c616b65325f3132385f7065725f6279746524011857656967687400013465636473615f7265636f76657224011857656967687400015065636473615f746f5f6574685f61646472657373240118576569676874000138737232353531395f76657269667924011857656967687400015c737232353531395f7665726966795f7065725f627974652401185765696768740001407265656e7472616e63655f636f756e742401185765696768740001606163636f756e745f7265656e7472616e63655f636f756e7424011857656967687400014c696e7374616e74696174696f6e5f6e6f6e636524011857656967687400015c6164645f64656c65676174655f646570656e64656e637924011857656967687400016872656d6f76655f64656c65676174655f646570656e64656e63792401185765696768740000e5010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c7533320000e901084070616c6c65745f636f6e7472616374732c456e7669726f6e6d656e7404045400001801286163636f756e745f6964ed01017c456e7669726f6e6d656e74547970653c4163636f756e7449644f663c543e3e00011c62616c616e6365f1010174456e7669726f6e6d656e74547970653c42616c616e63654f663c543e3e00011068617368f50101c8456e7669726f6e6d656e74547970653c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a486173683e000118686173686572f90101d4456e7669726f6e6d656e74547970653c3c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a48617368696e673e00012474696d657374616d7001020170456e7669726f6e6d656e74547970653c4d6f6d656e744f663c543e3e000130626c6f636b5f6e756d62657205020188456e7669726f6e6d656e74547970653c426c6f636b4e756d626572466f723c543e3e0000ed01084070616c6c65745f636f6e7472616374733c456e7669726f6e6d656e74547970650404540100000000f101084070616c6c65745f636f6e7472616374733c456e7669726f6e6d656e74547970650404540118000000f501084070616c6c65745f636f6e7472616374733c456e7669726f6e6d656e74547970650404540130000000f901084070616c6c65745f636f6e7472616374733c456e7669726f6e6d656e745479706504045401fd01000000fd010c2873705f72756e74696d65187472616974732c426c616b6554776f323536000000000102084070616c6c65745f636f6e7472616374733c456e7669726f6e6d656e7454797065040454012c0000000502084070616c6c65745f636f6e7472616374733c456e7669726f6e6d656e7454797065040454011000000009020c4070616c6c65745f636f6e7472616374731870616c6c6574144572726f720404540001883c496e76616c69645363686564756c650000041901496e76616c6964207363686564756c6520737570706c6965642c20652e672e2077697468207a65726f20776569676874206f662061206261736963206f7065726174696f6e2e40496e76616c696443616c6c466c6167730001043501496e76616c696420636f6d62696e6174696f6e206f6620666c61677320737570706c69656420746f20607365616c5f63616c6c60206f7220607365616c5f64656c65676174655f63616c6c602e204f75744f66476173000204b854686520657865637574656420636f6e7472616374206578686175737465642069747320676173206c696d69742e504f7574707574427566666572546f6f536d616c6c0003040101546865206f75747075742062756666657220737570706c69656420746f206120636f6e7472616374204150492063616c6c2077617320746f6f20736d616c6c2e385472616e736665724661696c65640004083501506572666f726d696e672074686520726571756573746564207472616e73666572206661696c65642e2050726f6261626c7920626563617573652074686572652069736e277420656e6f75676894667265652062616c616e636520696e207468652073656e6465722773206163636f756e742e4c4d617843616c6c4465707468526561636865640005082101506572666f726d696e6720612063616c6c207761732064656e6965642062656361757365207468652063616c6c696e67206465707468207265616368656420746865206c696d6974946f6620776861742069732073706563696669656420696e20746865207363686564756c652e40436f6e74726163744e6f74466f756e64000604bc4e6f20636f6e74726163742077617320666f756e64206174207468652073706563696669656420616464726573732e30436f6465546f6f4c617267650007083d0154686520636f646520737570706c69656420746f2060696e7374616e74696174655f776974685f636f646560206578636565647320746865206c696d69742073706563696669656420696e207468654463757272656e74207363686564756c652e30436f64654e6f74466f756e64000804c44e6f20636f646520636f756c6420626520666f756e642061742074686520737570706c69656420636f646520686173682e40436f6465496e666f4e6f74466f756e64000904d84e6f20636f646520696e666f20636f756c6420626520666f756e642061742074686520737570706c69656420636f646520686173682e2c4f75744f66426f756e6473000a0425014120627566666572206f757473696465206f662073616e64626f78206d656d6f7279207761732070617373656420746f206120636f6e7472616374204150492066756e6374696f6e2e384465636f64696e674661696c6564000b042901496e7075742070617373656420746f206120636f6e7472616374204150492066756e6374696f6e206661696c656420746f206465636f646520617320657870656374656420747970652e3c436f6e747261637454726170706564000c0488436f6e7472616374207472617070656420647572696e6720657865637574696f6e2e3456616c7565546f6f4c61726765000d04cc5468652073697a6520646566696e656420696e2060543a3a4d617856616c756553697a6560207761732065786365656465642e605465726d696e617465645768696c655265656e7472616e74000e0819015465726d696e6174696f6e206f66206120636f6e7472616374206973206e6f7420616c6c6f776564207768696c652074686520636f6e747261637420697320616c7265616479e06f6e207468652063616c6c20737461636b2e2043616e2062652074726967676572656420627920607365616c5f7465726d696e617465602e38496e707574466f72776172646564000f044101607365616c5f63616c6c6020666f72776172646564207468697320636f6e74726163747320696e7075742e204974207468657265666f7265206973206e6f206c6f6e67657220617661696c61626c652e5052616e646f6d5375626a656374546f6f4c6f6e67001004d8546865207375626a6563742070617373656420746f20607365616c5f72616e646f6d60206578636565647320746865206c696d69742e34546f6f4d616e79546f706963730011041d0154686520616d6f756e74206f6620746f706963732070617373656420746f20607365616c5f6465706f7369745f6576656e747360206578636565647320746865206c696d69742e404e6f436861696e457874656e73696f6e00120c450154686520636861696e20646f6573206e6f742070726f76696465206120636861696e20657874656e73696f6e2e2043616c6c696e672074686520636861696e20657874656e73696f6e20726573756c74734d01696e2074686973206572726f722e204e6f74652074686174207468697320757375616c6c79202073686f756c646e27742068617070656e206173206465706c6f79696e67207375636820636f6e7472616374733069732072656a65637465642e444475706c6963617465436f6e7472616374001304c84120636f6e74726163742077697468207468652073616d65204163636f756e74496420616c7265616479206578697374732e5c5465726d696e61746564496e436f6e7374727563746f7200140cb84120636f6e74726163742073656c66206465737472756374656420696e2069747320636f6e7374727563746f722e00d0546869732063616e2062652074726967676572656420627920612063616c6c20746f20607365616c5f7465726d696e617465602e405265656e7472616e636544656e6965640015100d01412063616c6c20747269656420746f20696e766f6b65206120636f6e7472616374207468617420697320666c6167676564206173206e6f6e2d7265656e7472616e742e5d01546865206f6e6c79206f74686572206361757365206973207468617420612063616c6c2066726f6d206120636f6e747261637420696e746f207468652072756e74696d6520747269656420746f2063616c6c206261636b4901696e746f206070616c6c65742d636f6e747261637473602e205468697320776f756c64206d616b65207468652077686f6c652070616c6c6574207265656e7472616e7420776974682072656761726420746fbc636f6e747261637420636f646520657865637574696f6e207768696368206973206e6f7420737570706f727465642e7053746f726167654465706f7369744e6f74456e6f75676846756e647300160421014f726967696e20646f65736e2774206861766520656e6f7567682062616c616e636520746f20706179207468652072657175697265642073746f72616765206465706f736974732e7053746f726167654465706f7369744c696d69744578686175737465640017040d014d6f72652073746f72616765207761732063726561746564207468616e20616c6c6f776564206279207468652073746f72616765206465706f736974206c696d69742e24436f6465496e5573650018044901436f64652072656d6f76616c207761732064656e69656420626563617573652074686520636f6465206973207374696c6c20696e20757365206279206174206c65617374206f6e6520636f6e74726163742e40436f6e74726163745265766572746564001910250154686520636f6e74726163742072616e20746f20636f6d706c6574696f6e20627574206465636964656420746f20726576657274206974732073746f72616765206368616e6765732e4901506c65617365206e6f746520746861742074686973206572726f72206973206f6e6c792072657475726e65642066726f6d2065787472696e736963732e205768656e2063616c6c6564206469726563746c795d016f72207669612052504320616e20604f6b602077696c6c2062652072657475726e65642e20496e20746869732063617365207468652063616c6c6572206e6565647320746f20696e73706563742074686520666c616773c4746f2064657465726d696e652077686574686572206120726576657273696f6e206861732074616b656e20706c6163652e30436f646552656a6563746564001a20f854686520636f6e7472616374277320636f64652077617320666f756e6420746f20626520696e76616c696420647572696e672076616c69646174696f6e2e004d01546865206d6f7374206c696b656c79206361757365206f662074686973206973207468617420616e20415049207761732075736564207768696368206973206e6f7420737570706f727465642062792074686551016e6f64652e20546869732068617070656e7320696620616e206f6c646572206e6f6465206973207573656420776974682061206e65772076657273696f6e206f6620696e6b212e20547279207570646174696e67a8796f7572206e6f646520746f20746865206e657765737420617661696c61626c652076657273696f6e2e00510141206d6f72652064657461696c6564206572726f722063616e20626520666f756e64206f6e20746865206e6f646520636f6e736f6c65206966206465627567206d657373616765732061726520656e61626c6564a8627920737570706c79696e6720602d6c72756e74696d653a3a636f6e7472616374733d6465627567602e3c496e64657465726d696e6973746963001b042101416e20696e64657465726d697374696320636f646520776173207573656420696e206120636f6e746578742077686572652074686973206973206e6f74207065726d69747465642e4c4d6967726174696f6e496e50726f6772657373001c042501412070656e64696e67206d6967726174696f6e206e6565647320746f20636f6d706c657465206265666f7265207468652065787472696e7369632063616e2062652063616c6c65642e504e6f4d6967726174696f6e506572666f726d6564001d040d014d6967726174652064697370617463682063616c6c2077617320617474656d7074656420627574206e6f206d6967726174696f6e2077617320706572666f726d65642e784d617844656c6567617465446570656e64656e6369657352656163686564001e04150154686520636f6e747261637420686173207265616368656420697473206d6178696d756d206e756d626572206f662064656c656761746520646570656e64656e636965732e6844656c6567617465446570656e64656e63794e6f74466f756e64001f04150154686520646570656e64656e637920776173206e6f7420666f756e6420696e2074686520636f6e747261637427732064656c656761746520646570656e64656e636965732e7c44656c6567617465446570656e64656e6379416c7265616479457869737473002004f854686520636f6e747261637420616c726561647920646570656e6473206f6e2074686520676976656e2064656c656761746520646570656e64656e63792e8443616e6e6f7441646453656c66417344656c6567617465446570656e64656e6379002104290143616e206e6f742061646420612064656c656761746520646570656e64656e637920746f2074686520636f64652068617368206f662074686520636f6e747261637420697473656c662e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0d020c3470616c6c65745f61737365747314747970657330417373657444657461696c730c1c42616c616e63650118244163636f756e7449640100384465706f73697442616c616e63650118003001146f776e65720001244163636f756e7449640001186973737565720001244163636f756e74496400011461646d696e0001244163636f756e74496400011c667265657a65720001244163636f756e744964000118737570706c7918011c42616c616e636500011c6465706f7369741801384465706f73697442616c616e636500012c6d696e5f62616c616e636518011c42616c616e636500013469735f73756666696369656e74a80110626f6f6c0001206163636f756e747310010c75333200012c73756666696369656e747310010c753332000124617070726f76616c7310010c7533320001187374617475731102012c4173736574537461747573000011020c3470616c6c65745f6173736574731474797065732c417373657453746174757300010c104c6976650000001846726f7a656e0001002844657374726f79696e670002000015020000040810000019020c3470616c6c65745f6173736574731474797065733041737365744163636f756e74101c42616c616e63650118384465706f73697442616c616e636501181445787472610180244163636f756e74496401000010011c62616c616e636518011c42616c616e63650001187374617475731d0201344163636f756e74537461747573000118726561736f6e210201a84578697374656e6365526561736f6e3c4465706f73697442616c616e63652c204163636f756e7449643e0001146578747261800114457874726100001d020c3470616c6c65745f617373657473147479706573344163636f756e7453746174757300010c184c69717569640000001846726f7a656e0001001c426c6f636b65640002000021020c3470616c6c65745f6173736574731474797065733c4578697374656e6365526561736f6e081c42616c616e63650118244163636f756e7449640100011420436f6e73756d65720000002853756666696369656e740001002c4465706f73697448656c64040018011c42616c616e63650002003c4465706f736974526566756e6465640003002c4465706f73697446726f6d08000001244163636f756e744964000018011c42616c616e63650004000025020000040c1000000029020c3470616c6c65745f61737365747314747970657320417070726f76616c081c42616c616e63650118384465706f73697442616c616e6365011800080118616d6f756e7418011c42616c616e636500011c6465706f7369741801384465706f73697442616c616e636500002d020c3470616c6c65745f6173736574731474797065733441737365744d6574616461746108384465706f73697442616c616e6365011834426f756e646564537472696e670131020014011c6465706f7369741801384465706f73697442616c616e63650001106e616d6531020134426f756e646564537472696e6700011873796d626f6c31020134426f756e646564537472696e67000120646563696d616c73080108753800012469735f66726f7a656ea80110626f6f6c000031020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003401185665633c543e000035020c3470616c6c65745f6173736574731870616c6c6574144572726f720804540004490001502842616c616e63654c6f7700000415014163636f756e742062616c616e6365206d7573742062652067726561746572207468616e206f7220657175616c20746f20746865207472616e7366657220616d6f756e742e244e6f4163636f756e7400010490546865206163636f756e7420746f20616c74657220646f6573206e6f742065786973742e304e6f5065726d697373696f6e000204e8546865207369676e696e67206163636f756e7420686173206e6f207065726d697373696f6e20746f20646f20746865206f7065726174696f6e2e1c556e6b6e6f776e0003047854686520676976656e20617373657420494420697320756e6b6e6f776e2e1846726f7a656e00040474546865206f726967696e206163636f756e742069732066726f7a656e2e14496e5573650005047854686520617373657420494420697320616c72656164792074616b656e2e284261645769746e6573730006046c496e76616c6964207769746e657373206461746120676976656e2e384d696e42616c616e63655a65726f0007048c4d696e696d756d2062616c616e63652073686f756c64206265206e6f6e2d7a65726f2e4c556e617661696c61626c65436f6e73756d657200080c5901556e61626c6520746f20696e6372656d656e742074686520636f6e73756d6572207265666572656e636520636f756e74657273206f6e20746865206163636f756e742e20456974686572206e6f2070726f76696465724d017265666572656e63652065786973747320746f20616c6c6f772061206e6f6e2d7a65726f2062616c616e6365206f662061206e6f6e2d73656c662d73756666696369656e742061737365742c206f72206f6e65f06665776572207468656e20746865206d6178696d756d206e756d626572206f6620636f6e73756d65727320686173206265656e20726561636865642e2c4261644d657461646174610009045c496e76616c6964206d6574616461746120676976656e2e28556e617070726f766564000a04c44e6f20617070726f76616c20657869737473207468617420776f756c6420616c6c6f7720746865207472616e736665722e20576f756c64446965000b04350154686520736f75726365206163636f756e7420776f756c64206e6f74207375727669766520746865207472616e7366657220616e64206974206e6565647320746f207374617920616c6976652e34416c7265616479457869737473000c04845468652061737365742d6163636f756e7420616c7265616479206578697374732e244e6f4465706f736974000d04d45468652061737365742d6163636f756e7420646f65736e2774206861766520616e206173736f636961746564206465706f7369742e24576f756c644275726e000e04c4546865206f7065726174696f6e20776f756c6420726573756c7420696e2066756e6473206265696e67206275726e65642e244c6976654173736574000f0859015468652061737365742069732061206c69766520617373657420616e64206973206163746976656c79206265696e6720757365642e20557375616c6c7920656d697420666f72206f7065726174696f6e7320737563681d016173206073746172745f64657374726f796020776869636820726571756972652074686520617373657420746f20626520696e20612064657374726f79696e672073746174652e3041737365744e6f744c697665001004c8546865206173736574206973206e6f74206c6976652c20616e64206c696b656c79206265696e672064657374726f7965642e3c496e636f7272656374537461747573001104b054686520617373657420737461747573206973206e6f7420746865206578706563746564207374617475732e244e6f7446726f7a656e001204d85468652061737365742073686f756c642062652066726f7a656e206265666f72652074686520676976656e206f7065726174696f6e2e3843616c6c6261636b4661696c65640013048443616c6c6261636b20616374696f6e20726573756c74656420696e206572726f72048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3902102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730129011043616c6c011d01245369676e6174757265013d02144578747261015502000400340000003d02082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040041020148656432353531393a3a5369676e61747572650000001c53723235353139040049020148737232353531393a3a5369676e617475726500010014456364736104004d02014065636473613a3a5369676e61747572650002000041020c1c73705f636f72651c65643235353139245369676e617475726500000400450201205b75383b2036345d0000450200000340000000080049020c1c73705f636f72651c73723235353139245369676e617475726500000400450201205b75383b2036345d00004d020c1c73705f636f7265146563647361245369676e617475726500000400510201205b75383b2036355d0000510200000341000000080055020000042059025d0261026502690271027502790200590210306672616d655f73797374656d28657874656e73696f6e7354636865636b5f6e6f6e5f7a65726f5f73656e64657248436865636b4e6f6e5a65726f53656e646572040454000000005d0210306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000610210306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000650210306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000690210306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c697479040454000004006d02010c45726100006d02102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000710210306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400c00120543a3a4e6f6e63650000750210306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b576569676874040454000000007902086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e74040454000004003501013042616c616e63654f663c543e0000281853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b576569676874010020180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b486173680101040510308000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510340400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801003080000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e18446967657374010038040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004804001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f706963730101040230b40400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e005901205468652076616c756520686173207468652074797065206028426c6f636b4e756d626572466f723c543e2c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000bc04000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e740100a80400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100a80400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000ac040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01c801541830426c6f636b57656967687473d8f901025b1f5d000b00204aa9d10113ffffffffffffffffc2a0a91d00010bd05f9fa62e011366666666666666a6010b0098f73e5d0113ffffffffffffffbf010000c2a0a91d00010bd0e7f110a3011366666666666666e6010b00204aa9d10113ffffffffffffffff01070088526a74130000000000000040c2a0a91d0000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468e83000003c00000050000000500004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101060090000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e204462576569676874f04040787d010000000000e1f505000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ef4f102607375627374726174652d636f6e7472616374732d6e6f6465607375627374726174652d636f6e7472616374732d6e6f646501000000640000000100000028df6acb689907609b0400000037e397fc7c91f5e40200000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a804000000f3ff14d5ab5270590300000068b66ba122c93fa70200000001000000010484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669780901082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e010d01006052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100110104000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e00000000011c5574696c697479000115010178044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e015d01022454696d657374616d70012454696d657374616d70080c4e6f7701002c20000000000000000004a0205468652063757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e244469645570646174650100a8040010d82057686574686572207468652074696d657374616d7020686173206265656e207570646174656420696e207468697320626c6f636b2e00550120546869732076616c7565206973207570646174656420746f206074727565602075706f6e207375636365737366756c207375626d697373696f6e206f6620612074696d657374616d702062792061206e6f64652e4501204974206973207468656e20636865636b65642061742074686520656e64206f66206561636820626c6f636b20657865637574696f6e20696e2074686520606f6e5f66696e616c697a656020686f6f6b2e0121010004344d696e696d756d506572696f642c200500000000000000188c20546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e004d012042652061776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e4901206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f61012064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20466f72206578616d706c652c20696e2074686520417572612070616c6c65742069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e00032042616c616e636573012042616c616e6365731c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b7301010402006101040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e20526573657276657301010402007101040004a4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e14486f6c647301010402007d010400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a6573010104020091010400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e012501018414484578697374656e7469616c4465706f736974184000ca9a3b00000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000008f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e2c4d61785265736572766573101032000000040d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e204d6178486f6c647310103200000004190120546865206d6178696d756d206e756d626572206f6620686f6c647320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e284d6178467265657a657310100000000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e019d010428417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e0000000005485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100a10140000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100a50104000000018c04604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c6974706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f7269747960004d0120546869732076616c7565206973206d756c7469706c656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e0006105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e013d0101900001a9010724436f6e7472616374730124436f6e7472616374731c305072697374696e65436f64650001040630ad01040004cc2041206d617070696e672066726f6d206120636f6e7472616374277320636f6465206861736820746f2069747320636f64652e28436f6465496e666f4f660001040630b101040004e02041206d617070696e672066726f6d206120636f6e7472616374277320636f6465206861736820746f2069747320636f646520696e666f2e144e6f6e636501002c200000000000000000581d0120546869732069732061202a2a6d6f6e6f746f6e69632a2a20636f756e74657220696e6372656d656e746564206f6e20636f6e747261637420696e7374616e74696174696f6e2e0005012054686973206973207573656420696e206f7264657220746f2067656e657261746520756e6971756520747269652069647320666f7220636f6e7472616374732e2901205468652074726965206964206f662061206e657720636f6e74726163742069732063616c63756c617465642066726f6d2068617368286163636f756e745f69642c206e6f6e6365292e350120546865206e6f6e63652069732072657175697265642062656361757365206f74686572776973652074686520666f6c6c6f77696e672073657175656e636520776f756c64206c65616420746f84206120706f737369626c6520636f6c6c6973696f6e206f662073746f726167653a006820312e204372656174652061206e657720636f6e74726163742e6c20322e205465726d696e6174652074686520636f6e74726163742efc20332e20496d6d6564696174656c792072656372656174652074686520636f6e74726163742077697468207468652073616d65206163636f756e745f69642e00450120546869732069732062616420626563617573652074686520636f6e74656e7473206f6620612074726965206172652064656c65746564206c617a696c7920616e64207468657265206d6967687420626559012073746f72616765206f6620746865206f6c6420696e7374616e74696174696f6e207374696c6c20696e206974207768656e20746865206e657720636f6e747261637420697320637265617465642e20506c656173655901206e6f746520746861742077652063616e2774207265706c6163652074686520636f756e7465722062792074686520626c6f636b206e756d6265722062656361757365207468652073657175656e63652061626f766551012063616e2068617070656e20696e207468652073616d6520626c6f636b2e20576520616c736f2063616e2774206b65657020746865206163636f756e7420636f756e74657220696e206d656d6f7279206f6e6c79490120626563617573652073746f7261676520697320746865206f6e6c792077617920746f20636f6d6d756e6963617465206163726f737320646966666572656e742065787472696e7369637320696e20746865302073616d6520626c6f636b2e001c2023204e6f7465003d0120446f206e6f742075736520697420746f2064657465726d696e6520746865206e756d626572206f6620636f6e7472616374732e20497420776f6e27742062652064656372656d656e74656420696664206120636f6e74726163742069732064657374726f7965642e38436f6e7472616374496e666f4f660001040500b50104000ca82054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e3444656c6574696f6e51756575650001040510b901040010c8204576696374656420636f6e7472616374732074686174206177616974206368696c6420747269652064656c6574696f6e2e004901204368696c6420747269652064656c6574696f6e2069732061206865617679206f7065726174696f6e20646570656e64696e67206f6e2074686520616d6f756e74206f662073746f72616765206974656d7341012073746f72656420696e207361696420747269652e205468657265666f72652074686973206f7065726174696f6e20697320706572666f726d6564206c617a696c7920696e20606f6e5f69646c65602e5044656c6574696f6e5175657565436f756e7465720100cd01200000000000000000084d0120412070616972206f66206d6f6e6f746f6e696320636f756e74657273207573656420746f20747261636b20746865206c617465737420636f6e7472616374206d61726b656420666f722064656c6574696f6ea820616e6420746865206c61746573742064656c6574656420636f6e747261637420696e2071756575652e4c4d6967726174696f6e496e50726f67726573730000d10104000861012041206d6967726174696f6e2063616e207370616e206163726f7373206d756c7469706c6520626c6f636b732e20546869732073746f7261676520646566696e6573206120637572736f7220746f20747261636b207468654d012070726f6772657373206f6620746865206d6967726174696f6e2c20656e61626c696e6720757320746f20726573756d652066726f6d20746865206c61737420636f6d706c6574656420706f736974696f6e2e01410101982c205363686564756c65d50151050400000000010000000400008000000010000000001000000001000020000000004000000000004027130000b6b5140018f222dd06f129baf81507012a762b1a0018362c0b000cd2170a000c4afb1400185aad160018b616650018a233150018ca941400189230140018129f1400181e4c5800387a4111001871100000b41d0600032470934d4952b2927d00285278e80028fe36ae1e31276d0b0062b90e001c391100a687811f95048d0800b90804f6e2264849308a30741f850410041e81480785044d0104d2355207a504c90f048642721fa5040d0a04ee4cf9266127261fc876852aee7d506535290e4ed290ad515d11006e7d8df7ad2a0265cd1dd527ad1e003120007273180020b91100eef830002049350026531d0020991300cad71e002091130016eaf90a35016e5ed902a812c0610dc1012d6004be060b000cc66a1300a02a5409000c1209661fb9280e33351f2128046820436f7374207363686564756c6520616e64206c696d6974732e384465706f736974506572427974651840404b4c000000000000000000000000001411012054686520616d6f756e74206f662062616c616e636520612063616c6c65722068617320746f2070617920666f7220656163682062797465206f662073746f726167652e001c2023204e6f7465002901204368616e67696e6720746869732076616c756520666f7220616e206578697374696e6720636861696e206d69676874206e65656420612073746f72616765206d6967726174696f6e2e4c44656661756c744465706f7369744c696d697418400000a08fe661000000000000000000000445012046616c6c6261636b2076616c756520746f206c696d6974207468652073746f72616765206465706f7369742069662069742773206e6f74206265696e6720736574206279207468652063616c6c65722e384465706f7369745065724974656d184000e876481700000000000000000000001405012054686520616d6f756e74206f662062616c616e636520612063616c6c65722068617320746f2070617920666f7220656163682073746f72616765206974656d2e001c2023204e6f7465002901204368616e67696e6720746869732076616c756520666f7220616e206578697374696e6720636861696e206d69676874206e65656420612073746f72616765206d6967726174696f6e2e70436f6465486173684c6f636b75704465706f73697450657263656e74e5011000000000104501205468652070657263656e74616765206f66207468652073746f72616765206465706f73697420746861742073686f756c642062652068656c6420666f72207573696e67206120636f646520686173682e5d0120496e7374616e74696174696e67206120636f6e74726163742c206f722063616c6c696e67205b60636861696e5f657874656e73696f6e3a3a4578743a3a6164645f64656c65676174655f646570656e64656e6379605d49012070726f74656374732074686520636f64652066726f6d206265696e672072656d6f7665642e20496e206f7264657220746f2070726576656e7420616275736520746865736520616374696f6e7320617265c42070726f746563746564207769746820612070657263656e74616765206f662074686520636f6465206465706f7369742e284d6178436f64654c656e10100000040014c020546865206d6178696d756d206c656e677468206f66206120636f6e747261637420636f646520696e2062797465732e005901205468652076616c75652073686f756c642062652063686f73656e206361726566756c6c792074616b696e6720696e746f20746865206163636f756e7420746865206f766572616c6c206d656d6f7279206c696d6974f020796f75722072756e74696d65206861732c2061732077656c6c20617320746865205b6d6178696d756d20616c6c6f7765642063616c6c737461636b5d012064657074685d28236173736f636961746564747970652e43616c6c537461636b292e204c6f6f6b20696e746f207468652060696e746567726974795f7465737428296020666f7220736f6d6520696e7369676874732e404d617853746f726167654b65794c656e10108000000004e020546865206d6178696d756d20616c6c6f7761626c65206c656e67746820696e20627974657320666f722073746f72616765206b6579732e5c4d617844656c6567617465446570656e64656e6369657310102000000008290120546865206d6178696d756d206e756d626572206f662064656c65676174655f646570656e64656e636965732074686174206120636f6e74726163742063616e206c6f636b2077697468cc205b60636861696e5f657874656e73696f6e3a3a4578743a3a6164645f64656c65676174655f646570656e64656e6379605d2e5c556e73616665556e737461626c65496e74657266616365a80401241101204d616b6520636f6e74726163742063616c6c61626c652066756e6374696f6e73206d61726b65642061732060235b756e737461626c655d6020617661696c61626c652e003d0120436f6e7472616374732074686174207573652060235b756e737461626c655d602066756e6374696f6e7320776f6e27742062652061626c6520746f2062652075706c6f6164656420756e6c657373450120746869732069732073657420746f206074727565602e2054686973206973206f6e6c79206d65616e7420666f7220746573746e65747320616e6420646576206e6f64657320696e206f7264657220746f78206578706572696d656e742077697468206e65772066656174757265732e00282023205761726e696e6700c020446f202a2a6e6f742a2a2073657420746f20607472756560206f6e2070726f64756374696f6e7320636861696e732e444d617844656275674275666665724c656e10100000200004c420546865206d6178696d756d206c656e677468206f66207468652064656275672062756666657220696e2062797465732e2c456e7669726f6e6d656e74e90100102501205479706520746861742062756e646c657320746f67657468657220616c6c207468652072756e74696d6520636f6e666967757261626c6520696e746572666163652074797065732e0035012054686973206973206e6f742061207265616c20636f6e6669672e205765206a757374206d656e74696f6e207468652074797065206865726520617320636f6e7374616e7420736f2074686174f0206974732074797065206170706561727320696e20746865206d657461646174612e204f6e6c792076616c69642076616c756520697320602829602e010902081841737365747301184173736574731014417373657400010402100d02040004542044657461696c73206f6620616e2061737365742e1c4163636f756e74000108020215021902040004e42054686520686f6c64696e6773206f662061207370656369666963206163636f756e7420666f7220612073706563696669632061737365742e24417070726f76616c7300010c0202022502290204000c590120417070726f7665642062616c616e6365207472616e73666572732e2046697273742062616c616e63652069732074686520616d6f756e7420617070726f76656420666f72207472616e736665722e205365636f6e64e82069732074686520616d6f756e74206f662060543a3a43757272656e63796020726573657276656420666f722073746f72696e6720746869732e4901204669727374206b6579206973207468652061737365742049442c207365636f6e64206b657920697320746865206f776e657220616e64207468697264206b6579206973207468652064656c65676174652e204d6574616461746101010402102d025000000000000000000000000000000000000000000458204d65746164617461206f6620616e2061737365742e014d0101a41c4052656d6f76654974656d734c696d69741010e80300000c5101204d6178206e756d626572206f66206974656d7320746f2064657374726f7920706572206064657374726f795f6163636f756e74736020616e64206064657374726f795f617070726f76616c73602063616c6c2e003901204d75737420626520636f6e6669677572656420746f20726573756c7420696e2061207765696768742074686174206d616b657320656163682063616c6c2066697420696e206120626c6f636b2e3041737365744465706f73697418400000c16ff2862300000000000000000004f82054686520626173696320616d6f756e74206f662066756e64732074686174206d75737420626520726573657276656420666f7220616e2061737365742e4c41737365744163636f756e744465706f736974184000407a10f35a000000000000000000000845012054686520616d6f756e74206f662066756e64732074686174206d75737420626520726573657276656420666f722061206e6f6e2d70726f7669646572206173736574206163636f756e7420746f20626530206d61696e7461696e65642e4c4d657461646174614465706f7369744261736518400080c6a47e8d030000000000000000000451012054686520626173696320616d6f756e74206f662066756e64732074686174206d757374206265207265736572766564207768656e20616464696e67206d6574616461746120746f20796f75722061737365742e584d657461646174614465706f73697450657242797465184000407a10f35a0000000000000000000008550120546865206164646974696f6e616c2066756e64732074686174206d75737420626520726573657276656420666f7220746865206e756d626572206f6620627974657320796f752073746f726520696e20796f757228206d657461646174612e3c417070726f76616c4465706f736974184000407a10f35a000000000000000000000421012054686520616d6f756e74206f662066756e64732074686174206d757374206265207265736572766564207768656e206372656174696e672061206e657720617070726f76616c2e2c537472696e674c696d697410103200000004e020546865206d6178696d756d206c656e677468206f662061206e616d65206f722073796d626f6c2073746f726564206f6e2d636861696e2e013502093902042048436865636b4e6f6e5a65726f53656e64657259028040436865636b5370656356657273696f6e5d021038436865636b547856657273696f6e61021030436865636b47656e6573697365023038436865636b4d6f7274616c69747969023028436865636b4e6f6e63657102802c436865636b576569676874750280604368617267655472616e73616374696f6e5061796d656e74790280a0'; diff --git a/packages/types-support/src/metadata/v14/substrate-contracts-node-rpc.ts b/packages/types-support/src/metadata/v14/substrate-contracts-node-rpc.ts new file mode 100644 index 000000000000..9a0f35e25114 --- /dev/null +++ b/packages/types-support/src/metadata/v14/substrate-contracts-node-rpc.ts @@ -0,0 +1,108 @@ +// Copyright 2017-2024 @polkadot/types-support authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/* eslint-disable */ + +// cargo run --release -- purge-chain -y --dev && cargo run --release -- --dev + +export default { + "methods": [ + "account_nextIndex", + "author_hasKey", + "author_hasSessionKeys", + "author_insertKey", + "author_pendingExtrinsics", + "author_removeExtrinsic", + "author_rotateKeys", + "author_submitAndWatchExtrinsic", + "author_submitExtrinsic", + "author_unwatchExtrinsic", + "chainHead_unstable_body", + "chainHead_unstable_call", + "chainHead_unstable_continue", + "chainHead_unstable_follow", + "chainHead_unstable_genesisHash", + "chainHead_unstable_header", + "chainHead_unstable_stopOperation", + "chainHead_unstable_storage", + "chainHead_unstable_unfollow", + "chainHead_unstable_unpin", + "chain_getBlock", + "chain_getBlockHash", + "chain_getFinalisedHead", + "chain_getFinalizedHead", + "chain_getHead", + "chain_getHeader", + "chain_getRuntimeVersion", + "chain_subscribeAllHeads", + "chain_subscribeFinalisedHeads", + "chain_subscribeFinalizedHeads", + "chain_subscribeNewHead", + "chain_subscribeNewHeads", + "chain_subscribeRuntimeVersion", + "chain_unsubscribeAllHeads", + "chain_unsubscribeFinalisedHeads", + "chain_unsubscribeFinalizedHeads", + "chain_unsubscribeNewHead", + "chain_unsubscribeNewHeads", + "chain_unsubscribeRuntimeVersion", + "childstate_getKeys", + "childstate_getKeysPaged", + "childstate_getKeysPagedAt", + "childstate_getStorage", + "childstate_getStorageEntries", + "childstate_getStorageHash", + "childstate_getStorageSize", + "offchain_localStorageGet", + "offchain_localStorageSet", + "payment_queryFeeDetails", + "payment_queryInfo", + "state_call", + "state_callAt", + "state_getChildReadProof", + "state_getKeys", + "state_getKeysPaged", + "state_getKeysPagedAt", + "state_getMetadata", + "state_getPairs", + "state_getReadProof", + "state_getRuntimeVersion", + "state_getStorage", + "state_getStorageAt", + "state_getStorageHash", + "state_getStorageHashAt", + "state_getStorageSize", + "state_getStorageSizeAt", + "state_queryStorage", + "state_queryStorageAt", + "state_subscribeRuntimeVersion", + "state_subscribeStorage", + "state_traceBlock", + "state_unsubscribeRuntimeVersion", + "state_unsubscribeStorage", + "subscribe_newHead", + "system_accountNextIndex", + "system_addLogFilter", + "system_addReservedPeer", + "system_chain", + "system_chainType", + "system_dryRun", + "system_dryRunAt", + "system_health", + "system_localListenAddresses", + "system_localPeerId", + "system_name", + "system_nodeRoles", + "system_peers", + "system_properties", + "system_removeReservedPeer", + "system_reservedPeers", + "system_resetLogFilter", + "system_syncState", + "system_unstable_networkState", + "system_version", + "transaction_unstable_submitAndWatch", + "transaction_unstable_unwatch", + "unsubscribe_newHead" + ] +}; diff --git a/packages/types-support/src/metadata/v14/substrate-contracts-node-ver.ts b/packages/types-support/src/metadata/v14/substrate-contracts-node-ver.ts new file mode 100644 index 000000000000..bafd22de2fc2 --- /dev/null +++ b/packages/types-support/src/metadata/v14/substrate-contracts-node-ver.ts @@ -0,0 +1,58 @@ +// Copyright 2017-2024 @polkadot/types-support authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/* eslint-disable */ + +// cargo run --release -- purge-chain -y --dev && cargo run --release -- --dev + +export default { + "specName": "substrate-contracts-node", + "implName": "substrate-contracts-node", + "authoringVersion": 1, + "specVersion": 100, + "implVersion": 1, + "apis": [ + [ + "0xdf6acb689907609b", + 4 + ], + [ + "0x37e397fc7c91f5e4", + 2 + ], + [ + "0x40fe3ad401f8959a", + 6 + ], + [ + "0xd2bc9897eed08f15", + 3 + ], + [ + "0xf78b278be53f454c", + 2 + ], + [ + "0xab3c0572291feb8b", + 1 + ], + [ + "0xbc9d89904f5b923f", + 1 + ], + [ + "0x37c8bb1350a9a2a8", + 4 + ], + [ + "0xf3ff14d5ab527059", + 3 + ], + [ + "0x68b66ba122c93fa7", + 2 + ] + ], + "transactionVersion": 1, + "stateVersion": 1 +}; diff --git a/scripts/metadata-get.mjs b/scripts/metadata-get.mjs index 270020bd314e..8b4ca9feff1b 100644 --- a/scripts/metadata-get.mjs +++ b/scripts/metadata-get.mjs @@ -9,7 +9,8 @@ const PREAMBLE = '// Copyright 2017-2024 @polkadot/types-support authors & contr const CMD = { kusama: `${PREAMBLE}// cargo run --release -- purge-chain -y --chain kusama-dev && cargo run --release -- --chain kusama-dev --alice --force-authoring\n\nexport default`, polkadot: `${PREAMBLE}// cargo run --release -- purge-chain -y --dev && cargo run --release -- --dev\n\nexport default`, - substrate: `${PREAMBLE}// cargo run --release -- purge-chain -y --dev && cargo run --release -- --dev\n\nexport default` + substrate: `${PREAMBLE}// cargo run --release -- purge-chain -y --dev && cargo run --release -- --dev\n\nexport default`, + 'substrate-contracts-node': `${PREAMBLE}// cargo run --release -- purge-chain -y --dev && cargo run --release -- --dev\n\nexport default` }; let requestId = 0; From a028c554ee4260af08084c1c4818053a076e0577 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Mon, 26 Feb 2024 17:19:43 +0100 Subject: [PATCH 12/25] draft implementation with version metadata --- packages/api-contract/src/Abi/index.ts | 122 +++++++++++------- .../src/Abi/toLatestCompatible.ts | 46 +++++++ .../src/interfaces/contractsAbi/types.ts | 22 +++- 3 files changed, 140 insertions(+), 50 deletions(-) create mode 100644 packages/api-contract/src/Abi/toLatestCompatible.ts diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 0b05795f1782..2b8dd16643e0 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,15 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec, EventRecord } from '@polkadot/types/interfaces'; import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { Option, TypeRegistry } from '@polkadot/types'; +import { type ChainProperties, type ContractConstructorSpecLatest, type ContractMessageParamSpecLatest, type ContractMessageSpecLatest, type ContractMetadata, type ContractMetadataVersion, type ContractProjectInfo, type ContractTypeSpec, type EventRecord, isV5Metadata, type SupportedContractMetadata } from '@polkadot/types/interfaces'; import { TypeDefInfo } from '@polkadot/types-create'; import { assertReturn, compactAddLength, compactStripLength, isBn, isNumber, isObject, isString, isUndefined, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util'; -import { convertVersions, enumVersions } from './toLatest.js'; +import { convertVersions as convertVersionsCompatible, enumVersions } from './toLatestCompatible.js'; interface AbiJson { version?: string; @@ -32,7 +32,7 @@ function findMessage (list: T[], messageOrId: T | string return assertReturn(message, () => `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`); } -function getLatestMeta (registry: Registry, json: AbiJson): ContractMetadataLatest { +function getMetadata (registry: Registry, json: AbiJson): [SupportedContractMetadata, ContractMetadataVersion] { // this is for V1, V2, V3 const vx = enumVersions.find((v) => isObject(json[v])); @@ -50,20 +50,23 @@ function getLatestMeta (registry: Registry, json: AbiJson): ContractMetadataLate ? { [`V${jsonVersion}`]: json } : { V0: json } ); - const converter = convertVersions.find(([v]) => metadata[`is${v}`]); + const converter = convertVersionsCompatible.find(([v]) => metadata[`is${v}`]); if (!converter) { throw new Error(`Unable to convert ABI with version ${metadata.type} to latest`); } - return converter[1](registry, metadata[`as${converter[0]}`]); + const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); + + return [upgradedMetadata, metadata.type]; } -function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, ContractMetadataLatest, ContractProjectInfo] { +function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, SupportedContractMetadata, ContractProjectInfo, ContractMetadataVersion] { const registry = new TypeRegistry(); const info = registry.createType('ContractProjectInfo', json) as unknown as ContractProjectInfo; - const latest = getLatestMeta(registry, json as unknown as AbiJson); - const lookup = registry.createType('PortableRegistry', { types: latest.types }, true); + // const latest = getLatestMeta(registry, json as unknown as AbiJson); + const [metadata, version] = getMetadata(registry, json as unknown as AbiJson); + const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); // attach the lookup to the registry - now the types are known registry.setLookup(lookup); @@ -77,7 +80,7 @@ function parseJson (json: Record, chainProperties?: ChainProper lookup.getTypeDef(id) ); - return [json, registry, latest, info]; + return [json, registry, metadata, info, version]; } /** @@ -102,12 +105,13 @@ export class Abi { readonly info: ContractProjectInfo; readonly json: Record; readonly messages: AbiMessage[]; - readonly metadata: ContractMetadataLatest; + readonly metadata: SupportedContractMetadata; + readonly version: ContractMetadataVersion; readonly registry: Registry; readonly environment = new Map(); constructor (abiJson: Record | string, chainProperties?: ChainProperties) { - [this.json, this.registry, this.metadata, this.info] = parseJson( + [this.json, this.registry, this.metadata, this.info, this.version] = parseJson( isString(abiJson) ? JSON.parse(abiJson) as Record : abiJson, @@ -123,8 +127,8 @@ export class Abi { : null }) ); - this.events = this.metadata.spec.events.map((spec: ContractEventSpecLatest, index) => - this.#createEvent(spec, index) + this.events = this.metadata.spec.events.map((_, index) => + this.#createEvent(index) ); this.messages = this.metadata.spec.messages.map((spec: ContractMessageSpecLatest, index): AbiMessage => this.#createMessage(spec, index, { @@ -163,34 +167,37 @@ export class Abi { * Warning: Unstable API, bound to change */ public decodeEvent (record: EventRecord): DecodedEvent { - // TODO we could double check here if record is actually section `contract` and type `ContractExecution` or `ContractEmitted` const data = record.event.data[1] as Bytes; - const signatureTopic = record.topics[0]; - - if (signatureTopic !== undefined) { - const event = this.events.find((e) => e.signatureTopic !== undefined && e.signatureTopic === signatureTopic.toHex()); + switch (this.version) { + case 'V4': + case 'V3': + case 'V2': + case 'V1': - if (event) { - return event.fromU8a(data.subarray(0)); - } else { - throw new Error(`Unable to find event with signature_topic ${signatureTopic.toHex()}`); - } - } else { - if (!data) { - throw new Error('Unable to find event data'); - } + case 'V0':{ + const index = data[0]; - // otherwise fallback to using the index to determine event - ink! v4 downwards - const index = data[0]; + const event = this.events[index]; - const event = this.events[index]; + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } - if (!event) { - throw new Error(`Unable to find event with index ${index}`); + return event.fromU8a(data.subarray(1)); } - return event.fromU8a(data.subarray(1)); + // Latest + default: { + const signatureTopic = record.topics[0]; + const event = this.events.find((e) => e.signatureTopic !== undefined && e.signatureTopic === signatureTopic.toHex()); + + if (event) { + return event.fromU8a(data.subarray(0)); + } else { + throw new Error(`Unable to find event with signature_topic ${signatureTopic.toHex()}`); + } + } } } @@ -254,22 +261,39 @@ export class Abi { }); }; - #createEvent = (spec: ContractEventSpecLatest, index: number): AbiEvent => { - const args = this.#createArgs(spec.args, spec); - - const event = { - args, - docs: spec.docs.map((d) => d.toString()), - fromU8a: (data: Uint8Array): DecodedEvent => ({ - args: this.#decodeArgs(args, data), - event - }), - identifier: [spec.module_path, spec.label].filter((t) => !t.isEmpty).join('::'), - index, - signatureTopic: spec.signature_topic.toHex() || undefined - }; - - return event; + #createEvent = (index: number): AbiEvent => { + if (isV5Metadata(this.metadata, this.version)) { + const spec = this.metadata.spec.events[index]; + const args = this.#createArgs(spec.args, spec); + const event = { + args, + docs: spec.docs.map((d) => d.toString()), + fromU8a: (data: Uint8Array): DecodedEvent => ({ + args: this.#decodeArgs(args, data), + event + }), + identifier: [spec.module_path, spec.label].filter((t) => !t.isEmpty).join('::'), + index, + signatureTopic: spec.signature_topic.toHex() || undefined + }; + + return event; + } else { + const spec = this.metadata.spec.events[index]; + const args = this.#createArgs(spec.args, spec); + const event = { + args, + docs: spec.docs.map((d) => d.toString()), + fromU8a: (data: Uint8Array): DecodedEvent => ({ + args: this.#decodeArgs(args, data), + event + }), + identifier: spec.label.toString(), + index + }; + + return event; + } }; #createMessage = (spec: ContractMessageSpecLatest | ContractConstructorSpecLatest, index: number, add: Partial = {}): AbiMessage => { diff --git a/packages/api-contract/src/Abi/toLatestCompatible.ts b/packages/api-contract/src/Abi/toLatestCompatible.ts new file mode 100644 index 000000000000..c8f661953090 --- /dev/null +++ b/packages/api-contract/src/Abi/toLatestCompatible.ts @@ -0,0 +1,46 @@ +// Copyright 2017-2024 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ContractMetadataLatest, ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; + +import { v0ToV1 } from './toV1.js'; +import { v1ToV2 } from './toV2.js'; +import { v2ToV3 } from './toV3.js'; +import { v3ToV4 } from './toV4.js'; + +// The versions where an enum is used, aka V0 is missing +// (Order from newest, i.e. we expect more on newest vs oldest) +export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1'] as const; + +type Versions = typeof enumVersions[number] | 'V0'; + +type Converter = (registry: Registry, vx: any) => ContractMetadataV4 | ContractMetadataV5; + +// Helper to convert metadata from one step to the next +function createConverter (next: (registry: Registry, input: O) => ContractMetadataLatest, step: (registry: Registry, input: I) => O): (registry: Registry, input: I) => ContractMetadataLatest { + return (registry: Registry, input: I): ContractMetadataLatest => + next(registry, step(registry, input)); +} + +export function v5ToLatestCompatible (_registry: Registry, v5: ContractMetadataV5): ContractMetadataV5 { + return v5; +} + +export function v4ToLatestCompatible (_registry: Registry, v4: ContractMetadataV4): ContractMetadataV4 { + return v4; +} + +export const v3ToLatestCompatible = /*#__PURE__*/ createConverter(v4ToLatestCompatible, v3ToV4); +export const v2ToLatestCompatible = /*#__PURE__*/ createConverter(v3ToLatestCompatible, v2ToV3); +export const v1ToLatestCompatible = /*#__PURE__*/ createConverter(v2ToLatestCompatible, v1ToV2); +export const v0ToLatestCompatible = /*#__PURE__*/ createConverter(v1ToLatestCompatible, v0ToV1); + +export const convertVersions: [Versions, Converter][] = [ + ['V5', v5ToLatestCompatible], + ['V4', v4ToLatestCompatible], + ['V3', v3ToLatestCompatible], + ['V2', v2ToLatestCompatible], + ['V1', v1ToLatestCompatible], + ['V0', v0ToLatestCompatible] +]; diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index b6f13243a88d..f1c7ce64c6c2 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -149,6 +149,9 @@ export interface ContractEventParamSpecV2 extends Struct { /** @name ContractEventSpecLatest */ export interface ContractEventSpecLatest extends ContractEventSpecV3 {} +/** @name SupportedContractEventSpec */ +export type SupportedContractEventSpec = SupportedContractMetadata['spec']['events'][number] + /** @name ContractEventSpecV0 */ export interface ContractEventSpecV0 extends Struct { readonly name: Text; @@ -290,6 +293,11 @@ export interface ContractMessageSpecV3 extends Struct { readonly default: bool; } + + +/** @name ContractMetadataVersion */ +export type ContractMetadataVersion ='V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; + /** @name ContractMetadata */ export interface ContractMetadata extends Enum { readonly isV0: boolean; @@ -304,12 +312,24 @@ export interface ContractMetadata extends Enum { readonly asV4: ContractMetadataV4; readonly isV5: boolean; readonly asV5: ContractMetadataV5; - readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; + readonly type: ContractMetadataVersion; } + /** @name ContractMetadataLatest */ export interface ContractMetadataLatest extends ContractMetadataV5 {} +/** @name SupportedContractMetadata */ +export type SupportedContractMetadata = ContractMetadataV5 | ContractMetadataV4 + +export const isV4Metadata = (metadata: SupportedContractMetadata, version: ContractMetadataVersion): metadata is ContractMetadataV4 =>{ + return version === 'V4' +} + +export const isV5Metadata = (metadata: SupportedContractMetadata, version: ContractMetadataVersion): metadata is ContractMetadataV5 =>{ + return version === 'V5' +} + /** @name ContractMetadataV0 */ export interface ContractMetadataV0 extends Struct { readonly metadataVersion: Text; From 3e0d8d1b61693c6a6ffa7a8ac7f515e4196b008b Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Tue, 27 Feb 2024 14:27:30 +0100 Subject: [PATCH 13/25] cleaner implementation of versioned Metadata by actually leveraging the `version` field included since v2 contract metadata --- packages/api-contract/src/Abi/index.ts | 147 ++++++++++-------- packages/api-contract/src/Abi/toLatest.ts | 44 ------ ...est.spec.ts => toLatestCompatible.spec.ts} | 54 +++++-- .../src/Abi/toLatestCompatible.ts | 8 +- packages/api-contract/src/Abi/toV4.ts | 3 +- packages/api-contract/src/Abi/toV5.ts | 20 --- .../types-augment/src/registry/interfaces.ts | 3 +- .../interfaces/contractsAbi/definitions.ts | 6 +- .../src/interfaces/contractsAbi/types.ts | 25 +-- 9 files changed, 134 insertions(+), 176 deletions(-) delete mode 100644 packages/api-contract/src/Abi/toLatest.ts rename packages/api-contract/src/Abi/{toLatest.spec.ts => toLatestCompatible.spec.ts} (74%) delete mode 100644 packages/api-contract/src/Abi/toV5.ts diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 2b8dd16643e0..af6e2e5b538e 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -6,7 +6,7 @@ import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { Option, TypeRegistry } from '@polkadot/types'; -import { type ChainProperties, type ContractConstructorSpecLatest, type ContractMessageParamSpecLatest, type ContractMessageSpecLatest, type ContractMetadata, type ContractMetadataVersion, type ContractProjectInfo, type ContractTypeSpec, type EventRecord, isV5Metadata, type SupportedContractMetadata } from '@polkadot/types/interfaces'; +import { type ChainProperties, type ContractConstructorSpecLatest, type ContractMessageParamSpecLatest, type ContractMessageSpecLatest, type ContractMetadata, type ContractMetadataSupported, type ContractMetadataV4, type ContractMetadataV5, type ContractProjectInfo, type ContractTypeSpec, type EventRecord } from '@polkadot/types/interfaces'; import { TypeDefInfo } from '@polkadot/types-create'; import { assertReturn, compactAddLength, compactStripLength, isBn, isNumber, isObject, isString, isUndefined, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util'; @@ -32,7 +32,7 @@ function findMessage (list: T[], messageOrId: T | string return assertReturn(message, () => `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`); } -function getMetadata (registry: Registry, json: AbiJson): [SupportedContractMetadata, ContractMetadataVersion] { +function getMetadata (registry: Registry, json: AbiJson): ContractMetadataSupported { // this is for V1, V2, V3 const vx = enumVersions.find((v) => isObject(json[v])); @@ -50,22 +50,22 @@ function getMetadata (registry: Registry, json: AbiJson): [SupportedContractMeta ? { [`V${jsonVersion}`]: json } : { V0: json } ); + const converter = convertVersionsCompatible.find(([v]) => metadata[`is${v}`]); if (!converter) { - throw new Error(`Unable to convert ABI with version ${metadata.type} to latest`); + throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); } const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); - return [upgradedMetadata, metadata.type]; + return upgradedMetadata; } -function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, SupportedContractMetadata, ContractProjectInfo, ContractMetadataVersion] { +function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, ContractMetadataSupported, ContractProjectInfo] { const registry = new TypeRegistry(); const info = registry.createType('ContractProjectInfo', json) as unknown as ContractProjectInfo; - // const latest = getLatestMeta(registry, json as unknown as AbiJson); - const [metadata, version] = getMetadata(registry, json as unknown as AbiJson); + const metadata = getMetadata(registry, json as unknown as AbiJson); const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); // attach the lookup to the registry - now the types are known @@ -80,7 +80,7 @@ function parseJson (json: Record, chainProperties?: ChainProper lookup.getTypeDef(id) ); - return [json, registry, metadata, info, version]; + return [json, registry, metadata, info]; } /** @@ -105,13 +105,12 @@ export class Abi { readonly info: ContractProjectInfo; readonly json: Record; readonly messages: AbiMessage[]; - readonly metadata: SupportedContractMetadata; - readonly version: ContractMetadataVersion; + readonly metadata: ContractMetadataSupported; readonly registry: Registry; readonly environment = new Map(); constructor (abiJson: Record | string, chainProperties?: ChainProperties) { - [this.json, this.registry, this.metadata, this.info, this.version] = parseJson( + [this.json, this.registry, this.metadata, this.info] = parseJson( isString(abiJson) ? JSON.parse(abiJson) as Record : abiJson, @@ -167,39 +166,39 @@ export class Abi { * Warning: Unstable API, bound to change */ public decodeEvent (record: EventRecord): DecodedEvent { - const data = record.event.data[1] as Bytes; - - switch (this.version) { - case 'V4': - case 'V3': - case 'V2': - case 'V1': + switch (this.metadata.version.toString()) { + // earlier version are hoisted to v4 + case '4': + return this.#decodeEventV4(record); + // Latest + default: + return this.#decodeEventV5(record); + } + } - case 'V0':{ - const index = data[0]; + #decodeEventV5 = (record: EventRecord): DecodedEvent => { + const data = record.event.data[1] as Bytes; + const signatureTopic = record.topics[0]; + const event = this.events.find((e) => e.signatureTopic !== undefined && e.signatureTopic === signatureTopic.toHex()); - const event = this.events[index]; + if (!event) { + throw new Error(`Unable to find event with signature_topic ${signatureTopic.toHex()}`); + } - if (!event) { - throw new Error(`Unable to find event with index ${index}`); - } + return event.fromU8a(data.subarray(0)); + }; - return event.fromU8a(data.subarray(1)); - } + #decodeEventV4 = (record: EventRecord): DecodedEvent => { + const data = record.event.data[1] as Bytes; + const index = data[0]; + const event = this.events[index]; - // Latest - default: { - const signatureTopic = record.topics[0]; - const event = this.events.find((e) => e.signatureTopic !== undefined && e.signatureTopic === signatureTopic.toHex()); - - if (event) { - return event.fromU8a(data.subarray(0)); - } else { - throw new Error(`Unable to find event with signature_topic ${signatureTopic.toHex()}`); - } - } + if (!event) { + throw new Error(`Unable to find event with index ${index}`); } - } + + return event.fromU8a(data.subarray(1)); + }; /** * Warning: Unstable API, bound to change @@ -262,40 +261,50 @@ export class Abi { }; #createEvent = (index: number): AbiEvent => { - if (isV5Metadata(this.metadata, this.version)) { - const spec = this.metadata.spec.events[index]; - const args = this.#createArgs(spec.args, spec); - const event = { - args, - docs: spec.docs.map((d) => d.toString()), - fromU8a: (data: Uint8Array): DecodedEvent => ({ - args: this.#decodeArgs(args, data), - event - }), - identifier: [spec.module_path, spec.label].filter((t) => !t.isEmpty).join('::'), - index, - signatureTopic: spec.signature_topic.toHex() || undefined - }; - - return event; - } else { - const spec = this.metadata.spec.events[index]; - const args = this.#createArgs(spec.args, spec); - const event = { - args, - docs: spec.docs.map((d) => d.toString()), - fromU8a: (data: Uint8Array): DecodedEvent => ({ - args: this.#decodeArgs(args, data), - event - }), - identifier: spec.label.toString(), - index - }; - - return event; + // TODO TypeScript would narrow this type to the correct version, + // but version is `Text` so I need to call `toString()` here, + // which breaks the type inference. + switch (this.metadata.version.toString()) { + case '4': + return this.#createEventV4((this.metadata as ContractMetadataV4).spec.events[index], index); + default: + return this.#createEventV5((this.metadata as ContractMetadataV5).spec.events[index], index); } }; + #createEventV5 = (spec: ContractMetadataV5['spec']['events'][number], index: number): AbiEvent => { + const args = this.#createArgs(spec.args, spec); + const event = { + args, + docs: spec.docs.map((d) => d.toString()), + fromU8a: (data: Uint8Array): DecodedEvent => ({ + args: this.#decodeArgs(args, data), + event + }), + identifier: [spec.module_path, spec.label].join('::'), + index, + signatureTopic: spec.signature_topic.toHex() + }; + + return event; + }; + + #createEventV4 = (spec: ContractMetadataV4['spec']['events'][number], index: number): AbiEvent => { + const args = this.#createArgs(spec.args, spec); + const event = { + args, + docs: spec.docs.map((d) => d.toString()), + fromU8a: (data: Uint8Array): DecodedEvent => ({ + args: this.#decodeArgs(args, data), + event + }), + identifier: spec.label.toString(), + index + }; + + return event; + }; + #createMessage = (spec: ContractMessageSpecLatest | ContractConstructorSpecLatest, index: number, add: Partial = {}): AbiMessage => { const args = this.#createArgs(spec.args, spec); const identifier = spec.label.toString(); diff --git a/packages/api-contract/src/Abi/toLatest.ts b/packages/api-contract/src/Abi/toLatest.ts deleted file mode 100644 index 3ed1844dcb66..000000000000 --- a/packages/api-contract/src/Abi/toLatest.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017-2024 @polkadot/api-contract authors & contributors -// SPDX-License-Identifier: Apache-2.0 - -import type { ContractMetadataLatest, ContractMetadataV5 } from '@polkadot/types/interfaces'; -import type { Registry } from '@polkadot/types/types'; - -import { v0ToV1 } from './toV1.js'; -import { v1ToV2 } from './toV2.js'; -import { v2ToV3 } from './toV3.js'; -import { v3ToV4 } from './toV4.js'; -import { v4ToV5 } from './toV5.js'; - -// The versions where an enum is used, aka V0 is missing -// (Order from newest, i.e. we expect more on newest vs oldest) -export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1'] as const; - -type Versions = typeof enumVersions[number] | 'V0'; - -type Converter = (registry: Registry, vx: any) => ContractMetadataLatest; - -// Helper to convert metadata from one step to the next -function createConverter (next: (registry: Registry, input: O) => ContractMetadataLatest, step: (registry: Registry, input: I) => O): (registry: Registry, input: I) => ContractMetadataLatest { - return (registry: Registry, input: I): ContractMetadataLatest => - next(registry, step(registry, input)); -} - -export function v5ToLatest (_registry: Registry, v5: ContractMetadataV5): ContractMetadataLatest { - return v5; -} - -export const v4ToLatest = /*#__PURE__*/ createConverter(v5ToLatest, v4ToV5); -export const v3ToLatest = /*#__PURE__*/ createConverter(v4ToLatest, v3ToV4); -export const v2ToLatest = /*#__PURE__*/ createConverter(v3ToLatest, v2ToV3); -export const v1ToLatest = /*#__PURE__*/ createConverter(v2ToLatest, v1ToV2); -export const v0ToLatest = /*#__PURE__*/ createConverter(v1ToLatest, v0ToV1); - -export const convertVersions: [Versions, Converter][] = [ - ['V5', v5ToLatest], - ['V4', v4ToLatest], - ['V3', v3ToLatest], - ['V2', v2ToLatest], - ['V1', v1ToLatest], - ['V0', v0ToLatest] -]; diff --git a/packages/api-contract/src/Abi/toLatest.spec.ts b/packages/api-contract/src/Abi/toLatestCompatible.spec.ts similarity index 74% rename from packages/api-contract/src/Abi/toLatest.spec.ts rename to packages/api-contract/src/Abi/toLatestCompatible.spec.ts index c7d4105bc320..2a4f3deaae1f 100644 --- a/packages/api-contract/src/Abi/toLatest.spec.ts +++ b/packages/api-contract/src/Abi/toLatestCompatible.spec.ts @@ -6,12 +6,12 @@ import { TypeRegistry } from '@polkadot/types'; import abis from '../test/contracts/index.js'; -import { v0ToLatest, v1ToLatest, v2ToLatest, v3ToLatest, v4ToLatest, v5ToLatest } from './toLatest.js'; +import { v0ToLatestCompatible, v1ToLatestCompatible, v2ToLatestCompatible, v3ToLatestCompatible, v4ToLatestCompatible, v5ToLatestCompatible } from './toLatestCompatible.js'; -describe('v0ToLatest', (): void => { +describe('v0ToLatestCompatible', (): void => { const registry = new TypeRegistry(); const contract = registry.createType('ContractMetadata', { V0: abis['ink_v0_erc20'] }); - const latest = v0ToLatest(registry, contract.asV0); + const latest = v0ToLatestCompatible(registry, contract.asV0); it('has the correct constructors', (): void => { expect( @@ -48,12 +48,16 @@ describe('v0ToLatest', (): void => { latest.spec.events[0].args.map(({ label }) => label.toString()) ).toEqual(['from', 'to', 'value']); }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); }); -describe('v1ToLatest', (): void => { +describe('v1ToLatestCompatible', (): void => { const registry = new TypeRegistry(); const contract = registry.createType('ContractMetadata', { V1: abis['ink_v1_flipper']['V1'] }); - const latest = v1ToLatest(registry, contract.asV1); + const latest = v1ToLatestCompatible(registry, contract.asV1); it('has the correct constructors', (): void => { expect( @@ -69,7 +73,7 @@ describe('v1ToLatest', (): void => { it('has the correct messages with namespaced method name', (): void => { const contract = registry.createType('ContractMetadata', { V1: abis['ink_v1_psp22']['V1'] }); - const latest = v1ToLatest(registry, contract.asV1); + const latest = v1ToLatestCompatible(registry, contract.asV1); expect( latest.spec.messages.map(({ label }) => label.toString()) @@ -83,24 +87,32 @@ describe('v1ToLatest', (): void => { latest.spec.constructors[0].args.map(({ label }) => label.toString()) ).toEqual(['init_value']); }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); }); -describe('v2ToLatest', (): void => { +describe('v2ToLatestCompatible', (): void => { const registry = new TypeRegistry(); const contract = registry.createType('ContractMetadata', { V2: abis['ink_v2_flipper']['V2'] }); - const latest = v2ToLatest(registry, contract.asV2); + const latest = v2ToLatestCompatible(registry, contract.asV2); it('has the correct constructor flag', (): void => { expect( latest.spec.constructors[0].payable.isTrue ).toEqual(true); }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); }); -describe('v3ToLatest', (): void => { +describe('v3ToLatestCompatible', (): void => { const registry = new TypeRegistry(); const contract = registry.createType('ContractMetadata', { V3: abis['ink_v3_flipper']['V3'] }); - const latest = v3ToLatest(registry, contract.asV3); + const latest = v3ToLatestCompatible(registry, contract.asV3); it('has the correct constructor flags', (): void => { expect( @@ -113,7 +125,7 @@ describe('v3ToLatest', (): void => { it('has the correct messages', (): void => { const contract = registry.createType('ContractMetadata', { V3: abis['ink_v3_traitErc20']['V3'] }); - const latest = v3ToLatest(registry, contract.asV3); + const latest = v3ToLatestCompatible(registry, contract.asV3); expect( latest.spec.messages.map(({ label }) => label.toString()) @@ -121,12 +133,16 @@ describe('v3ToLatest', (): void => { 'BaseErc20::total_supply', 'BaseErc20::balance_of', 'BaseErc20::allowance', 'BaseErc20::transfer', 'BaseErc20::approve', 'BaseErc20::transfer_from' ]); }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); }); -describe('v4ToLatest', (): void => { +describe('v4ToLatestCompatible', (): void => { const registry = new TypeRegistry(); const contract = registry.createType('ContractMetadata', { V4: abis['ink_v4_flipperContract'] }); - const latest = v4ToLatest(registry, contract.asV4); + const latest = v4ToLatestCompatible(registry, contract.asV4); it('has the correct constructor flags', (): void => { expect( @@ -136,12 +152,16 @@ describe('v4ToLatest', (): void => { latest.spec.constructors[1].payable.isTrue ).toEqual(false); }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); }); -describe('v5ToLatest', (): void => { +describe('v5ToLatestCompatible', (): void => { const registry = new TypeRegistry(); const contract = registry.createType('ContractMetadata', { V5: abis['ink_v5_erc20Metadata'] }); - const latest = v5ToLatest(registry, contract.asV5); + const latest = v5ToLatestCompatible(registry, contract.asV5); it('has the correct messages', (): void => { expect( @@ -166,4 +186,8 @@ describe('v5ToLatest', (): void => { expect(latest.spec.events[0].signature_topic.toHex()).toEqual('0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb'); }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('5'); + }); }); diff --git a/packages/api-contract/src/Abi/toLatestCompatible.ts b/packages/api-contract/src/Abi/toLatestCompatible.ts index c8f661953090..d3d9e3876177 100644 --- a/packages/api-contract/src/Abi/toLatestCompatible.ts +++ b/packages/api-contract/src/Abi/toLatestCompatible.ts @@ -1,7 +1,7 @@ // Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { ContractMetadataLatest, ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { ContractMetadataSupported, ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; import type { Registry } from '@polkadot/types/types'; import { v0ToV1 } from './toV1.js'; @@ -15,11 +15,11 @@ export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1'] as const; type Versions = typeof enumVersions[number] | 'V0'; -type Converter = (registry: Registry, vx: any) => ContractMetadataV4 | ContractMetadataV5; +type Converter = (registry: Registry, vx: any) => ContractMetadataSupported; // Helper to convert metadata from one step to the next -function createConverter (next: (registry: Registry, input: O) => ContractMetadataLatest, step: (registry: Registry, input: I) => O): (registry: Registry, input: I) => ContractMetadataLatest { - return (registry: Registry, input: I): ContractMetadataLatest => +function createConverter (next: (registry: Registry, input: O) => ContractMetadataSupported, step: (registry: Registry, input: I) => O): (registry: Registry, input: I) => ContractMetadataSupported { + return (registry: Registry, input: I): ContractMetadataSupported => next(registry, step(registry, input)); } diff --git a/packages/api-contract/src/Abi/toV4.ts b/packages/api-contract/src/Abi/toV4.ts index 8e2e7deeda78..20f00d3dbfe6 100644 --- a/packages/api-contract/src/Abi/toV4.ts +++ b/packages/api-contract/src/Abi/toV4.ts @@ -15,6 +15,7 @@ export function v3ToV4 (registry: Registry, v3: ContractMetadataV3): ContractMet messages: v3.spec.messages.map((m) => registry.createType('ContractMessageSpecV3', objectSpread({}, m)) ) - }) + }), + version: registry.createType('Text', '4') })); } diff --git a/packages/api-contract/src/Abi/toV5.ts b/packages/api-contract/src/Abi/toV5.ts deleted file mode 100644 index 9d483440f65e..000000000000 --- a/packages/api-contract/src/Abi/toV5.ts +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017-2024 @polkadot/api-contract authors & contributors -// SPDX-License-Identifier: Apache-2.0 - -import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; -import type { Registry } from '@polkadot/types/types'; - -import { objectSpread } from '@polkadot/util'; - -export function v4ToV5 (registry: Registry, v4: ContractMetadataV4): ContractMetadataV5 { - return registry.createType('ContractMetadataV5', objectSpread({}, v4, { - spec: objectSpread({}, v4.spec, { - events: v4.spec.events.map((e) => - registry.createType('ContractEventSpecV3', objectSpread({ - module_path: undefined, - signature_topic: undefined - }, e)) - ) - }) - })); -} diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index 52a47d0cd8fe..21dd3c0b2775 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -25,7 +25,7 @@ import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractExecResultU64, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractInstantiateResultU64, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; -import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractConstructorSpecV4, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironmentV4, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMessageSpecV3, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; +import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractConstructorSpecV4, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironmentV4, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMessageSpecV3, ContractMetadata, ContractMetadataLatest, ContractMetadataSupported, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { CollationInfo, CollationInfoV1, ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy'; @@ -305,6 +305,7 @@ declare module '@polkadot/types/types/registry' { ContractMessageSpecV3: ContractMessageSpecV3; ContractMetadata: ContractMetadata; ContractMetadataLatest: ContractMetadataLatest; + ContractMetadataSupported: ContractMetadataSupported; ContractMetadataV0: ContractMetadataV0; ContractMetadataV1: ContractMetadataV1; ContractMetadataV2: ContractMetadataV2; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index d4da38fa16b6..caed4dcb506d 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -253,11 +253,13 @@ export default { }, ContractMetadataV4: { types: 'Vec', - spec: 'ContractContractSpecV4' + spec: 'ContractContractSpecV4', + version: 'Text' }, ContractMetadataV5: { types: 'Vec', - spec: 'ContractContractSpecV5' + spec: 'ContractContractSpecV5', + version: 'Text' }, ContractMetadata: { _enum: { diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index f1c7ce64c6c2..17417ad9ef2b 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -149,9 +149,6 @@ export interface ContractEventParamSpecV2 extends Struct { /** @name ContractEventSpecLatest */ export interface ContractEventSpecLatest extends ContractEventSpecV3 {} -/** @name SupportedContractEventSpec */ -export type SupportedContractEventSpec = SupportedContractMetadata['spec']['events'][number] - /** @name ContractEventSpecV0 */ export interface ContractEventSpecV0 extends Struct { readonly name: Text; @@ -293,11 +290,6 @@ export interface ContractMessageSpecV3 extends Struct { readonly default: bool; } - - -/** @name ContractMetadataVersion */ -export type ContractMetadataVersion ='V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; - /** @name ContractMetadata */ export interface ContractMetadata extends Enum { readonly isV0: boolean; @@ -312,23 +304,14 @@ export interface ContractMetadata extends Enum { readonly asV4: ContractMetadataV4; readonly isV5: boolean; readonly asV5: ContractMetadataV5; - readonly type: ContractMetadataVersion; + readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; } - /** @name ContractMetadataLatest */ export interface ContractMetadataLatest extends ContractMetadataV5 {} -/** @name SupportedContractMetadata */ -export type SupportedContractMetadata = ContractMetadataV5 | ContractMetadataV4 - -export const isV4Metadata = (metadata: SupportedContractMetadata, version: ContractMetadataVersion): metadata is ContractMetadataV4 =>{ - return version === 'V4' -} - -export const isV5Metadata = (metadata: SupportedContractMetadata, version: ContractMetadataVersion): metadata is ContractMetadataV5 =>{ - return version === 'V5' -} +/** @name ContractMetadataSupported */ +export type ContractMetadataSupported = ContractMetadataV5 | ContractMetadataV4 /** @name ContractMetadataV0 */ export interface ContractMetadataV0 extends Struct { @@ -359,12 +342,14 @@ export interface ContractMetadataV3 extends Struct { export interface ContractMetadataV4 extends Struct { readonly types: Vec; readonly spec: ContractContractSpecV4; + readonly version: '4'; } /** @name ContractMetadataV5 */ export interface ContractMetadataV5 extends Struct { readonly types: Vec; readonly spec: ContractContractSpecV5; + readonly version: '5'; } /** @name ContractProject */ From 0029e18ff66fe68e9196f893861df3799ba547a4 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Tue, 27 Feb 2024 14:44:19 +0100 Subject: [PATCH 14/25] trying to make linter happy --- packages/api-contract/src/Abi/index.ts | 2 +- packages/types/src/interfaces/contractsAbi/definitions.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index af6e2e5b538e..d6593c75c371 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -126,7 +126,7 @@ export class Abi { : null }) ); - this.events = this.metadata.spec.events.map((_, index) => + this.events = this.metadata.spec.events.map((_: ContractMetadataSupported['spec']['events'], index: number) => this.#createEvent(index) ); this.messages = this.metadata.spec.messages.map((spec: ContractMessageSpecLatest, index): AbiMessage => diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index caed4dcb506d..56b37ccd7b68 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -230,6 +230,7 @@ export default { ...layout, ...spec, ...latest, + ContractMetadataSupported: 'ContractMetadataSupported', ContractProjectInfo: { source: 'ContractProjectSource', contract: 'ContractProjectContract' From 0124e146e04898a0856fa4c51cd2454ef2af5278 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Tue, 27 Feb 2024 14:50:17 +0100 Subject: [PATCH 15/25] makes `ContractMetadataSupported` in internal to `Abi` type and not exposing it externally. --- packages/api-contract/src/Abi/index.ts | 4 +++- packages/api-contract/src/Abi/toLatestCompatible.ts | 3 ++- packages/types-augment/src/registry/interfaces.ts | 3 +-- packages/types/src/interfaces/contractsAbi/definitions.ts | 1 - packages/types/src/interfaces/contractsAbi/types.ts | 3 --- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index d6593c75c371..6ae50462a546 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -6,7 +6,7 @@ import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { Option, TypeRegistry } from '@polkadot/types'; -import { type ChainProperties, type ContractConstructorSpecLatest, type ContractMessageParamSpecLatest, type ContractMessageSpecLatest, type ContractMetadata, type ContractMetadataSupported, type ContractMetadataV4, type ContractMetadataV5, type ContractProjectInfo, type ContractTypeSpec, type EventRecord } from '@polkadot/types/interfaces'; +import { type ChainProperties, type ContractConstructorSpecLatest, type ContractMessageParamSpecLatest, type ContractMessageSpecLatest, type ContractMetadata, type ContractMetadataV4, type ContractMetadataV5, type ContractProjectInfo, type ContractTypeSpec, type EventRecord } from '@polkadot/types/interfaces'; import { TypeDefInfo } from '@polkadot/types-create'; import { assertReturn, compactAddLength, compactStripLength, isBn, isNumber, isObject, isString, isUndefined, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util'; @@ -18,6 +18,8 @@ interface AbiJson { [key: string]: unknown; } +export type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; + const l = logger('Abi'); const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance']; diff --git a/packages/api-contract/src/Abi/toLatestCompatible.ts b/packages/api-contract/src/Abi/toLatestCompatible.ts index d3d9e3876177..b511348792ed 100644 --- a/packages/api-contract/src/Abi/toLatestCompatible.ts +++ b/packages/api-contract/src/Abi/toLatestCompatible.ts @@ -1,8 +1,9 @@ // Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { ContractMetadataSupported, ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; import type { Registry } from '@polkadot/types/types'; +import type { ContractMetadataSupported } from './index.js'; import { v0ToV1 } from './toV1.js'; import { v1ToV2 } from './toV2.js'; diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index 21dd3c0b2775..52a47d0cd8fe 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -25,7 +25,7 @@ import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractExecResultU64, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractInstantiateResultU64, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; -import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractConstructorSpecV4, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironmentV4, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMessageSpecV3, ContractMetadata, ContractMetadataLatest, ContractMetadataSupported, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; +import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractConstructorSpecV4, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironmentV4, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMessageSpecV3, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { CollationInfo, CollationInfoV1, ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy'; @@ -305,7 +305,6 @@ declare module '@polkadot/types/types/registry' { ContractMessageSpecV3: ContractMessageSpecV3; ContractMetadata: ContractMetadata; ContractMetadataLatest: ContractMetadataLatest; - ContractMetadataSupported: ContractMetadataSupported; ContractMetadataV0: ContractMetadataV0; ContractMetadataV1: ContractMetadataV1; ContractMetadataV2: ContractMetadataV2; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index 56b37ccd7b68..caed4dcb506d 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -230,7 +230,6 @@ export default { ...layout, ...spec, ...latest, - ContractMetadataSupported: 'ContractMetadataSupported', ContractProjectInfo: { source: 'ContractProjectSource', contract: 'ContractProjectContract' diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index 17417ad9ef2b..22d382efce7b 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -310,9 +310,6 @@ export interface ContractMetadata extends Enum { /** @name ContractMetadataLatest */ export interface ContractMetadataLatest extends ContractMetadataV5 {} -/** @name ContractMetadataSupported */ -export type ContractMetadataSupported = ContractMetadataV5 | ContractMetadataV4 - /** @name ContractMetadataV0 */ export interface ContractMetadataV0 extends Struct { readonly metadataVersion: Text; From fcb684d743f380e7f30039b0410266ec00d2b3f1 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Tue, 27 Feb 2024 14:57:18 +0100 Subject: [PATCH 16/25] properly types unused parameter for tsc :shrug: --- packages/api-contract/src/Abi/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 6ae50462a546..7e612f9c0962 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -128,7 +128,7 @@ export class Abi { : null }) ); - this.events = this.metadata.spec.events.map((_: ContractMetadataSupported['spec']['events'], index: number) => + this.events = this.metadata.spec.events.map((_: ContractMetadataSupported['spec']['events'][number], index: number) => this.#createEvent(index) ); this.messages = this.metadata.spec.messages.map((spec: ContractMessageSpecLatest, index): AbiMessage => From 64feb63f6b5398b6f71926e55e014d9e5b65756e Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Tue, 27 Feb 2024 16:24:00 +0100 Subject: [PATCH 17/25] adds `@polkadot/types-support` dev dependency --- packages/api-contract/package.json | 3 ++- yarn.lock | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/api-contract/package.json b/packages/api-contract/package.json index 5cafab0ff2b0..db8dc9723ae6 100644 --- a/packages/api-contract/package.json +++ b/packages/api-contract/package.json @@ -33,6 +33,7 @@ }, "devDependencies": { "@polkadot/api-augment": "10.11.3-10-x", - "@polkadot/keyring": "^12.6.2" + "@polkadot/keyring": "^12.6.2", + "@polkadot/types-support": "10.11.3-10-x" } } diff --git a/yarn.lock b/yarn.lock index 0781dbc27be6..24217ba6f40a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -480,6 +480,7 @@ __metadata: "@polkadot/types": "npm:10.11.3-10-x" "@polkadot/types-codec": "npm:10.11.3-10-x" "@polkadot/types-create": "npm:10.11.3-10-x" + "@polkadot/types-support": "npm:10.11.3-10-x" "@polkadot/util": "npm:^12.6.2" "@polkadot/util-crypto": "npm:^12.6.2" rxjs: "npm:^7.8.1" From f1a1b9db3fe0b9e225decd284c95f56a8c0f2a4f Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Tue, 27 Feb 2024 16:28:13 +0100 Subject: [PATCH 18/25] Update yarn.lock --- yarn.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn.lock b/yarn.lock index 7d22c7ab4797..e5ae6f47fe1e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -480,6 +480,7 @@ __metadata: "@polkadot/types": "npm:10.11.3" "@polkadot/types-codec": "npm:10.11.3" "@polkadot/types-create": "npm:10.11.3" + "@polkadot/types-support": "npm:10.11.3" "@polkadot/util": "npm:^12.6.2" "@polkadot/util-crypto": "npm:^12.6.2" rxjs: "npm:^7.8.1" From 1cda4b96df6f8840691d72c4ee27b94ae43629df Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Tue, 27 Feb 2024 16:33:58 +0100 Subject: [PATCH 19/25] references `types-support` in `api-contract --- packages/api-contract/tsconfig.spec.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/api-contract/tsconfig.spec.json b/packages/api-contract/tsconfig.spec.json index 74a1290b9c9b..38b05b547b92 100644 --- a/packages/api-contract/tsconfig.spec.json +++ b/packages/api-contract/tsconfig.spec.json @@ -17,9 +17,10 @@ "mock.ts" ], "references": [ - { "path": "../api/tsconfig.build.json" }, { "path": "../api-augment/tsconfig.build.json" }, { "path": "../api-contract/tsconfig.build.json" }, + { "path": "../api/tsconfig.build.json" }, + { "path": "../types-support/tsconfig.build.json" }, { "path": "../types/tsconfig.build.json" } ] } From 246570d76a7803c7d3abe2f5c2b8e689e294cadf Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Wed, 28 Feb 2024 10:36:59 +0100 Subject: [PATCH 20/25] resolving change requests --- packages/api-contract/src/Abi/Abi.spec.ts | 2 +- packages/api-contract/src/Abi/index.ts | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/api-contract/src/Abi/Abi.spec.ts b/packages/api-contract/src/Abi/Abi.spec.ts index 4659ba07e636..6bc91e1140c9 100644 --- a/packages/api-contract/src/Abi/Abi.spec.ts +++ b/packages/api-contract/src/Abi/Abi.spec.ts @@ -166,7 +166,7 @@ describe('Abi', (): void => { expect(decodedEventHuman).toEqual(expectedEvent); }); - it('decoding <=ink!v5 events', (): void => { + it('decoding >=ink!v5 events', (): void => { const abiJson = abis['ink_v5_erc20Metadata']; expect(abiJson).toBeDefined(); diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 7e612f9c0962..4fa81975e1f6 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -1,15 +1,13 @@ // Copyright 2017-2024 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { Bytes } from '@polkadot/types'; -import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; -import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; - +import type { Bytes, Vec } from '@polkadot/types'; import { Option, TypeRegistry } from '@polkadot/types'; -import { type ChainProperties, type ContractConstructorSpecLatest, type ContractMessageParamSpecLatest, type ContractMessageSpecLatest, type ContractMetadata, type ContractMetadataV4, type ContractMetadataV5, type ContractProjectInfo, type ContractTypeSpec, type EventRecord } from '@polkadot/types/interfaces'; import { TypeDefInfo } from '@polkadot/types-create'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecV2, ContractEventSpecV3, ContractEventSpecV3, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataV4, ContractMetadataV5, ContractProjectInfo, ContractTypeSpec, EventOf, EventRecord } from '@polkadot/types/interfaces'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import { assertReturn, compactAddLength, compactStripLength, isBn, isNumber, isObject, isString, isUndefined, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util'; - +import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { convertVersions as convertVersionsCompatible, enumVersions } from './toLatestCompatible.js'; interface AbiJson { @@ -18,7 +16,9 @@ interface AbiJson { [key: string]: unknown; } -export type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; +type EventOf = M extends {spec:{ events: Vec}} ? E : never +type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; +type ContractEventSupported = EventOf; const l = logger('Abi'); @@ -128,7 +128,7 @@ export class Abi { : null }) ); - this.events = this.metadata.spec.events.map((_: ContractMetadataSupported['spec']['events'][number], index: number) => + this.events = this.metadata.spec.events.map((_: ContractEventSupported, index: number) => this.#createEvent(index) ); this.messages = this.metadata.spec.messages.map((spec: ContractMessageSpecLatest, index): AbiMessage => @@ -274,7 +274,7 @@ export class Abi { } }; - #createEventV5 = (spec: ContractMetadataV5['spec']['events'][number], index: number): AbiEvent => { + #createEventV5 = (spec: EventOf, index: number): AbiEvent => { const args = this.#createArgs(spec.args, spec); const event = { args, @@ -291,7 +291,7 @@ export class Abi { return event; }; - #createEventV4 = (spec: ContractMetadataV4['spec']['events'][number], index: number): AbiEvent => { + #createEventV4 = (spec: EventOf, index: number): AbiEvent => { const args = this.#createArgs(spec.args, spec); const event = { args, From f88fcf7ce2deb72f59bf079131b353efeaffc309 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Wed, 28 Feb 2024 10:53:35 +0100 Subject: [PATCH 21/25] resolves linter warnings --- packages/api-contract/src/Abi/index.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 4fa81975e1f6..b035d0f9e143 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,13 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes, Vec } from '@polkadot/types'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataV4, ContractMetadataV5, ContractProjectInfo, ContractTypeSpec, EventRecord } from '@polkadot/types/interfaces'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; +import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; + import { Option, TypeRegistry } from '@polkadot/types'; import { TypeDefInfo } from '@polkadot/types-create'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecV2, ContractEventSpecV3, ContractEventSpecV3, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataV4, ContractMetadataV5, ContractProjectInfo, ContractTypeSpec, EventOf, EventRecord } from '@polkadot/types/interfaces'; -import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import { assertReturn, compactAddLength, compactStripLength, isBn, isNumber, isObject, isString, isUndefined, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util'; -import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; -import { convertVersions as convertVersionsCompatible, enumVersions } from './toLatestCompatible.js'; + +import { convertVersions, enumVersions } from './toLatestCompatible.js'; interface AbiJson { version?: string; @@ -16,8 +18,8 @@ interface AbiJson { [key: string]: unknown; } -type EventOf = M extends {spec:{ events: Vec}} ? E : never -type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; +type EventOf = M extends {spec: { events: Vec}} ? E : never +export type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; type ContractEventSupported = EventOf; const l = logger('Abi'); @@ -53,7 +55,7 @@ function getMetadata (registry: Registry, json: AbiJson): ContractMetadataSuppor : { V0: json } ); - const converter = convertVersionsCompatible.find(([v]) => metadata[`is${v}`]); + const converter = convertVersions.find(([v]) => metadata[`is${v}`]); if (!converter) { throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); From f67a88af4d80dccb3566c683210836592b0bd98b Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Wed, 28 Feb 2024 10:54:06 +0100 Subject: [PATCH 22/25] changes ContractMetadataV5 field to `u64` from `Text` --- .../api-contract/src/test/contracts/ink/v5/erc20.contract.json | 2 +- packages/api-contract/src/test/contracts/ink/v5/erc20.json | 2 +- .../src/test/contracts/ink/v5/flipper.contract.json | 2 +- packages/api-contract/src/test/contracts/ink/v5/flipper.json | 2 +- packages/types/src/interfaces/contractsAbi/definitions.ts | 2 +- packages/types/src/interfaces/contractsAbi/types.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json b/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json index 56f4b9e564a6..53ee9a2bce16 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json +++ b/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json @@ -1 +1 @@ -{"source":{"hash":"0x656ec6137638ba8ad1477e96dfe91eb90ca625dfbe543057868ea521fd1b73fe","language":"ink! 5.0.0-rc.1","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001691160037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f0060047f7f7f7f017f60057f7f7f7f7f0060000060017f017f60027e7e0060037f7e7e0060037e7e7f0060047f7f7e7e006000017f60057f7f7f7f7f017f60047f7f7e7e017f02c7010a057365616c310b6765745f73746f726167650006057365616c3005696e7075740002057365616c300d6465706f7369745f6576656e740005057365616c320b7365745f73746f726167650006057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c300663616c6c65720002057365616c301176616c75655f7472616e736665727265640002057365616c300f686173685f626c616b65325f323536000303656e76066d656d6f7279020102100356550007030b0202030c0d0202030504040307040202000202020403020204070e01010203040903030102010f080a020a0208100408030502040802090100000101010402010107060506020501010300050101010205040501700116160608017f01418080040b0711020463616c6c0039066465706c6f79003c091b010041010b15555432302829485b492c2c282c4647444b2c57595a0aac7e552b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2200200120034d044020002001360204200020023602000f0b200120032004100b000b0e0020002001200241d49604105d0bb50102047f017e230041306b2203240020034100360220200342808001370228200341d2a60436022441e7b98fb102200341246a2204100d20002004100e20032003290224370218200341106a200341186a2205200328022c100f2003280214210020032802102106200329021821072003410036022c20032007370224200120022004101020032003290224370218200341086a2005200328022c100f200620002003280208200328020c10031a200341306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041018200241106a24000b0a0020012000412010180b4501017f2002200128020422034b044041e4a1044123419ca404102f000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101018200341106a24000bbb0102037f017e230041306b2204240020044100360220200442808001370228200441d2a60436022441b7c380e57e200441246a2205100d20002005100e20012005100e20042004290224370218200441106a200441186a2206200428022c100f2004280214210020042802102101200429021821072004410036022c20042007370224200220032005101020042004290224370218200441086a2006200428022c100f200120002004280208200428020c10031a200441306a24000bb20102037f017e230041d0006b22022400200241186a220420001013200229021821052002410036022c200220053702242001200241246a2203100e20022002290224370218200241106a2004200228022c100f2003200228021020022802141014200241086a200028020020002802042000280208220110152002410036024c200220022903083702442003200241c4006a100e20012001200228024c6a22014d101620002001360208200241d0006a24000b3f01027f200128020422032001280208220249044020022003418ca404102e000b200041003602082000200320026b3602042000200128020020026a3602000b8f0201077f230041d0006b22032400200341286a22044200370300200341206a22054200370300200341186a22064200370300200342003703100240200241214f0440200341c8006a22074200370300200341406b22084200370300200341386a220942003703002003420037033020012002200341306a1008200420072903003703002005200829030037030020062009290300370300200320032903303703100c010b200341086a2002200341106a412041ac8104100a2003280208200328020c2001200241bc810410190b20002003290310370000200041186a200341286a290300370000200041106a200341206a290300370000200041086a200341186a290300370000200341d0006a24000b2900200220034904402003200241fc8504102e000b2000200220036b3602042000200120036a3602000b150020004504404187a204412b418c8604102f000b0bbd0102047f017e230041d0006b22012400200141186a220220001013200129021821052001410036022c20012005370224200141003a0044200141246a2203200141c4006a22044101101820012001290224370218200141106a2002200128022c100f2003200128021020012802141014200141086a200028020020002802042000280208220210152001410036024c2001200129030837024420032004100e20022002200128024c6a22024d101620002002360208200141d0006a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741bca304105c0240200320044f0440200320054b0d01200420066a200320046b2001200241dca3041019200741eca304105c200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41073602002000410236020c200041889704360208200041073602242000200041206a3602102000200041046a36022820002000360220200041086a41cca3041031000b2003200541cca304100b000b7b002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41073602002000410336020c200041dc9804360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a20041031000b5c01027f230041206b22012400200141086a200028020020002802042000280208220210152001410036021c20012001290308370214200141146a410c101b20022002200128021c6a22024d101620002002360208200141206a24000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41073602002000410236020c200041d89004360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a41fca3041031000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101d45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f20002802042203200249220445044020012002200028020022012002418ca60410192000200320026b3602042000200120026a3602000b20040b5502027f017e230041206b22022400200241086a2001101f200241186a29030021042002280208210320002002290310370308200041106a200437030020002003200128020472410047ad370300200241206a24000b5f02017f037e230041106b2202240020024200370308200242003703000240200120024110101d45044020022903082104200229030021050c010b420121030b2000200537030820002003370300200041106a2004370300200241106a24000ba90102017f027e230041406a220224002002411f6a2001101c0240024020022d001f0d0020022001101f2002290300a70d00200241106a2903002103200229030821042000200229002037000820004200370300200041286a2004370300200041306a2003370300200041206a200241386a290000370000200041186a200241306a290000370000200041106a200241286a2900003700000c010b200042013703000b200241406b24000be90202077f017e230041406a22012400200142808001370228200141d2a604360224200141246a101a200141186a2001412c6a28020036020020012001290224370310200141306a200141106a41bd87041022200041316a2105024020002d00100440200141306a200041116a10120c010b200141306a10170b200041106a2106200141186a200141386a28020036020020012001290230370310024020052d00000440200141106a200041326a10120c010b200141106a10170b200141386a2202200141186a220328020036020020012001290310370330200141106a2204200141306a2207102320022003280200360200200120012902102208370330200141206a2802002102200128021c210320014100360218200120083702102006200410242005200410242000290300200041086a2903002004101020012001290210370330200141086a20072001280218100f200320022001280208200128020c1002200141406b24000bda0102037f017e230041d0006b22032400024020020440200341186a220520011013200329021821062003410036022c200320063702242002200341246a2204100e20032003290224370218200341106a2005200328022c100f2004200328021020032802141014200341086a200128020020012802042001280208220210152003410036024c200320032903083702442004200341c4006a100e20022002200328024c6a22024d1016200120023602080c010b200110170b20002001290200370200200041086a200141086a280200360200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200100f20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b210020002d000045044020014100101b0f0b20014101101b200041016a2001100e0bb20101027f230041306b2201240020014180800136020441d2a604200141046a2202100620014180800136022c200141d2a6043602282002200141286a101c20012d00040440200141103a000441e7840441c100200141046a41d0820441a885041026000b2000200141066a290000370001200041096a2001410e6a290000370000200041116a200141166a290000370000200041186a2001411d6a290000370000200020012d00053a0000200141306a24000b7c01017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a42023702002005413c6a41013602002005410236021c200541ec9004360218200541023602342005200541306a3602202005200541106a3602382005200541086a360230200541186a20041031000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10072000290308210120002903002102200041206a2400410541042001200284501b0b1b00200128021441d489044105200141186a28020028020c1100000b3400200128021420002802002d0000410274220041c088046a2802002000418088046a280200200141186a28020028020c1100000bff0202057f027e230041d0006b220224002002410036023020024280800137023c200241d2a60436023841e7b98fb102200241386a2204100d20012004100e20022002290238370228200241206a200241286a2002280240100f2002280224210320022802202105200228022821012002200228022c2206360238200520032001200410002103200241186a20022802382001200641c08204100a027e024002400240024020030e0400010103010b200228021821012002200228021c36023c200220013602382002200241386a101e2002290300a70d0120022903082107200241106a2903000c030b200241c4006a42003702002002410136023c200241e48504360238200241e4a104360240200241386a41ec85041031000b200241103a0037200241c4006a42013702002002410136023c2002419481043602382002410336022c2002200241286a3602402002200241376a360228200241386a419c81041031000b42000b21082000200737030020002008370308200241d0006a24000b850302047f027e230041d0006b220324002003410036023020034280800137023c200341d2a60436023841b7c380e57e200341386a2204100d20012004100e20022004100e20032003290238370228200341206a200341286a2003280240100f2003280224210220032802202105200328022821012003200328022c2206360238200520022001200410002102200341186a20032802382001200641c08204100a027e024002400240024020020e0400010103010b200328021821012003200328021c36023c200320013602382003200341386a101e2003290300a70d0120032903082107200341106a2903000c030b200341c4006a42003702002003410136023c200341e48504360238200341e4a104360240200341386a41ec85041031000b200341103a0037200341c4006a42013702002003410136023c2003419481043602382003410336022c2003200341286a3602402003200341376a360228200341386a419c81041031000b42000b21082000200737030020002008370308200341d0006a24000b0300010b1b002000418180014f044020004180800141b88504100b000b20000b0e0020002001200241b49604105d0b4601017f230041206b220324002003410c6a420037020020034101360204200341e4a1043602082003200136021c200320003602182003200341186a360200200320021031000b840101017f230041306b22022400200241146a42013702002002410136020c200241b09f0436020820024102360224200220002d00004102742200419ca6046a28020036022c2002200041b0a6046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10452100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241889004360210200241e4a10436020c2002410c6a104a000b8f0101027f230041106b22022400027f024002400240410220002d000041106b41ff01712203200341024f1b41016b0e020102000b20022000360208200141e082044106200241086a410510330c020b200128021441e68204410e200141186a28020028020c1100000c010b2002200036020c200141f48204410b2002410c6a410610330b2100200241106a240020000ba20201047f230041406a220524004101210702402000280214220620012002200041186a280200220228020c22011100000d000240200028021c22084104714504402006419a9104410120011100000d022003200020041101000d0220002802142106200028021828020c21010c010b2006419b9104410220011100000d01200541013a001b200541346a41fc9004360200200520023602102005200636020c20052008360238200520002d00203a003c2005200028021036022c200520002902083702242005200029020037021c20052005411b6a36021420052005410c6a36023020032005411c6a20041101000d012005280230419891044102200528023428020c1100000d010b200641ec8f044101200111000021070b200541406b240020070b3c01027f230041106b22002400200042808001370208200041d2a604360204200041046a22014101101b20014101101b4101200028020c102d1038000b3e01027f230041106b22022400200242808001370208200241d2a604360204200241046a22034100101b20002001200310104100200228020c102d1038000b5101027f230041106b22022400200242808001370208200241d2a604360204200241046a22034100101b2003200141ff0171410247047f20034101101b20010541000b101b2000200228020c102d1038000bab0102057f017e230041306b2202240020024100360220200242808001370228200241d2a6043602244100200241246a2203100d20022002290224370218200241106a200241186a2204200228022c100f2002280214210520022802102106200229021821072002410036022c20022007370224200020012003101020022002290224370218200241086a2004200228022c100f200620052002280208200228020c10031a200241306a24000b0d00200041d2a60420011005000b8a1602087f047e230041a0056b22002400024002400240102741ff017141054604402000418080013602c80441d2a604200041c8046a2201100120004180016a20002802c80441d2a6044180800141c08204100a20002000290380013702bc04200041003602c804200041bc046a20014104101d0d0220002d00cb04210220002d00ca04210320002d00c9042101027f02400240024002400240024020002d00c8042204410b6b0e050509090901000b0240200441e8006b0e03040902000b2004418401460d02200441db0147200141ff017141e3004772200341f50047200241a8014772720d0841000c050b200141ff017141f50047200341da004772200241d60047720d07200041c8046a200041bc046a101c20002d00c8040d07200041f0016a200041d2046a290000370300200041f8016a200041da046a290000370300200041ff016a200041e1046a2900003700002000200041ca046a2900003703e80120002d00c904210141010c040b200141ff0171200341164772200241de0047720d06200041a8026a200041bc046a101c20002d00a8020d0620004188016a200041bc046a101c20002d0088010d06200041ff046a200041a1016a290000370000200041f7046a20004199016a290000370000200041ef046a20004191016a290000370000200041d0046a200041b2026a290000370300200041d8046a200041ba026a290000370300200041df046a200041c1026a29000037000020002000290089013700e7042000200041aa026a2900003703c80420002d00a9022101200041e8016a200041c8046a413f10091a41020c030b200141ff017141a10147200341dd004772200241a10147720d05200041c8046a200041bc046a102020002903c8044200520d05200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41030c020b200141ff0171411247200341e6004772200241a00147720d04200041c8046a200041bc046a102020002903c8044200520d04200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41040c010b200141ff0171413947200341ef0047722002411847720d03200041f0036a200041bc046a101c20002d00f0030d0320004198046a200041bc046a101c20002d0098040d03200041e8006a200041bc046a101f2000290368a70d03200041f8006a290300210820002903702109200041c8036a200041f1036a220141186a290000370300200041c0036a200141106a290000370300200041b8036a200141086a290000370300200041d8036a200041a1046a290000370300200041e0036a200041a9046a290000370300200041e8036a200041b1046a29000037030020002000290099043703d003200020012900003703b003200041f0026a2202200041b0036a41c00010091a200041ae026a2000418e016a200041ce046a200241c000100941c000100941c00010091a200041e8016a200041a8026a413f10091a2000200041ea026a2800003600e301200020002800e7023602e00141050b210220004188016a410272200041e8016a413f10091a200041cc016a20002800e301360000200041d8016a2008370300200020002802e0013600c901200020093703d001200020013a008901200020023a008801200041003602b0022000428080013702cc04200041d2a6043602c8044100200041c8046a2203100d200020002902c8043702a802200041e0006a200041a8026a20002802d004100f200028026421042000280260210520002802a8022101200020002802ac0222063602c804200520042001200310002103200041d8006a20002802c8042001200641c08204100a02400240024020030e0400040401040b200028025821012000200028025c3602cc04200020013602c804200041406b200041c8046a101f2000290340a745044020002802cc04450d020b200041d4046a4200370200200041013602cc04200041a487043602c8040c050b200041d4046a4200370200200041013602cc04200041f486043602c8040c040b20004188016a4101722101200041d0006a290300210820002000290348220937039804200020083703a00402400240024002400240024002400240200241016b0e050001040502030b230041406a22022400200241286a200141086a290000370200200241306a200141106a290000370200200241386a200141186a290000370200200220004198046a36021c20022001290000370220200241086a200241206a102a20022903082108200041086a2201200241106a29030037030820012008370300200241406b24002000290308200041106a2903001035000b230041e0006b22022400200220004198046a36021c200241086a200241206a200141c0001009200241406b102b20022903082108200041186a2201200241106a29030037030820012008370300200241e0006a24002000290318200041206a2903001035000b200041d0046a20004190016a41d00010092101200020004198046a3602c80420004190056a290300210920004198056a2903002108200041a8026a22021025200041306a20012002102b41012103410121022000290330220b2009542204200041386a290300220a2008542008200a511b0d04410221022001200041f0046a20092008103a41ff017122054102460d03200541004721020c040b200920081035000b200041d0046a20004190016a413010092101200020004198046a3602c804200041f8046a2903002108200041f0046a2903002109200041a8026a220210252002200120092008103a220141ff0171410246047f200029039804200041a0046a290300103741000541010b20011036000b200041b8036a20004190016a413010092101200020004198046a3602b003200041e0036a2903002108200041d8036a2903002109200041f0026a2202102520022001200920081011200041c0026a20004188036a290000370300200041b8026a20004180036a290000370300200041b0026a200041f8026a290000370300200041d0026a20004198016a290300370300200041d8026a200041a0016a290300370300200041e0026a200041a8016a290300370300200020002900f0023703a80220002000290390013703c802200041c8046a2204200041a8026a41c00010091a20004190056a2206200837030020002009370388052000428080013702c004200041d2a6043602bc04200041bc046a101a200041f0016a2202200041c4046a280200360200200020002902bc043703e801200041f0036a2203200041e8016a220141de870410222003200410122002200041f8036a2205280200360200200020002902f0033703e8012001200041e8046a2207101220052002280200360200200020002903e8013703f00320012003102320052002280200360200200020002902e80122083703f003200041f8016a280200210220002802f4012105200041003602f001200020083702e80120042001100e20072001100e200029038805200629030020011010200020002902e8013703f003200041286a200320002802f001100f200520022000280228200028022c1002200029039804200041a0046a2903001037410041021036000b2001200041a8026a200b20097d200a20087d2004ad7d1011200029039804200041a0046a2903001037410021030b200320021036000b200041043a00c804200041c8046a103b000b200041d4046a4200370200200041013602cc04200041e485043602c804200041e4a1043602d004200041c8046a41ec85041031000b1034000b200041e4a1043602d004200041c8046a41cc86041031000bd40202037f037e23004180016b22042400200441186a2000102a0240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d100c200441086a2001102a2004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b4101460d01200120092008100c200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1021410221050b20044180016a240020050f0b4187a204412b41ac8704102f000b4801017f230041206b220124002001410c6a420137020020014101360204200141b09f043602002001410436021c200120003602182001200141186a360208200141cc86041031000bf40402087f037e230041c0016b2200240002401027220141ff0171410546044020004180800136025041d2a604200041d0006a22011001200041286a200028025041d2a6044180800141c08204100a200020002903283702502000410036023002402001200041306a4104101d0d0020002d0030419b01470d0020002d003141ae01470d0020002d0032419d01470d0020002d003341de00470d00200041106a200041d0006a101f2000290310a7450d020b1034000b200020013a0050200041d0006a103b000b200041206a290300210820002903182109200041306a1025200041ec006a200041c8006a2202290000370200200041e4006a200041406b2203290000370200200041dc006a200041386a220429000037020020002000290030370254200041f08004360250200041003602b0012000428080013702b801200041d2a6043602b40141e7b98fb102200041b4016a2201100d200041d4006a2001100e200020002902b4013702a801200041086a200041a8016a220520002802bc01100f200028020c21062000280208210720002902a801210a200041003602bc012000200a3702b4012009200820011010200020002902b4013702a8012000200520002802bc01100f200720062000280200200028020410031a2000419a016a200229000037010020004192016a20032900003701002000418a016a200429000037010020004182016a20002900303701002000200837035820002009370350200041013a008101200041003a0060200041d0006a1021200920081037230041106b22002400200042808001370208200041d2a604360204200041046a22014100101b20014100101b4100200028020c102d1038000b7701027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002103e2004280208200428020c103f200028020821030b200028020020036a2001200210091a2003200220036a22014b044041808904411c418c8f04102f000b20002001360208200441106a24000bc00301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003104220022802082105200228020c0c020b200528020021080240200310432205450440410021050c010b20052008200710091a0b20030c010b2002200310422002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41a08904412141e88a04102f000b1f00024020004181808080784704402000450d0120011040000b0f0b1041000b860101017f230041306b220124002001200036020c2001411c6a420137020020014102360214200141b88c043602102001410736022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c200041c88c043602182000200141106a360214200041889004360210200041e4a10436020c2000410c6a104a000b3c01017f230041206b22002400200041146a42003702002000410136020c2000418c8b04360208200041e4a104360210200041086a41948b041031000b2001017f41d2a6052d00001a20011043210220002001360204200020023602000be70101027f024002400240027f41c4a6042d0000044041c8a6042802000c010b3f002202418080044f0d0141c8a60441e0a60536020041c4a60441013a000041cca604200241107436020041e0a6050b2101027f4100200020016a22022001490d001a41cca6042802002002490440200041ffff036a220241107640002201417f460d042001418080044f0d032001411074220120024180807c716a22022001490d0441cca60420023602004100200020016a22022001490d011a0b41c8a604200236020020010b0f0b41b0a1044121419ca104102f000b41b0a104412141d4a104102f000b41000b0c00200041dc8904200110450bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10562003200329031037021c200341086a20062001105620032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0c00200020012002103d41000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101103e2004280208200428020c103f200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b103d0b200241106a240041000f0b41808904411c41fc8e04102f000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e2206410174418d92046a2f00003b0000200241026b2006419c7f6c20046a41ffff0371410174418d92046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff0371410174418d92046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a2002410174418d92046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041e4a1042104200241e4a10441e4a104104c20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004104f0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004104f0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004104f0d03200341106a2001200920026b4101105020032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10510d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101105020032802082205418080c400460d02200328020c2109200128021422022001280218220120072004104f0d02200220082006200128020c1100000d022005200920022001105121000c020b0c020b41d08f04411c41c89404102f000b200341406b240020000f0b41a08f04412141a09f04102f000b0e0020002802001a03400c000b000bc20201047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141b4a2043602102001410836022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441b8a2046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000104220012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10440d032001280230210020012802382103024041d0a6042d000045044041d1a6042d00004101710d010b200020031004410947044041d0a60441013a00000b41d1a60441013a00000b000b41808904411c41909f04102f000b1041000b20001040000b41d88c0441332001413f6a41c4890441f88d041026000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200104d22042006200120006b2200417c716a2000410371104d6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b418c9804104e200228020c21052002280208210620022002280200200228020422002000417c7141f89904104e200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41d08f04411c41b89a04102f000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441d08f04411c41989a04102f000b41d08f04411c41889a04102f000b41d08f04411c41a89a04102f000b41d08f04411c41e89904102f000b20002001104d21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41d08f04411c41909f04102f000b3d002002200349044041e4a10441232004102f000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41d08f04411c41d89404102f000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41d08f04411c41bc9b04102f000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41a08f04412141d09c04102f000bca0301067f230041306b22022400200028020421042000280200210302400240027f024020012802002205200128020822007204402000450d032001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1052200228021c418080c400470d010c050b0b200241106a200241246a10522002280214418080c400460d03024020022802102200450d00200020044f044020002004460d010c030b200020036a2c00004140480d020b200241086a4100200020031053200228020c210620022802080c020b200128021420032004200141186a28020028020c11000021000c030b41000b21002006200420001b21042000200320001b21030b2005450440200128021420032004200141186a28020028020c11000021000c010b200128020422002003200320046a104c22054b044020022001200020056b410010504101210020022802002205418080c400460d01200228020421062001280214220720032004200141186a280200220128020c1100000d012005200620072001105121000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044109470d0120012802000b2802002104410121030b20002004360204200020033602000bd40701107f230041d0006b22032400200341003b014c200320023602482003410036024420034281808080a00137023c2003200236023820034100360234200320023602302003200136022c2003410a3602282000280204210c2000280200210d2000280208210e200341406b210f027f0340024020032d004d450440200328022c210a02400240024002402003280238220b200328023022104b0d0020032802342202200b4b0d00200328023c2204450d012004200f6a41016b21110340200a200222076a210020112d0000210602400240024002400240027f02400240200b20026b220541084f0440024002402000200041036a417c712202460440200541086b2108410021020c010b200341206a20062000200220006b2202105820032802204101460d012002200541086b22084b0d030b200641818284086c21090340200020026a220141046a2802002009732212417f73201241818284086b7120012802002009732201417f73200141818284086b7172418081828478710d03200241086a220220084d0d000b0c020b200328022421010c020b200341106a20062000200510582003280214210120032802100c020b200220054b0d02200341186a2006200020026a200520026b1058410020032802184101470d011a2002200328021c6a22012002490d030b41010b22004101460440200141016a2202450d0302402007200220076a22024d04402003200236023420022004490d07200220104d0d010c070b41d08f04411c41f49d04102f000b200441054f0d04027f200a200220046b6a2106200f210720042105034041002005450d011a200541016b210520072d0000210820062d00002109200641016a2106200741016a210720082009460d000b200920086b0b0d05200341086a20032802442002200a105320032002360244200328020c2100200328020821020c0a0b2003200b3602340c060b41a08f04412141e09504102f000b41d08f04411c41f09504102f000b41d08f04411c41e49d04102f000b2004410441849e04100b000b2002200b4d0d000b0b200341013a004d20032d004c044020032802482101200328024421040c020b20032802482201200328024422044f04404100210220012004470d020c030b41a08f04412141cc9b04102f000b41a08f04412141d49d04102f000b200320042001200a105320032802042100200328020021020b20020d010b41000c020b0240200e2d00000440200d419491044104200c28020c1100000d010b200e2000047f200020026a41016b2d0000410a460541000b22013a0000200d20022000200c28020c110000450d010b0b41010b2100200341d0006a240020000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4e01027f20002802042102200028020021030240200028020822002d0000450d002003419491044104200228020c110000450d0041010f0b20002001410a463a00002003200120022802101101000b0c00200041fc9004200110450beb0201057f230041406a22022400200028020021054101210002402001280214220441989004410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4107360200200241346a410736020020024103360214200241f08f0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10450d00200528020822030440200441a49004410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a104521000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441a49004410220011100000d00200420032802002003280204200111000021000b200241406b240020000b130020004504404187a204412b2001102f000b0b6901017f230041306b220424002004200136020420042000360200200441146a42023702002004412c6a41073602002004410236020c20042003360208200441073602242004200441206a3602102004200441046a36022820042004360220200441086a20021031000b0bc5260200418080040bc10f2f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f73746f726167652d352e302e302d72632e312f7372632f6c617a792f6d617070696e672e7273e7dc23264661696c656420746f206765742076616c756520696e204d617070696e673a2074000100200000000000010070000000c4000000250000002c1201007500000091000000200000002c1201007500000091000000300000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b2d70616c6c65742d636f6e7472616374732d756170692d362e302e302f7372632f686f73742e7273000000cc000100710000002d000000170000000a0000000100000001000000030000004465636f6465427566666572546f6f536d616c6c52657475726e4572726f725375636365737343616c6c65655472617070656443616c6c656552657665727465644b65794e6f74466f756e645f42656c6f7753756273697374656e63655468726573686f6c645472616e736665724661696c65645f456e646f776d656e74546f6f4c6f77436f64654e6f74466f756e644e6f7443616c6c61626c654c6f6767696e6744697361626c656443616c6c52756e74696d654661696c656445636473615265636f766572794661696c6564537232353531395665726966794661696c656458636d457865637574696f6e4661696c656458636d53656e644661696c6564556e6b6e6f776e54686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e2c12010075000000800100000e0000002c120100750000001801000032000000656e636f756e746572656420756e6578706563746564206572726f72c80201001c0000002c12010075000000e1000000170000004411010076000000c40000003d0000004411010076000000c70000003b0000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f65726332302f6c69622e727300001c0301002e000000070000000500000073746f7261676520656e7472792077617320656d707479005c03010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279007c030100270000001c0301002e000000d30000003d00000001b5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb011a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d0000070000000d0000000e0000000b0000001a0000000e000000100000000c0000000b0000000f000000110000001300000013000000120000000d000000070000007f0101008601010093010100a1010100ac010100c6010100d4010100e4010100f0010100fb0101000a0201001b0201002e020100410201005302010060020100617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000c0000004572726f720000000d0000000c000000040000000e0000000f000000100000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e7273000000f404010071000000980100001c0000006361706163697479206f766572666c6f770000007805010011000000f40401007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000001306010015000000280601000d000000a40501006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72738b0601006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000000807010071000000610700000d0000000807010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041d08f040bf316617474656d707420746f206164642077697468206f766572666c6f77293a0000e410010000000000ed07010001000000ed070100010000000b00000000000000010000001100000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320260801002000000046080100120000003a200000e4100100000000006808010002000000120000000c00000004000000130000001400000015000000202020202c0a28280a2f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000d509010070000000050500000d000000d50901007000000097050000300000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000680a010075000000760000004b000000680a010075000000770000003400000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820000b010012000000120b01002200000072616e676520656e6420696e64657820440b010010000000120b010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000640b0100160000007a0b01000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300980b010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820281c0c010015000000310c01002b000000ec070100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000740c0100720000004700000015000000740c0100720000004f00000032000000740c0100720000005a00000009000000740c010072000000660000000d000000740c0100720000006400000011000000740c01007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000480d0100710000009100000011000000480d0100710000004f0200002d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e727300dc0d010073000000d3000000130000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273600e010074000000a101000047000000600e010074000000b401000020000000600e010074000000b401000011000000600e010074000000b8010000370000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000140f01007a00000095000000010000009d08010070000000d201000005000000e410010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167652f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f616c6c6f6361746f722d352e302e302d72632e312f7372632f62756d702e72730000301001006a000000870000001100000000000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000301001006a0000009400000016000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00e41001000000000032110100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000044110100760000005c0000003b00000044110100760000005c0000001400000044110100760000005d0000000e00000044110100760000005e000000340000004411010076000000680000000900000044110100760000008600000025000000441101007600000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72732f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e7273a11201006b000000770000000e000000190000001c000000160000001400000019000000b80f0100d10f0100ed0f010003100100171001","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"erc20","version":"5.0.0-rc.1","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"total_supply","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":["Creates a new ERC-20 contract with the specified initial supply."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":14},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":2},"balance":{"displayName":["Balance"],"type":0},"blockNumber":{"displayName":["BlockNumber"],"type":23},"chainExtension":{"displayName":["ChainExtension"],"type":24},"hash":{"displayName":["Hash"],"type":21},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":22}},"events":[{"args":[{"docs":[],"indexed":true,"label":"from","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":true,"label":"to","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when a token transfer occurs."],"label":"Transfer","module_path":"erc20::erc20","signature_topic":"0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb"},{"args":[{"docs":[],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":true,"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when an approval occurs that `spender` is allowed to withdraw","up to the amount of `value` tokens from `owner`."],"label":"Approval","module_path":"erc20::erc20","signature_topic":"0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d"}],"lang_error":{"displayName":["ink","LangError"],"type":15},"messages":[{"args":[],"default":false,"docs":[" Returns the total token supply."],"label":"total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0xdb6375a8"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the account balance for the specified `owner`.",""," Returns `0` if the account is non-existent."],"label":"balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x0f755a56"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"label":"spender","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the amount which `spender` is still allowed to withdraw from `owner`.",""," Returns `0` if no allowance has been set."],"label":"allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x6a00165e"},{"args":[{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` amount of tokens from the caller's account to account `to`.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the caller's account balance."],"label":"transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x84a15da1"},{"args":[{"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Allows `spender` to withdraw from the caller's account multiple times, up to"," the `value` amount.",""," If this function is called again it overwrites the current allowance with"," `value`.",""," An `Approval` event is emitted."],"label":"approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x681266a0"},{"args":[{"label":"from","type":{"displayName":["AccountId"],"type":2}},{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` tokens on the behalf of `from` to the account `to`.",""," This can be used to allow a contract to transfer tokens on ones behalf and/or"," to charge fees in sub-currencies, for example.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientAllowance` error if there are not enough tokens allowed"," for the caller to withdraw from `from`.",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the account balance of `from`."],"label":"transfer_from","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x0b396f18"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"total_supply"},{"layout":{"root":{"layout":{"leaf":{"key":"0xe7dc2326","ty":0}},"root_key":"0xe7dc2326","ty":1}},"name":"balances"},{"layout":{"root":{"layout":{"leaf":{"key":"0xb721a0ec","ty":0}},"root_key":"0xb721a0ec","ty":9}},"name":"allowances"}],"name":"Erc20"}},"root_key":"0x00000000","ty":13}},"types":[{"id":0,"type":{"def":{"primitive":"u128"}}},{"id":1,"type":{"def":{"composite":{}},"params":[{"name":"K","type":2},{"name":"V","type":0},{"name":"KeyType","type":5}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":2,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":3,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":7}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":6,"type":{"def":{"composite":{}},"path":["ink_storage_traits","impls","AutoKey"]}},{"id":7,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":8,"type":{"def":{"tuple":[]}}},{"id":9,"type":{"def":{"composite":{}},"params":[{"name":"K","type":10},{"name":"V","type":0},{"name":"KeyType","type":11}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":10,"type":{"def":{"tuple":[2,2]}}},{"id":11,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":12}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":12,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"total_supply","type":0,"typeName":",>>::Type"},{"name":"balances","type":1,"typeName":" as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type"},{"name":"allowances","type":9,"typeName":" as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type"}]}},"path":["erc20","erc20","Erc20"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":15}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":15}],"path":["Result"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":15}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":19}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":19}],"path":["Result"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"index":0,"name":"InsufficientBalance"},{"index":1,"name":"InsufficientAllowance"}]}},"path":["erc20","erc20","Error"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":22,"type":{"def":{"primitive":"u64"}}},{"id":23,"type":{"def":{"primitive":"u32"}}},{"id":24,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"5"} +{"source":{"hash":"0x656ec6137638ba8ad1477e96dfe91eb90ca625dfbe543057868ea521fd1b73fe","language":"ink! 5.0.0-rc.1","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001691160037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f0060047f7f7f7f017f60057f7f7f7f7f0060000060017f017f60027e7e0060037f7e7e0060037e7e7f0060047f7f7e7e006000017f60057f7f7f7f7f017f60047f7f7e7e017f02c7010a057365616c310b6765745f73746f726167650006057365616c3005696e7075740002057365616c300d6465706f7369745f6576656e740005057365616c320b7365745f73746f726167650006057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c300663616c6c65720002057365616c301176616c75655f7472616e736665727265640002057365616c300f686173685f626c616b65325f323536000303656e76066d656d6f7279020102100356550007030b0202030c0d0202030504040307040202000202020403020204070e01010203040903030102010f080a020a0208100408030502040802090100000101010402010107060506020501010300050101010205040501700116160608017f01418080040b0711020463616c6c0039066465706c6f79003c091b010041010b15555432302829485b492c2c282c4647444b2c57595a0aac7e552b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2200200120034d044020002001360204200020023602000f0b200120032004100b000b0e0020002001200241d49604105d0bb50102047f017e230041306b2203240020034100360220200342808001370228200341d2a60436022441e7b98fb102200341246a2204100d20002004100e20032003290224370218200341106a200341186a2205200328022c100f2003280214210020032802102106200329021821072003410036022c20032007370224200120022004101020032003290224370218200341086a2005200328022c100f200620002003280208200328020c10031a200341306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041018200241106a24000b0a0020012000412010180b4501017f2002200128020422034b044041e4a1044123419ca404102f000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101018200341106a24000bbb0102037f017e230041306b2204240020044100360220200442808001370228200441d2a60436022441b7c380e57e200441246a2205100d20002005100e20012005100e20042004290224370218200441106a200441186a2206200428022c100f2004280214210020042802102101200429021821072004410036022c20042007370224200220032005101020042004290224370218200441086a2006200428022c100f200120002004280208200428020c10031a200441306a24000bb20102037f017e230041d0006b22022400200241186a220420001013200229021821052002410036022c200220053702242001200241246a2203100e20022002290224370218200241106a2004200228022c100f2003200228021020022802141014200241086a200028020020002802042000280208220110152002410036024c200220022903083702442003200241c4006a100e20012001200228024c6a22014d101620002001360208200241d0006a24000b3f01027f200128020422032001280208220249044020022003418ca404102e000b200041003602082000200320026b3602042000200128020020026a3602000b8f0201077f230041d0006b22032400200341286a22044200370300200341206a22054200370300200341186a22064200370300200342003703100240200241214f0440200341c8006a22074200370300200341406b22084200370300200341386a220942003703002003420037033020012002200341306a1008200420072903003703002005200829030037030020062009290300370300200320032903303703100c010b200341086a2002200341106a412041ac8104100a2003280208200328020c2001200241bc810410190b20002003290310370000200041186a200341286a290300370000200041106a200341206a290300370000200041086a200341186a290300370000200341d0006a24000b2900200220034904402003200241fc8504102e000b2000200220036b3602042000200120036a3602000b150020004504404187a204412b418c8604102f000b0bbd0102047f017e230041d0006b22012400200141186a220220001013200129021821052001410036022c20012005370224200141003a0044200141246a2203200141c4006a22044101101820012001290224370218200141106a2002200128022c100f2003200128021020012802141014200141086a200028020020002802042000280208220210152001410036024c2001200129030837024420032004100e20022002200128024c6a22024d101620002002360208200141d0006a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741bca304105c0240200320044f0440200320054b0d01200420066a200320046b2001200241dca3041019200741eca304105c200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41073602002000410236020c200041889704360208200041073602242000200041206a3602102000200041046a36022820002000360220200041086a41cca3041031000b2003200541cca304100b000b7b002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41073602002000410336020c200041dc9804360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a20041031000b5c01027f230041206b22012400200141086a200028020020002802042000280208220210152001410036021c20012001290308370214200141146a410c101b20022002200128021c6a22024d101620002002360208200141206a24000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41073602002000410236020c200041d89004360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a41fca3041031000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101d45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f20002802042203200249220445044020012002200028020022012002418ca60410192000200320026b3602042000200120026a3602000b20040b5502027f017e230041206b22022400200241086a2001101f200241186a29030021042002280208210320002002290310370308200041106a200437030020002003200128020472410047ad370300200241206a24000b5f02017f037e230041106b2202240020024200370308200242003703000240200120024110101d45044020022903082104200229030021050c010b420121030b2000200537030820002003370300200041106a2004370300200241106a24000ba90102017f027e230041406a220224002002411f6a2001101c0240024020022d001f0d0020022001101f2002290300a70d00200241106a2903002103200229030821042000200229002037000820004200370300200041286a2004370300200041306a2003370300200041206a200241386a290000370000200041186a200241306a290000370000200041106a200241286a2900003700000c010b200042013703000b200241406b24000be90202077f017e230041406a22012400200142808001370228200141d2a604360224200141246a101a200141186a2001412c6a28020036020020012001290224370310200141306a200141106a41bd87041022200041316a2105024020002d00100440200141306a200041116a10120c010b200141306a10170b200041106a2106200141186a200141386a28020036020020012001290230370310024020052d00000440200141106a200041326a10120c010b200141106a10170b200141386a2202200141186a220328020036020020012001290310370330200141106a2204200141306a2207102320022003280200360200200120012902102208370330200141206a2802002102200128021c210320014100360218200120083702102006200410242005200410242000290300200041086a2903002004101020012001290210370330200141086a20072001280218100f200320022001280208200128020c1002200141406b24000bda0102037f017e230041d0006b22032400024020020440200341186a220520011013200329021821062003410036022c200320063702242002200341246a2204100e20032003290224370218200341106a2005200328022c100f2004200328021020032802141014200341086a200128020020012802042001280208220210152003410036024c200320032903083702442004200341c4006a100e20022002200328024c6a22024d1016200120023602080c010b200110170b20002001290200370200200041086a200141086a280200360200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200100f20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b210020002d000045044020014100101b0f0b20014101101b200041016a2001100e0bb20101027f230041306b2201240020014180800136020441d2a604200141046a2202100620014180800136022c200141d2a6043602282002200141286a101c20012d00040440200141103a000441e7840441c100200141046a41d0820441a885041026000b2000200141066a290000370001200041096a2001410e6a290000370000200041116a200141166a290000370000200041186a2001411d6a290000370000200020012d00053a0000200141306a24000b7c01017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a42023702002005413c6a41013602002005410236021c200541ec9004360218200541023602342005200541306a3602202005200541106a3602382005200541086a360230200541186a20041031000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10072000290308210120002903002102200041206a2400410541042001200284501b0b1b00200128021441d489044105200141186a28020028020c1100000b3400200128021420002802002d0000410274220041c088046a2802002000418088046a280200200141186a28020028020c1100000bff0202057f027e230041d0006b220224002002410036023020024280800137023c200241d2a60436023841e7b98fb102200241386a2204100d20012004100e20022002290238370228200241206a200241286a2002280240100f2002280224210320022802202105200228022821012002200228022c2206360238200520032001200410002103200241186a20022802382001200641c08204100a027e024002400240024020030e0400010103010b200228021821012002200228021c36023c200220013602382002200241386a101e2002290300a70d0120022903082107200241106a2903000c030b200241c4006a42003702002002410136023c200241e48504360238200241e4a104360240200241386a41ec85041031000b200241103a0037200241c4006a42013702002002410136023c2002419481043602382002410336022c2002200241286a3602402002200241376a360228200241386a419c81041031000b42000b21082000200737030020002008370308200241d0006a24000b850302047f027e230041d0006b220324002003410036023020034280800137023c200341d2a60436023841b7c380e57e200341386a2204100d20012004100e20022004100e20032003290238370228200341206a200341286a2003280240100f2003280224210220032802202105200328022821012003200328022c2206360238200520022001200410002102200341186a20032802382001200641c08204100a027e024002400240024020020e0400010103010b200328021821012003200328021c36023c200320013602382003200341386a101e2003290300a70d0120032903082107200341106a2903000c030b200341c4006a42003702002003410136023c200341e48504360238200341e4a104360240200341386a41ec85041031000b200341103a0037200341c4006a42013702002003410136023c2003419481043602382003410336022c2003200341286a3602402003200341376a360228200341386a419c81041031000b42000b21082000200737030020002008370308200341d0006a24000b0300010b1b002000418180014f044020004180800141b88504100b000b20000b0e0020002001200241b49604105d0b4601017f230041206b220324002003410c6a420037020020034101360204200341e4a1043602082003200136021c200320003602182003200341186a360200200320021031000b840101017f230041306b22022400200241146a42013702002002410136020c200241b09f0436020820024102360224200220002d00004102742200419ca6046a28020036022c2002200041b0a6046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10452100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241889004360210200241e4a10436020c2002410c6a104a000b8f0101027f230041106b22022400027f024002400240410220002d000041106b41ff01712203200341024f1b41016b0e020102000b20022000360208200141e082044106200241086a410510330c020b200128021441e68204410e200141186a28020028020c1100000c010b2002200036020c200141f48204410b2002410c6a410610330b2100200241106a240020000ba20201047f230041406a220524004101210702402000280214220620012002200041186a280200220228020c22011100000d000240200028021c22084104714504402006419a9104410120011100000d022003200020041101000d0220002802142106200028021828020c21010c010b2006419b9104410220011100000d01200541013a001b200541346a41fc9004360200200520023602102005200636020c20052008360238200520002d00203a003c2005200028021036022c200520002902083702242005200029020037021c20052005411b6a36021420052005410c6a36023020032005411c6a20041101000d012005280230419891044102200528023428020c1100000d010b200641ec8f044101200111000021070b200541406b240020070b3c01027f230041106b22002400200042808001370208200041d2a604360204200041046a22014101101b20014101101b4101200028020c102d1038000b3e01027f230041106b22022400200242808001370208200241d2a604360204200241046a22034100101b20002001200310104100200228020c102d1038000b5101027f230041106b22022400200242808001370208200241d2a604360204200241046a22034100101b2003200141ff0171410247047f20034101101b20010541000b101b2000200228020c102d1038000bab0102057f017e230041306b2202240020024100360220200242808001370228200241d2a6043602244100200241246a2203100d20022002290224370218200241106a200241186a2204200228022c100f2002280214210520022802102106200229021821072002410036022c20022007370224200020012003101020022002290224370218200241086a2004200228022c100f200620052002280208200228020c10031a200241306a24000b0d00200041d2a60420011005000b8a1602087f047e230041a0056b22002400024002400240102741ff017141054604402000418080013602c80441d2a604200041c8046a2201100120004180016a20002802c80441d2a6044180800141c08204100a20002000290380013702bc04200041003602c804200041bc046a20014104101d0d0220002d00cb04210220002d00ca04210320002d00c9042101027f02400240024002400240024020002d00c8042204410b6b0e050509090901000b0240200441e8006b0e03040902000b2004418401460d02200441db0147200141ff017141e3004772200341f50047200241a8014772720d0841000c050b200141ff017141f50047200341da004772200241d60047720d07200041c8046a200041bc046a101c20002d00c8040d07200041f0016a200041d2046a290000370300200041f8016a200041da046a290000370300200041ff016a200041e1046a2900003700002000200041ca046a2900003703e80120002d00c904210141010c040b200141ff0171200341164772200241de0047720d06200041a8026a200041bc046a101c20002d00a8020d0620004188016a200041bc046a101c20002d0088010d06200041ff046a200041a1016a290000370000200041f7046a20004199016a290000370000200041ef046a20004191016a290000370000200041d0046a200041b2026a290000370300200041d8046a200041ba026a290000370300200041df046a200041c1026a29000037000020002000290089013700e7042000200041aa026a2900003703c80420002d00a9022101200041e8016a200041c8046a413f10091a41020c030b200141ff017141a10147200341dd004772200241a10147720d05200041c8046a200041bc046a102020002903c8044200520d05200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41030c020b200141ff0171411247200341e6004772200241a00147720d04200041c8046a200041bc046a102020002903c8044200520d04200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41040c010b200141ff0171413947200341ef0047722002411847720d03200041f0036a200041bc046a101c20002d00f0030d0320004198046a200041bc046a101c20002d0098040d03200041e8006a200041bc046a101f2000290368a70d03200041f8006a290300210820002903702109200041c8036a200041f1036a220141186a290000370300200041c0036a200141106a290000370300200041b8036a200141086a290000370300200041d8036a200041a1046a290000370300200041e0036a200041a9046a290000370300200041e8036a200041b1046a29000037030020002000290099043703d003200020012900003703b003200041f0026a2202200041b0036a41c00010091a200041ae026a2000418e016a200041ce046a200241c000100941c000100941c00010091a200041e8016a200041a8026a413f10091a2000200041ea026a2800003600e301200020002800e7023602e00141050b210220004188016a410272200041e8016a413f10091a200041cc016a20002800e301360000200041d8016a2008370300200020002802e0013600c901200020093703d001200020013a008901200020023a008801200041003602b0022000428080013702cc04200041d2a6043602c8044100200041c8046a2203100d200020002902c8043702a802200041e0006a200041a8026a20002802d004100f200028026421042000280260210520002802a8022101200020002802ac0222063602c804200520042001200310002103200041d8006a20002802c8042001200641c08204100a02400240024020030e0400040401040b200028025821012000200028025c3602cc04200020013602c804200041406b200041c8046a101f2000290340a745044020002802cc04450d020b200041d4046a4200370200200041013602cc04200041a487043602c8040c050b200041d4046a4200370200200041013602cc04200041f486043602c8040c040b20004188016a4101722101200041d0006a290300210820002000290348220937039804200020083703a00402400240024002400240024002400240200241016b0e050001040502030b230041406a22022400200241286a200141086a290000370200200241306a200141106a290000370200200241386a200141186a290000370200200220004198046a36021c20022001290000370220200241086a200241206a102a20022903082108200041086a2201200241106a29030037030820012008370300200241406b24002000290308200041106a2903001035000b230041e0006b22022400200220004198046a36021c200241086a200241206a200141c0001009200241406b102b20022903082108200041186a2201200241106a29030037030820012008370300200241e0006a24002000290318200041206a2903001035000b200041d0046a20004190016a41d00010092101200020004198046a3602c80420004190056a290300210920004198056a2903002108200041a8026a22021025200041306a20012002102b41012103410121022000290330220b2009542204200041386a290300220a2008542008200a511b0d04410221022001200041f0046a20092008103a41ff017122054102460d03200541004721020c040b200920081035000b200041d0046a20004190016a413010092101200020004198046a3602c804200041f8046a2903002108200041f0046a2903002109200041a8026a220210252002200120092008103a220141ff0171410246047f200029039804200041a0046a290300103741000541010b20011036000b200041b8036a20004190016a413010092101200020004198046a3602b003200041e0036a2903002108200041d8036a2903002109200041f0026a2202102520022001200920081011200041c0026a20004188036a290000370300200041b8026a20004180036a290000370300200041b0026a200041f8026a290000370300200041d0026a20004198016a290300370300200041d8026a200041a0016a290300370300200041e0026a200041a8016a290300370300200020002900f0023703a80220002000290390013703c802200041c8046a2204200041a8026a41c00010091a20004190056a2206200837030020002009370388052000428080013702c004200041d2a6043602bc04200041bc046a101a200041f0016a2202200041c4046a280200360200200020002902bc043703e801200041f0036a2203200041e8016a220141de870410222003200410122002200041f8036a2205280200360200200020002902f0033703e8012001200041e8046a2207101220052002280200360200200020002903e8013703f00320012003102320052002280200360200200020002902e80122083703f003200041f8016a280200210220002802f4012105200041003602f001200020083702e80120042001100e20072001100e200029038805200629030020011010200020002902e8013703f003200041286a200320002802f001100f200520022000280228200028022c1002200029039804200041a0046a2903001037410041021036000b2001200041a8026a200b20097d200a20087d2004ad7d1011200029039804200041a0046a2903001037410021030b200320021036000b200041043a00c804200041c8046a103b000b200041d4046a4200370200200041013602cc04200041e485043602c804200041e4a1043602d004200041c8046a41ec85041031000b1034000b200041e4a1043602d004200041c8046a41cc86041031000bd40202037f037e23004180016b22042400200441186a2000102a0240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d100c200441086a2001102a2004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b4101460d01200120092008100c200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1021410221050b20044180016a240020050f0b4187a204412b41ac8704102f000b4801017f230041206b220124002001410c6a420137020020014101360204200141b09f043602002001410436021c200120003602182001200141186a360208200141cc86041031000bf40402087f037e230041c0016b2200240002401027220141ff0171410546044020004180800136025041d2a604200041d0006a22011001200041286a200028025041d2a6044180800141c08204100a200020002903283702502000410036023002402001200041306a4104101d0d0020002d0030419b01470d0020002d003141ae01470d0020002d0032419d01470d0020002d003341de00470d00200041106a200041d0006a101f2000290310a7450d020b1034000b200020013a0050200041d0006a103b000b200041206a290300210820002903182109200041306a1025200041ec006a200041c8006a2202290000370200200041e4006a200041406b2203290000370200200041dc006a200041386a220429000037020020002000290030370254200041f08004360250200041003602b0012000428080013702b801200041d2a6043602b40141e7b98fb102200041b4016a2201100d200041d4006a2001100e200020002902b4013702a801200041086a200041a8016a220520002802bc01100f200028020c21062000280208210720002902a801210a200041003602bc012000200a3702b4012009200820011010200020002902b4013702a8012000200520002802bc01100f200720062000280200200028020410031a2000419a016a200229000037010020004192016a20032900003701002000418a016a200429000037010020004182016a20002900303701002000200837035820002009370350200041013a008101200041003a0060200041d0006a1021200920081037230041106b22002400200042808001370208200041d2a604360204200041046a22014100101b20014100101b4100200028020c102d1038000b7701027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002103e2004280208200428020c103f200028020821030b200028020020036a2001200210091a2003200220036a22014b044041808904411c418c8f04102f000b20002001360208200441106a24000bc00301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003104220022802082105200228020c0c020b200528020021080240200310432205450440410021050c010b20052008200710091a0b20030c010b2002200310422002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41a08904412141e88a04102f000b1f00024020004181808080784704402000450d0120011040000b0f0b1041000b860101017f230041306b220124002001200036020c2001411c6a420137020020014102360214200141b88c043602102001410736022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c200041c88c043602182000200141106a360214200041889004360210200041e4a10436020c2000410c6a104a000b3c01017f230041206b22002400200041146a42003702002000410136020c2000418c8b04360208200041e4a104360210200041086a41948b041031000b2001017f41d2a6052d00001a20011043210220002001360204200020023602000be70101027f024002400240027f41c4a6042d0000044041c8a6042802000c010b3f002202418080044f0d0141c8a60441e0a60536020041c4a60441013a000041cca604200241107436020041e0a6050b2101027f4100200020016a22022001490d001a41cca6042802002002490440200041ffff036a220241107640002201417f460d042001418080044f0d032001411074220120024180807c716a22022001490d0441cca60420023602004100200020016a22022001490d011a0b41c8a604200236020020010b0f0b41b0a1044121419ca104102f000b41b0a104412141d4a104102f000b41000b0c00200041dc8904200110450bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10562003200329031037021c200341086a20062001105620032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0c00200020012002103d41000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101103e2004280208200428020c103f200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b103d0b200241106a240041000f0b41808904411c41fc8e04102f000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e2206410174418d92046a2f00003b0000200241026b2006419c7f6c20046a41ffff0371410174418d92046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff0371410174418d92046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a2002410174418d92046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041e4a1042104200241e4a10441e4a104104c20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004104f0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004104f0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004104f0d03200341106a2001200920026b4101105020032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10510d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101105020032802082205418080c400460d02200328020c2109200128021422022001280218220120072004104f0d02200220082006200128020c1100000d022005200920022001105121000c020b0c020b41d08f04411c41c89404102f000b200341406b240020000f0b41a08f04412141a09f04102f000b0e0020002802001a03400c000b000bc20201047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141b4a2043602102001410836022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441b8a2046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000104220012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10440d032001280230210020012802382103024041d0a6042d000045044041d1a6042d00004101710d010b200020031004410947044041d0a60441013a00000b41d1a60441013a00000b000b41808904411c41909f04102f000b1041000b20001040000b41d88c0441332001413f6a41c4890441f88d041026000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200104d22042006200120006b2200417c716a2000410371104d6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b418c9804104e200228020c21052002280208210620022002280200200228020422002000417c7141f89904104e200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41d08f04411c41b89a04102f000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441d08f04411c41989a04102f000b41d08f04411c41889a04102f000b41d08f04411c41a89a04102f000b41d08f04411c41e89904102f000b20002001104d21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41d08f04411c41909f04102f000b3d002002200349044041e4a10441232004102f000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41d08f04411c41d89404102f000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41d08f04411c41bc9b04102f000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41a08f04412141d09c04102f000bca0301067f230041306b22022400200028020421042000280200210302400240027f024020012802002205200128020822007204402000450d032001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1052200228021c418080c400470d010c050b0b200241106a200241246a10522002280214418080c400460d03024020022802102200450d00200020044f044020002004460d010c030b200020036a2c00004140480d020b200241086a4100200020031053200228020c210620022802080c020b200128021420032004200141186a28020028020c11000021000c030b41000b21002006200420001b21042000200320001b21030b2005450440200128021420032004200141186a28020028020c11000021000c010b200128020422002003200320046a104c22054b044020022001200020056b410010504101210020022802002205418080c400460d01200228020421062001280214220720032004200141186a280200220128020c1100000d012005200620072001105121000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044109470d0120012802000b2802002104410121030b20002004360204200020033602000bd40701107f230041d0006b22032400200341003b014c200320023602482003410036024420034281808080a00137023c2003200236023820034100360234200320023602302003200136022c2003410a3602282000280204210c2000280200210d2000280208210e200341406b210f027f0340024020032d004d450440200328022c210a02400240024002402003280238220b200328023022104b0d0020032802342202200b4b0d00200328023c2204450d012004200f6a41016b21110340200a200222076a210020112d0000210602400240024002400240027f02400240200b20026b220541084f0440024002402000200041036a417c712202460440200541086b2108410021020c010b200341206a20062000200220006b2202105820032802204101460d012002200541086b22084b0d030b200641818284086c21090340200020026a220141046a2802002009732212417f73201241818284086b7120012802002009732201417f73200141818284086b7172418081828478710d03200241086a220220084d0d000b0c020b200328022421010c020b200341106a20062000200510582003280214210120032802100c020b200220054b0d02200341186a2006200020026a200520026b1058410020032802184101470d011a2002200328021c6a22012002490d030b41010b22004101460440200141016a2202450d0302402007200220076a22024d04402003200236023420022004490d07200220104d0d010c070b41d08f04411c41f49d04102f000b200441054f0d04027f200a200220046b6a2106200f210720042105034041002005450d011a200541016b210520072d0000210820062d00002109200641016a2106200741016a210720082009460d000b200920086b0b0d05200341086a20032802442002200a105320032002360244200328020c2100200328020821020c0a0b2003200b3602340c060b41a08f04412141e09504102f000b41d08f04411c41f09504102f000b41d08f04411c41e49d04102f000b2004410441849e04100b000b2002200b4d0d000b0b200341013a004d20032d004c044020032802482101200328024421040c020b20032802482201200328024422044f04404100210220012004470d020c030b41a08f04412141cc9b04102f000b41a08f04412141d49d04102f000b200320042001200a105320032802042100200328020021020b20020d010b41000c020b0240200e2d00000440200d419491044104200c28020c1100000d010b200e2000047f200020026a41016b2d0000410a460541000b22013a0000200d20022000200c28020c110000450d010b0b41010b2100200341d0006a240020000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4e01027f20002802042102200028020021030240200028020822002d0000450d002003419491044104200228020c110000450d0041010f0b20002001410a463a00002003200120022802101101000b0c00200041fc9004200110450beb0201057f230041406a22022400200028020021054101210002402001280214220441989004410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4107360200200241346a410736020020024103360214200241f08f0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10450d00200528020822030440200441a49004410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a104521000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441a49004410220011100000d00200420032802002003280204200111000021000b200241406b240020000b130020004504404187a204412b2001102f000b0b6901017f230041306b220424002004200136020420042000360200200441146a42023702002004412c6a41073602002004410236020c20042003360208200441073602242004200441206a3602102004200441046a36022820042004360220200441086a20021031000b0bc5260200418080040bc10f2f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f73746f726167652d352e302e302d72632e312f7372632f6c617a792f6d617070696e672e7273e7dc23264661696c656420746f206765742076616c756520696e204d617070696e673a2074000100200000000000010070000000c4000000250000002c1201007500000091000000200000002c1201007500000091000000300000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b2d70616c6c65742d636f6e7472616374732d756170692d362e302e302f7372632f686f73742e7273000000cc000100710000002d000000170000000a0000000100000001000000030000004465636f6465427566666572546f6f536d616c6c52657475726e4572726f725375636365737343616c6c65655472617070656443616c6c656552657665727465644b65794e6f74466f756e645f42656c6f7753756273697374656e63655468726573686f6c645472616e736665724661696c65645f456e646f776d656e74546f6f4c6f77436f64654e6f74466f756e644e6f7443616c6c61626c654c6f6767696e6744697361626c656443616c6c52756e74696d654661696c656445636473615265636f766572794661696c6564537232353531395665726966794661696c656458636d457865637574696f6e4661696c656458636d53656e644661696c6564556e6b6e6f776e54686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e2c12010075000000800100000e0000002c120100750000001801000032000000656e636f756e746572656420756e6578706563746564206572726f72c80201001c0000002c12010075000000e1000000170000004411010076000000c40000003d0000004411010076000000c70000003b0000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f65726332302f6c69622e727300001c0301002e000000070000000500000073746f7261676520656e7472792077617320656d707479005c03010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279007c030100270000001c0301002e000000d30000003d00000001b5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb011a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d0000070000000d0000000e0000000b0000001a0000000e000000100000000c0000000b0000000f000000110000001300000013000000120000000d000000070000007f0101008601010093010100a1010100ac010100c6010100d4010100e4010100f0010100fb0101000a0201001b0201002e020100410201005302010060020100617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000c0000004572726f720000000d0000000c000000040000000e0000000f000000100000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e7273000000f404010071000000980100001c0000006361706163697479206f766572666c6f770000007805010011000000f40401007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000001306010015000000280601000d000000a40501006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72738b0601006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000000807010071000000610700000d0000000807010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041d08f040bf316617474656d707420746f206164642077697468206f766572666c6f77293a0000e410010000000000ed07010001000000ed070100010000000b00000000000000010000001100000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320260801002000000046080100120000003a200000e4100100000000006808010002000000120000000c00000004000000130000001400000015000000202020202c0a28280a2f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000d509010070000000050500000d000000d50901007000000097050000300000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000680a010075000000760000004b000000680a010075000000770000003400000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820000b010012000000120b01002200000072616e676520656e6420696e64657820440b010010000000120b010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000640b0100160000007a0b01000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300980b010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820281c0c010015000000310c01002b000000ec070100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000740c0100720000004700000015000000740c0100720000004f00000032000000740c0100720000005a00000009000000740c010072000000660000000d000000740c0100720000006400000011000000740c01007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000480d0100710000009100000011000000480d0100710000004f0200002d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e727300dc0d010073000000d3000000130000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273600e010074000000a101000047000000600e010074000000b401000020000000600e010074000000b401000011000000600e010074000000b8010000370000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000140f01007a00000095000000010000009d08010070000000d201000005000000e410010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167652f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f616c6c6f6361746f722d352e302e302d72632e312f7372632f62756d702e72730000301001006a000000870000001100000000000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000301001006a0000009400000016000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00e41001000000000032110100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000044110100760000005c0000003b00000044110100760000005c0000001400000044110100760000005d0000000e00000044110100760000005e000000340000004411010076000000680000000900000044110100760000008600000025000000441101007600000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72732f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e7273a11201006b000000770000000e000000190000001c000000160000001400000019000000b80f0100d10f0100ed0f010003100100171001","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"erc20","version":"5.0.0-rc.1","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"total_supply","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":["Creates a new ERC-20 contract with the specified initial supply."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":14},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":2},"balance":{"displayName":["Balance"],"type":0},"blockNumber":{"displayName":["BlockNumber"],"type":23},"chainExtension":{"displayName":["ChainExtension"],"type":24},"hash":{"displayName":["Hash"],"type":21},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":22}},"events":[{"args":[{"docs":[],"indexed":true,"label":"from","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":true,"label":"to","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when a token transfer occurs."],"label":"Transfer","module_path":"erc20::erc20","signature_topic":"0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb"},{"args":[{"docs":[],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":true,"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when an approval occurs that `spender` is allowed to withdraw","up to the amount of `value` tokens from `owner`."],"label":"Approval","module_path":"erc20::erc20","signature_topic":"0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d"}],"lang_error":{"displayName":["ink","LangError"],"type":15},"messages":[{"args":[],"default":false,"docs":[" Returns the total token supply."],"label":"total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0xdb6375a8"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the account balance for the specified `owner`.",""," Returns `0` if the account is non-existent."],"label":"balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x0f755a56"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"label":"spender","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the amount which `spender` is still allowed to withdraw from `owner`.",""," Returns `0` if no allowance has been set."],"label":"allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x6a00165e"},{"args":[{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` amount of tokens from the caller's account to account `to`.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the caller's account balance."],"label":"transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x84a15da1"},{"args":[{"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Allows `spender` to withdraw from the caller's account multiple times, up to"," the `value` amount.",""," If this function is called again it overwrites the current allowance with"," `value`.",""," An `Approval` event is emitted."],"label":"approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x681266a0"},{"args":[{"label":"from","type":{"displayName":["AccountId"],"type":2}},{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` tokens on the behalf of `from` to the account `to`.",""," This can be used to allow a contract to transfer tokens on ones behalf and/or"," to charge fees in sub-currencies, for example.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientAllowance` error if there are not enough tokens allowed"," for the caller to withdraw from `from`.",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the account balance of `from`."],"label":"transfer_from","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x0b396f18"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"total_supply"},{"layout":{"root":{"layout":{"leaf":{"key":"0xe7dc2326","ty":0}},"root_key":"0xe7dc2326","ty":1}},"name":"balances"},{"layout":{"root":{"layout":{"leaf":{"key":"0xb721a0ec","ty":0}},"root_key":"0xb721a0ec","ty":9}},"name":"allowances"}],"name":"Erc20"}},"root_key":"0x00000000","ty":13}},"types":[{"id":0,"type":{"def":{"primitive":"u128"}}},{"id":1,"type":{"def":{"composite":{}},"params":[{"name":"K","type":2},{"name":"V","type":0},{"name":"KeyType","type":5}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":2,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":3,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":7}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":6,"type":{"def":{"composite":{}},"path":["ink_storage_traits","impls","AutoKey"]}},{"id":7,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":8,"type":{"def":{"tuple":[]}}},{"id":9,"type":{"def":{"composite":{}},"params":[{"name":"K","type":10},{"name":"V","type":0},{"name":"KeyType","type":11}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":10,"type":{"def":{"tuple":[2,2]}}},{"id":11,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":12}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":12,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"total_supply","type":0,"typeName":",>>::Type"},{"name":"balances","type":1,"typeName":" as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type"},{"name":"allowances","type":9,"typeName":" as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type"}]}},"path":["erc20","erc20","Erc20"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":15}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":15}],"path":["Result"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":15}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":19}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":19}],"path":["Result"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"index":0,"name":"InsufficientBalance"},{"index":1,"name":"InsufficientAllowance"}]}},"path":["erc20","erc20","Error"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":22,"type":{"def":{"primitive":"u64"}}},{"id":23,"type":{"def":{"primitive":"u32"}}},{"id":24,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":5} diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.json b/packages/api-contract/src/test/contracts/ink/v5/erc20.json index c995eaaf8b29..0f1dd10d0a3a 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/erc20.json +++ b/packages/api-contract/src/test/contracts/ink/v5/erc20.json @@ -1020,5 +1020,5 @@ } } ], - "version": "5" + "version": 5 } diff --git a/packages/api-contract/src/test/contracts/ink/v5/flipper.contract.json b/packages/api-contract/src/test/contracts/ink/v5/flipper.contract.json index 79d613c88696..9014decfb794 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/flipper.contract.json +++ b/packages/api-contract/src/test/contracts/ink/v5/flipper.contract.json @@ -1 +1 @@ -{"source":{"hash":"0x536329645b973de35b88a083a0fb769b9a6778dd7daacf1f2069c966a26fcc25","language":"ink! 5.0.0-rc","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001400b60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f017f60000060017f017f60047f7f7f7f0060057f7f7f7f7f006000017f028a0107057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650001057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100333320302030a0703010207000602040302020604060308020304060207010004000101010104020101090508050902010103010204050170010e0e0608017f01418080040b0711020463616c6c0016066465706c6f7900180913010041010b0d0c33263628342327232425212a0ae93e322c01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b1a0b2601017f230041106b22022400200220003a000f20012002410f6a41011008200241106a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741e8990410370240200320044f0440200320054b0d01200420066a200320046b2001200241889a041031200741989a041037200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41033602002000410236020c200041fc8f04360208200041033602242000200041206a3602102000200041046a36022820002000360220200041086a41f89904100d000b2003200541f89904100b000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10012000290308210120002903002102200041206a2400410541042001200284501b0b1b002000418180014f044020004180800141f88104100b000b20000b6b01017f230041306b220324002003200136020420032000360200200341146a42023702002003412c6a41033602002003410236020c200341c88f04360208200341033602242003200341206a3602102003200341046a36022820032003360220200341086a2002100d000b840101017f230041306b22022400200241146a42013702002002410136020c200241dc950436020820024102360224200220002d0000410274220041c49b046a28020036022c2002200041d89b046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10222100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241d88a0436021020024194980436020c2002410c6a1029000b4701027f230041106b22012400200141003a000f20002001410f6a4101100f220045044020012d000f21020b200141106a240041024101410220024101461b410020021b20001b0b3d01027f2000280204220320024922044504402001200220002802002201200241b49b0410312000200320026b3602042000200120026a3602000b20040b3c01027f230041106b22002400200042808001370208200041f89b04360204200041046a2201410010152001410010154100200028020c100a1014000b4401027f230041106b22022400200242808001370208200241f89b04360204200241046a22032001047f20034101101541010541000b10152000200228020c100a1014000bb20102057f017e230041306b220124002001410036021c200142808001370228200141f89b0436022420014100360220200141246a2202200141206a4104100820012001290224370214200141086a200141146a2203200128022c1013200128020c210420012802082105200129021421062001410036022c200120063702242000200210072001200129022437021420012003200128022c1013200520042001280200200128020410041a200141306a24000b4501017f2002200128020422034b044041949804412341b89a04101c000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d00200041f89b0420011005000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41033602002000410236020c200041a88b04360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a41a89a04100d000b900501077f230041306b22002400024002400240024002400240100941ff0171410546044020004180800136021441f89b04200041146a100220002802142201418180014f0d0120002001360218200041f89b0436021420004100360208200041146a200041086a4104100f0d0520002d000b210120002d000a210220002d00092103024020002d00082204412f470440200441e300470d07410121042003413a47200241a5014772200141d1004772450d010c070b41002104200341860147200241db004772200141d90147720d060b20004100360210200042808001370218200041f89b043602142000410036022c200041146a22032000412c6a41041008200020002902143702082000200041086a200028021c10132000280204210520002802002106200028020821012000200028020c2202360214200620052001200310002105200220002802142203490d0202400240024020050e0400060601060b2000200336021820002001360214200041146a100e220141ff017141024704402000280218450d020b200041206a420037020020004101360218200041c483043602140c080b200041206a4200370200200041013602182000419483043602140c070b20040d04230041106b22002400200042808001370208200041f89b04360204200041046a220241001015200141ff0171410047200210074100200028020c100a1014000b200041043a0014200041146a1017000b20014180800141f48004100b000b2003200241f48004100b000b200041206a420037020020004101360218200041a4820436021420004194980436021c200041146a41ac8204100d000b200141ff0171451012410041001011000b410141011011000b20004194980436021c200041146a41ec8204100d000b4801017f230041206b220124002001410c6a420137020020014101360204200141dc95043602002001410136021c200120003602182001200141186a360208200141ec8204100d000b860201057f230041106b22002400024002401009220141ff0171410546044020004180800136020441f89b04200041046a100220002802042201418180014f0d0120002001360208200041f89b043602042000410036020c0240200041046a2000410c6a4104100f0d0020002d000f210120002d000e210220002d000d210320002d000c220441e1004704402004419b0147200341ae0147722002419d0147200141de004772720d01200041046a100e220041ff01714102460d01200010121010000b200341ef0147200241fe0047720d002001413e460d030b410141011011000b200020013a0004200041046a1017000b20014180800141f48004100b000b410010121010000b7601027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002101a2004280208200428020c101b200028020821030b200028020020036a2001200210062003200220036a22014b044041d08304411c41dc8904101c000b20002001360208200441106a24000bbf0301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003101f20022802082105200228020c0c020b200528020021080240200310202205450440410021050c010b20052008200710060b20030c010b20022003101f2002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41f08304412141b88504101c000b1f00024020004181808080784704402000450d012001101d000b0f0b101e000b4601017f230041206b220324002003410c6a4200370200200341013602042003419498043602082003200136021c200320003602182003200341186a36020020032002100d000b860101017f230041306b220124002001200036020c2001411c6a4201370200200141023602142001418887043602102001410336022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c2000419887043602182000200141106a360214200041d88a0436021020004194980436020c2000410c6a1029000b3c01017f230041206b22002400200041146a42003702002000410136020c200041dc8504360208200041949804360210200041086a41e48504100d000b2001017f41fa9b052d00001a20011020210220002001360204200020023602000be70101027f024002400240027f41ec9b042d0000044041f09b042802000c010b3f002202418080044f0d0141f09b0441809c0536020041ec9b0441013a000041f49b04200241107436020041809c050b2101027f4100200020016a22022001490d001a41f49b042802002002490440200041ffff036a220241107640002201417f460d042001418080044f0d032001411074220120024180807c716a22022001490d0441f49b0420023602004100200020016a22022001490d011a0b41f09b04200236020020010b0f0b41e09704412141c49704101c000b41e09704412141849804101c000b41000b0c00200041ac8404200110220bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10352003200329031037021c200341086a20062001103520032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0300010b0c00200020012002101941000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101101a2004280208200428020c101b200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10190b200241106a240041000f0b41d08304411c41cc8904101c000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e220641017441bc8c046a2f00003b0000200241026b2006419c7f6c20046a41ffff037141017441bc8c046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff037141017441bc8c046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a200241017441bc8c046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041949804210420024194980441949804102b20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004102e0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004102e0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004102e0d03200341106a2001200920026b4101102f20032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10300d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101102f20032802082205418080c400460d02200328020c2109200128021422022001280218220120072004102e0d02200220082006200128020c1100000d022005200920022001103021000c020b0c020b41a08a04411c41f48e04101c000b200341406b240020000f0b41f08904412141cc9504101c000b1b00200128021441a484044105200141186a28020028020c1100000b0e0020002802001a03400c000b000bad0301047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141e498043602102001410436022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441e898046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000101f20012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10210d032001280230210020012802382103024041f89b052d000045044041f99b052d00004101710d010b200020031003410947044041f89b0541013a00000b41f99b0541013a00000b000b41d08304411c41bc9504101c000b101e000b2000101d000b230041406a220024002000413336020c200041a8870436020820004194840436021420002001413f6a360210200041246a42023702002000413c6a41063602002000410236021c200041bc8b04360218200041023602342000200041306a3602202000200041106a3602382000200041086a360230200041186a41c88804100d000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200102c22042006200120006b2200417c716a2000410371102c6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b41809104102d200228020c21052002280208210620022002280200200228020422002000417c7141ec9204102d200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41a08a04411c41ac9304101c000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441a08a04411c418c9304101c000b41a08a04411c41fc9204101c000b41a08a04411c419c9304101c000b41a08a04411c41dc9204101c000b20002001102c21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a08a04411c41bc9504101c000b3d00200220034904404194980441232004101c000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41a08a04411c41848f04101c000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b7a002001200346044020002002200110060f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41033602002000410336020c200041d09104360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a2004100d000b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41a08a04411c41b09404101c000bb90301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d002001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1032200228021c418080c400470d010c020b0b200241106a200241246a10322002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200141186a28020028020c11000021000c030b200128020422002003200320046a102b22054d0d01200241086a2001200020056b4100102f4101210020022802082205418080c400460d02200228020c21062001280214220720032004200141186a280200220128020c1100000d022005200620072001103021000c020b200128021420032004200141186a28020028020c11000021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000beb0201057f230041406a22022400200028020021054101210002402001280214220441e88a04410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4103360200200241346a410336020020024103360214200241c08a0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10220d00200528020822030440200441f48a04410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a102221000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441f48a04410220011100000d00200420032802002003280204200111000021000b200241406b240020000b1300200045044041b79804412b2001101c000b0b0be61b0300418080040b910a2f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000000000010071000000e4000000170000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72730084000100730000002701000032000000656e636f756e746572656420756e6578706563746564206572726f72080101001c0000008400010073000000f0000000170000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f666c69707065722f6c69622e72733c01010030000000060000000500000073746f7261676520656e7472792077617320656d707479007c01010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279009c0101002700000000000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000070000000000000001000000080000004572726f72000000090000000c000000040000000a0000000b0000000c0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72730000004402010071000000980100001c0000006361706163697479206f766572666c6f77000000c802010011000000440201007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000006303010015000000780301000d000000f40201006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273db0301006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000005804010071000000610700000d0000005804010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041a08a040bb10d617474656d707420746f206164642077697468206f766572666c6f77293a0000140c0100000000003d050100010000003d050100010000000700000000000000010000000d00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320760501002000000096050100120000003a200000140c010000000000b8050100020000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730407010070000000050500000d00000004070100700000009705000030000000206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e646578200000b6070100100000009407010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000d807010016000000ee0701000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000c08010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820289008010015000000a50801002b0000003c050100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000e8080100720000004700000015000000e8080100720000004f00000032000000e8080100720000005a00000009000000e808010072000000660000000d000000e8080100720000006400000011000000e80801007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000bc0901007100000091000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000400a01007a0000009500000001000000cc05010070000000d201000005000000140c010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167652f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f616c6c6f6361746f722d352e302e302d72632f7372632f62756d702e72735c0b01006800000087000000110041e097040b8b04617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000005c0b0100680000009400000016000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00140c010000000000620c0100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273740c0100740000005c0000003b000000740c0100740000005c00000014000000740c0100740000005d0000000e000000740c0100740000005e00000034000000740c0100740000006800000009000000740c01007400000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e727300480d01006b000000770000000e000000190000001c000000160000001400000019000000e40a0100fd0a0100190b01002f0b0100430b01","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"flipper","version":"5.0.0-rc","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Creates a new flipper smart contract initialized with the given value."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Creates a new flipper smart contract initialized to `false`."],"label":"new_default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x61ef7e3e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":6},"balance":{"displayName":["Balance"],"type":9},"blockNumber":{"displayName":["BlockNumber"],"type":12},"chainExtension":{"displayName":["ChainExtension"],"type":13},"hash":{"displayName":["Hash"],"type":10},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":11}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":4},"messages":[{"args":[],"default":false,"docs":[" Flips the current value of the Flipper's boolean."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":2},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Returns the current value of the Flipper's boolean."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":5},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Flipper"}},"root_key":"0x00000000","ty":1}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"}]}},"path":["flipper","flipper","Flipper"]}},{"id":2,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":4}],"path":["Result"]}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":4}],"path":["Result"]}},{"id":6,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":7,"type":{"def":{"array":{"len":32,"type":8}}}},{"id":8,"type":{"def":{"primitive":"u8"}}},{"id":9,"type":{"def":{"primitive":"u128"}}},{"id":10,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":11,"type":{"def":{"primitive":"u64"}}},{"id":12,"type":{"def":{"primitive":"u32"}}},{"id":13,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"5"} +{"source":{"hash":"0x536329645b973de35b88a083a0fb769b9a6778dd7daacf1f2069c966a26fcc25","language":"ink! 5.0.0-rc","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001400b60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f017f60000060017f017f60047f7f7f7f0060057f7f7f7f7f006000017f028a0107057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650001057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100333320302030a0703010207000602040302020604060308020304060207010004000101010104020101090508050902010103010204050170010e0e0608017f01418080040b0711020463616c6c0016066465706c6f7900180913010041010b0d0c33263628342327232425212a0ae93e322c01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b1a0b2601017f230041106b22022400200220003a000f20012002410f6a41011008200241106a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741e8990410370240200320044f0440200320054b0d01200420066a200320046b2001200241889a041031200741989a041037200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41033602002000410236020c200041fc8f04360208200041033602242000200041206a3602102000200041046a36022820002000360220200041086a41f89904100d000b2003200541f89904100b000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10012000290308210120002903002102200041206a2400410541042001200284501b0b1b002000418180014f044020004180800141f88104100b000b20000b6b01017f230041306b220324002003200136020420032000360200200341146a42023702002003412c6a41033602002003410236020c200341c88f04360208200341033602242003200341206a3602102003200341046a36022820032003360220200341086a2002100d000b840101017f230041306b22022400200241146a42013702002002410136020c200241dc950436020820024102360224200220002d0000410274220041c49b046a28020036022c2002200041d89b046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10222100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241d88a0436021020024194980436020c2002410c6a1029000b4701027f230041106b22012400200141003a000f20002001410f6a4101100f220045044020012d000f21020b200141106a240041024101410220024101461b410020021b20001b0b3d01027f2000280204220320024922044504402001200220002802002201200241b49b0410312000200320026b3602042000200120026a3602000b20040b3c01027f230041106b22002400200042808001370208200041f89b04360204200041046a2201410010152001410010154100200028020c100a1014000b4401027f230041106b22022400200242808001370208200241f89b04360204200241046a22032001047f20034101101541010541000b10152000200228020c100a1014000bb20102057f017e230041306b220124002001410036021c200142808001370228200141f89b0436022420014100360220200141246a2202200141206a4104100820012001290224370214200141086a200141146a2203200128022c1013200128020c210420012802082105200129021421062001410036022c200120063702242000200210072001200129022437021420012003200128022c1013200520042001280200200128020410041a200141306a24000b4501017f2002200128020422034b044041949804412341b89a04101c000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d00200041f89b0420011005000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41033602002000410236020c200041a88b04360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a41a89a04100d000b900501077f230041306b22002400024002400240024002400240100941ff0171410546044020004180800136021441f89b04200041146a100220002802142201418180014f0d0120002001360218200041f89b0436021420004100360208200041146a200041086a4104100f0d0520002d000b210120002d000a210220002d00092103024020002d00082204412f470440200441e300470d07410121042003413a47200241a5014772200141d1004772450d010c070b41002104200341860147200241db004772200141d90147720d060b20004100360210200042808001370218200041f89b043602142000410036022c200041146a22032000412c6a41041008200020002902143702082000200041086a200028021c10132000280204210520002802002106200028020821012000200028020c2202360214200620052001200310002105200220002802142203490d0202400240024020050e0400060601060b2000200336021820002001360214200041146a100e220141ff017141024704402000280218450d020b200041206a420037020020004101360218200041c483043602140c080b200041206a4200370200200041013602182000419483043602140c070b20040d04230041106b22002400200042808001370208200041f89b04360204200041046a220241001015200141ff0171410047200210074100200028020c100a1014000b200041043a0014200041146a1017000b20014180800141f48004100b000b2003200241f48004100b000b200041206a420037020020004101360218200041a4820436021420004194980436021c200041146a41ac8204100d000b200141ff0171451012410041001011000b410141011011000b20004194980436021c200041146a41ec8204100d000b4801017f230041206b220124002001410c6a420137020020014101360204200141dc95043602002001410136021c200120003602182001200141186a360208200141ec8204100d000b860201057f230041106b22002400024002401009220141ff0171410546044020004180800136020441f89b04200041046a100220002802042201418180014f0d0120002001360208200041f89b043602042000410036020c0240200041046a2000410c6a4104100f0d0020002d000f210120002d000e210220002d000d210320002d000c220441e1004704402004419b0147200341ae0147722002419d0147200141de004772720d01200041046a100e220041ff01714102460d01200010121010000b200341ef0147200241fe0047720d002001413e460d030b410141011011000b200020013a0004200041046a1017000b20014180800141f48004100b000b410010121010000b7601027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002101a2004280208200428020c101b200028020821030b200028020020036a2001200210062003200220036a22014b044041d08304411c41dc8904101c000b20002001360208200441106a24000bbf0301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003101f20022802082105200228020c0c020b200528020021080240200310202205450440410021050c010b20052008200710060b20030c010b20022003101f2002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41f08304412141b88504101c000b1f00024020004181808080784704402000450d012001101d000b0f0b101e000b4601017f230041206b220324002003410c6a4200370200200341013602042003419498043602082003200136021c200320003602182003200341186a36020020032002100d000b860101017f230041306b220124002001200036020c2001411c6a4201370200200141023602142001418887043602102001410336022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c2000419887043602182000200141106a360214200041d88a0436021020004194980436020c2000410c6a1029000b3c01017f230041206b22002400200041146a42003702002000410136020c200041dc8504360208200041949804360210200041086a41e48504100d000b2001017f41fa9b052d00001a20011020210220002001360204200020023602000be70101027f024002400240027f41ec9b042d0000044041f09b042802000c010b3f002202418080044f0d0141f09b0441809c0536020041ec9b0441013a000041f49b04200241107436020041809c050b2101027f4100200020016a22022001490d001a41f49b042802002002490440200041ffff036a220241107640002201417f460d042001418080044f0d032001411074220120024180807c716a22022001490d0441f49b0420023602004100200020016a22022001490d011a0b41f09b04200236020020010b0f0b41e09704412141c49704101c000b41e09704412141849804101c000b41000b0c00200041ac8404200110220bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10352003200329031037021c200341086a20062001103520032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0300010b0c00200020012002101941000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101101a2004280208200428020c101b200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10190b200241106a240041000f0b41d08304411c41cc8904101c000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e220641017441bc8c046a2f00003b0000200241026b2006419c7f6c20046a41ffff037141017441bc8c046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff037141017441bc8c046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a200241017441bc8c046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041949804210420024194980441949804102b20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004102e0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004102e0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004102e0d03200341106a2001200920026b4101102f20032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10300d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101102f20032802082205418080c400460d02200328020c2109200128021422022001280218220120072004102e0d02200220082006200128020c1100000d022005200920022001103021000c020b0c020b41a08a04411c41f48e04101c000b200341406b240020000f0b41f08904412141cc9504101c000b1b00200128021441a484044105200141186a28020028020c1100000b0e0020002802001a03400c000b000bad0301047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141e498043602102001410436022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441e898046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000101f20012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10210d032001280230210020012802382103024041f89b052d000045044041f99b052d00004101710d010b200020031003410947044041f89b0541013a00000b41f99b0541013a00000b000b41d08304411c41bc9504101c000b101e000b2000101d000b230041406a220024002000413336020c200041a8870436020820004194840436021420002001413f6a360210200041246a42023702002000413c6a41063602002000410236021c200041bc8b04360218200041023602342000200041306a3602202000200041106a3602382000200041086a360230200041186a41c88804100d000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200102c22042006200120006b2200417c716a2000410371102c6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b41809104102d200228020c21052002280208210620022002280200200228020422002000417c7141ec9204102d200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41a08a04411c41ac9304101c000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441a08a04411c418c9304101c000b41a08a04411c41fc9204101c000b41a08a04411c419c9304101c000b41a08a04411c41dc9204101c000b20002001102c21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a08a04411c41bc9504101c000b3d00200220034904404194980441232004101c000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41a08a04411c41848f04101c000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b7a002001200346044020002002200110060f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41033602002000410336020c200041d09104360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a2004100d000b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41a08a04411c41b09404101c000bb90301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d002001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1032200228021c418080c400470d010c020b0b200241106a200241246a10322002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200141186a28020028020c11000021000c030b200128020422002003200320046a102b22054d0d01200241086a2001200020056b4100102f4101210020022802082205418080c400460d02200228020c21062001280214220720032004200141186a280200220128020c1100000d022005200620072001103021000c020b200128021420032004200141186a28020028020c11000021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000beb0201057f230041406a22022400200028020021054101210002402001280214220441e88a04410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4103360200200241346a410336020020024103360214200241c08a0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10220d00200528020822030440200441f48a04410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a102221000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441f48a04410220011100000d00200420032802002003280204200111000021000b200241406b240020000b1300200045044041b79804412b2001101c000b0b0be61b0300418080040b910a2f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000000000010071000000e4000000170000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72730084000100730000002701000032000000656e636f756e746572656420756e6578706563746564206572726f72080101001c0000008400010073000000f0000000170000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f666c69707065722f6c69622e72733c01010030000000060000000500000073746f7261676520656e7472792077617320656d707479007c01010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279009c0101002700000000000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000070000000000000001000000080000004572726f72000000090000000c000000040000000a0000000b0000000c0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72730000004402010071000000980100001c0000006361706163697479206f766572666c6f77000000c802010011000000440201007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000006303010015000000780301000d000000f40201006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273db0301006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000005804010071000000610700000d0000005804010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041a08a040bb10d617474656d707420746f206164642077697468206f766572666c6f77293a0000140c0100000000003d050100010000003d050100010000000700000000000000010000000d00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320760501002000000096050100120000003a200000140c010000000000b8050100020000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730407010070000000050500000d00000004070100700000009705000030000000206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e646578200000b6070100100000009407010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000d807010016000000ee0701000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273000c08010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820289008010015000000a50801002b0000003c050100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000e8080100720000004700000015000000e8080100720000004f00000032000000e8080100720000005a00000009000000e808010072000000660000000d000000e8080100720000006400000011000000e80801007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000bc0901007100000091000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000400a01007a0000009500000001000000cc05010070000000d201000005000000140c010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167652f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f616c6c6f6361746f722d352e302e302d72632f7372632f62756d702e72735c0b01006800000087000000110041e097040b8b04617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000005c0b0100680000009400000016000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00140c010000000000620c0100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273740c0100740000005c0000003b000000740c0100740000005c00000014000000740c0100740000005d0000000e000000740c0100740000005e00000034000000740c0100740000006800000009000000740c01007400000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e727300480d01006b000000770000000e000000190000001c000000160000001400000019000000e40a0100fd0a0100190b01002f0b0100430b01","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"flipper","version":"5.0.0-rc","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Creates a new flipper smart contract initialized with the given value."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Creates a new flipper smart contract initialized to `false`."],"label":"new_default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x61ef7e3e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":6},"balance":{"displayName":["Balance"],"type":9},"blockNumber":{"displayName":["BlockNumber"],"type":12},"chainExtension":{"displayName":["ChainExtension"],"type":13},"hash":{"displayName":["Hash"],"type":10},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":11}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":4},"messages":[{"args":[],"default":false,"docs":[" Flips the current value of the Flipper's boolean."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":2},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Returns the current value of the Flipper's boolean."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":5},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Flipper"}},"root_key":"0x00000000","ty":1}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"}]}},"path":["flipper","flipper","Flipper"]}},{"id":2,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":4}],"path":["Result"]}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":4}],"path":["Result"]}},{"id":6,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":7,"type":{"def":{"array":{"len":32,"type":8}}}},{"id":8,"type":{"def":{"primitive":"u8"}}},{"id":9,"type":{"def":{"primitive":"u128"}}},{"id":10,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":11,"type":{"def":{"primitive":"u64"}}},{"id":12,"type":{"def":{"primitive":"u32"}}},{"id":13,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":5} diff --git a/packages/api-contract/src/test/contracts/ink/v5/flipper.json b/packages/api-contract/src/test/contracts/ink/v5/flipper.json index fdd97d85b6e2..846bfd337d4d 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/flipper.json +++ b/packages/api-contract/src/test/contracts/ink/v5/flipper.json @@ -415,5 +415,5 @@ } } ], - "version": "5" + "version": 5 } diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index caed4dcb506d..a041a69368f1 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -259,7 +259,7 @@ export default { ContractMetadataV5: { types: 'Vec', spec: 'ContractContractSpecV5', - version: 'Text' + version: 'u64' }, ContractMetadata: { _enum: { diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index 22d382efce7b..4e9a341d832b 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -346,7 +346,7 @@ export interface ContractMetadataV4 extends Struct { export interface ContractMetadataV5 extends Struct { readonly types: Vec; readonly spec: ContractContractSpecV5; - readonly version: '5'; + readonly version: 5; } /** @name ContractProject */ From 27d6b46afaded8f0aabc2e570afc38664abd0f03 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Wed, 28 Feb 2024 11:18:56 +0100 Subject: [PATCH 23/25] adds contracts and contract metadata compiled with the most recent ink version --- .../test/contracts/ink/v5/erc20.contract.json | 2 +- .../src/test/contracts/ink/v5/erc20.json | 5 +++-- .../src/test/contracts/ink/v5/erc20.wasm | Bin 21581 -> 19416 bytes .../contracts/ink/v5/flipper.contract.json | 2 +- .../src/test/contracts/ink/v5/flipper.json | 9 +++++---- .../src/test/contracts/ink/v5/flipper.wasm | Bin 11930 -> 10450 bytes 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json b/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json index 53ee9a2bce16..a7d6342dff2f 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json +++ b/packages/api-contract/src/test/contracts/ink/v5/erc20.contract.json @@ -1 +1 @@ -{"source":{"hash":"0x656ec6137638ba8ad1477e96dfe91eb90ca625dfbe543057868ea521fd1b73fe","language":"ink! 5.0.0-rc.1","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001691160037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f0060047f7f7f7f017f60057f7f7f7f7f0060000060017f017f60027e7e0060037f7e7e0060037e7e7f0060047f7f7e7e006000017f60057f7f7f7f7f017f60047f7f7e7e017f02c7010a057365616c310b6765745f73746f726167650006057365616c3005696e7075740002057365616c300d6465706f7369745f6576656e740005057365616c320b7365745f73746f726167650006057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c300663616c6c65720002057365616c301176616c75655f7472616e736665727265640002057365616c300f686173685f626c616b65325f323536000303656e76066d656d6f7279020102100356550007030b0202030c0d0202030504040307040202000202020403020204070e01010203040903030102010f080a020a0208100408030502040802090100000101010402010107060506020501010300050101010205040501700116160608017f01418080040b0711020463616c6c0039066465706c6f79003c091b010041010b15555432302829485b492c2c282c4647444b2c57595a0aac7e552b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2200200120034d044020002001360204200020023602000f0b200120032004100b000b0e0020002001200241d49604105d0bb50102047f017e230041306b2203240020034100360220200342808001370228200341d2a60436022441e7b98fb102200341246a2204100d20002004100e20032003290224370218200341106a200341186a2205200328022c100f2003280214210020032802102106200329021821072003410036022c20032007370224200120022004101020032003290224370218200341086a2005200328022c100f200620002003280208200328020c10031a200341306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041018200241106a24000b0a0020012000412010180b4501017f2002200128020422034b044041e4a1044123419ca404102f000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101018200341106a24000bbb0102037f017e230041306b2204240020044100360220200442808001370228200441d2a60436022441b7c380e57e200441246a2205100d20002005100e20012005100e20042004290224370218200441106a200441186a2206200428022c100f2004280214210020042802102101200429021821072004410036022c20042007370224200220032005101020042004290224370218200441086a2006200428022c100f200120002004280208200428020c10031a200441306a24000bb20102037f017e230041d0006b22022400200241186a220420001013200229021821052002410036022c200220053702242001200241246a2203100e20022002290224370218200241106a2004200228022c100f2003200228021020022802141014200241086a200028020020002802042000280208220110152002410036024c200220022903083702442003200241c4006a100e20012001200228024c6a22014d101620002001360208200241d0006a24000b3f01027f200128020422032001280208220249044020022003418ca404102e000b200041003602082000200320026b3602042000200128020020026a3602000b8f0201077f230041d0006b22032400200341286a22044200370300200341206a22054200370300200341186a22064200370300200342003703100240200241214f0440200341c8006a22074200370300200341406b22084200370300200341386a220942003703002003420037033020012002200341306a1008200420072903003703002005200829030037030020062009290300370300200320032903303703100c010b200341086a2002200341106a412041ac8104100a2003280208200328020c2001200241bc810410190b20002003290310370000200041186a200341286a290300370000200041106a200341206a290300370000200041086a200341186a290300370000200341d0006a24000b2900200220034904402003200241fc8504102e000b2000200220036b3602042000200120036a3602000b150020004504404187a204412b418c8604102f000b0bbd0102047f017e230041d0006b22012400200141186a220220001013200129021821052001410036022c20012005370224200141003a0044200141246a2203200141c4006a22044101101820012001290224370218200141106a2002200128022c100f2003200128021020012802141014200141086a200028020020002802042000280208220210152001410036024c2001200129030837024420032004100e20022002200128024c6a22024d101620002002360208200141d0006a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741bca304105c0240200320044f0440200320054b0d01200420066a200320046b2001200241dca3041019200741eca304105c200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41073602002000410236020c200041889704360208200041073602242000200041206a3602102000200041046a36022820002000360220200041086a41cca3041031000b2003200541cca304100b000b7b002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41073602002000410336020c200041dc9804360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a20041031000b5c01027f230041206b22012400200141086a200028020020002802042000280208220210152001410036021c20012001290308370214200141146a410c101b20022002200128021c6a22024d101620002002360208200141206a24000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41073602002000410236020c200041d89004360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a41fca3041031000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101d45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f20002802042203200249220445044020012002200028020022012002418ca60410192000200320026b3602042000200120026a3602000b20040b5502027f017e230041206b22022400200241086a2001101f200241186a29030021042002280208210320002002290310370308200041106a200437030020002003200128020472410047ad370300200241206a24000b5f02017f037e230041106b2202240020024200370308200242003703000240200120024110101d45044020022903082104200229030021050c010b420121030b2000200537030820002003370300200041106a2004370300200241106a24000ba90102017f027e230041406a220224002002411f6a2001101c0240024020022d001f0d0020022001101f2002290300a70d00200241106a2903002103200229030821042000200229002037000820004200370300200041286a2004370300200041306a2003370300200041206a200241386a290000370000200041186a200241306a290000370000200041106a200241286a2900003700000c010b200042013703000b200241406b24000be90202077f017e230041406a22012400200142808001370228200141d2a604360224200141246a101a200141186a2001412c6a28020036020020012001290224370310200141306a200141106a41bd87041022200041316a2105024020002d00100440200141306a200041116a10120c010b200141306a10170b200041106a2106200141186a200141386a28020036020020012001290230370310024020052d00000440200141106a200041326a10120c010b200141106a10170b200141386a2202200141186a220328020036020020012001290310370330200141106a2204200141306a2207102320022003280200360200200120012902102208370330200141206a2802002102200128021c210320014100360218200120083702102006200410242005200410242000290300200041086a2903002004101020012001290210370330200141086a20072001280218100f200320022001280208200128020c1002200141406b24000bda0102037f017e230041d0006b22032400024020020440200341186a220520011013200329021821062003410036022c200320063702242002200341246a2204100e20032003290224370218200341106a2005200328022c100f2004200328021020032802141014200341086a200128020020012802042001280208220210152003410036024c200320032903083702442004200341c4006a100e20022002200328024c6a22024d1016200120023602080c010b200110170b20002001290200370200200041086a200141086a280200360200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200100f20022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b210020002d000045044020014100101b0f0b20014101101b200041016a2001100e0bb20101027f230041306b2201240020014180800136020441d2a604200141046a2202100620014180800136022c200141d2a6043602282002200141286a101c20012d00040440200141103a000441e7840441c100200141046a41d0820441a885041026000b2000200141066a290000370001200041096a2001410e6a290000370000200041116a200141166a290000370000200041186a2001411d6a290000370000200020012d00053a0000200141306a24000b7c01017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a42023702002005413c6a41013602002005410236021c200541ec9004360218200541023602342005200541306a3602202005200541106a3602382005200541086a360230200541186a20041031000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10072000290308210120002903002102200041206a2400410541042001200284501b0b1b00200128021441d489044105200141186a28020028020c1100000b3400200128021420002802002d0000410274220041c088046a2802002000418088046a280200200141186a28020028020c1100000bff0202057f027e230041d0006b220224002002410036023020024280800137023c200241d2a60436023841e7b98fb102200241386a2204100d20012004100e20022002290238370228200241206a200241286a2002280240100f2002280224210320022802202105200228022821012002200228022c2206360238200520032001200410002103200241186a20022802382001200641c08204100a027e024002400240024020030e0400010103010b200228021821012002200228021c36023c200220013602382002200241386a101e2002290300a70d0120022903082107200241106a2903000c030b200241c4006a42003702002002410136023c200241e48504360238200241e4a104360240200241386a41ec85041031000b200241103a0037200241c4006a42013702002002410136023c2002419481043602382002410336022c2002200241286a3602402002200241376a360228200241386a419c81041031000b42000b21082000200737030020002008370308200241d0006a24000b850302047f027e230041d0006b220324002003410036023020034280800137023c200341d2a60436023841b7c380e57e200341386a2204100d20012004100e20022004100e20032003290238370228200341206a200341286a2003280240100f2003280224210220032802202105200328022821012003200328022c2206360238200520022001200410002102200341186a20032802382001200641c08204100a027e024002400240024020020e0400010103010b200328021821012003200328021c36023c200320013602382003200341386a101e2003290300a70d0120032903082107200341106a2903000c030b200341c4006a42003702002003410136023c200341e48504360238200341e4a104360240200341386a41ec85041031000b200341103a0037200341c4006a42013702002003410136023c2003419481043602382003410336022c2003200341286a3602402003200341376a360228200341386a419c81041031000b42000b21082000200737030020002008370308200341d0006a24000b0300010b1b002000418180014f044020004180800141b88504100b000b20000b0e0020002001200241b49604105d0b4601017f230041206b220324002003410c6a420037020020034101360204200341e4a1043602082003200136021c200320003602182003200341186a360200200320021031000b840101017f230041306b22022400200241146a42013702002002410136020c200241b09f0436020820024102360224200220002d00004102742200419ca6046a28020036022c2002200041b0a6046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10452100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241889004360210200241e4a10436020c2002410c6a104a000b8f0101027f230041106b22022400027f024002400240410220002d000041106b41ff01712203200341024f1b41016b0e020102000b20022000360208200141e082044106200241086a410510330c020b200128021441e68204410e200141186a28020028020c1100000c010b2002200036020c200141f48204410b2002410c6a410610330b2100200241106a240020000ba20201047f230041406a220524004101210702402000280214220620012002200041186a280200220228020c22011100000d000240200028021c22084104714504402006419a9104410120011100000d022003200020041101000d0220002802142106200028021828020c21010c010b2006419b9104410220011100000d01200541013a001b200541346a41fc9004360200200520023602102005200636020c20052008360238200520002d00203a003c2005200028021036022c200520002902083702242005200029020037021c20052005411b6a36021420052005410c6a36023020032005411c6a20041101000d012005280230419891044102200528023428020c1100000d010b200641ec8f044101200111000021070b200541406b240020070b3c01027f230041106b22002400200042808001370208200041d2a604360204200041046a22014101101b20014101101b4101200028020c102d1038000b3e01027f230041106b22022400200242808001370208200241d2a604360204200241046a22034100101b20002001200310104100200228020c102d1038000b5101027f230041106b22022400200242808001370208200241d2a604360204200241046a22034100101b2003200141ff0171410247047f20034101101b20010541000b101b2000200228020c102d1038000bab0102057f017e230041306b2202240020024100360220200242808001370228200241d2a6043602244100200241246a2203100d20022002290224370218200241106a200241186a2204200228022c100f2002280214210520022802102106200229021821072002410036022c20022007370224200020012003101020022002290224370218200241086a2004200228022c100f200620052002280208200228020c10031a200241306a24000b0d00200041d2a60420011005000b8a1602087f047e230041a0056b22002400024002400240102741ff017141054604402000418080013602c80441d2a604200041c8046a2201100120004180016a20002802c80441d2a6044180800141c08204100a20002000290380013702bc04200041003602c804200041bc046a20014104101d0d0220002d00cb04210220002d00ca04210320002d00c9042101027f02400240024002400240024020002d00c8042204410b6b0e050509090901000b0240200441e8006b0e03040902000b2004418401460d02200441db0147200141ff017141e3004772200341f50047200241a8014772720d0841000c050b200141ff017141f50047200341da004772200241d60047720d07200041c8046a200041bc046a101c20002d00c8040d07200041f0016a200041d2046a290000370300200041f8016a200041da046a290000370300200041ff016a200041e1046a2900003700002000200041ca046a2900003703e80120002d00c904210141010c040b200141ff0171200341164772200241de0047720d06200041a8026a200041bc046a101c20002d00a8020d0620004188016a200041bc046a101c20002d0088010d06200041ff046a200041a1016a290000370000200041f7046a20004199016a290000370000200041ef046a20004191016a290000370000200041d0046a200041b2026a290000370300200041d8046a200041ba026a290000370300200041df046a200041c1026a29000037000020002000290089013700e7042000200041aa026a2900003703c80420002d00a9022101200041e8016a200041c8046a413f10091a41020c030b200141ff017141a10147200341dd004772200241a10147720d05200041c8046a200041bc046a102020002903c8044200520d05200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41030c020b200141ff0171411247200341e6004772200241a00147720d04200041c8046a200041bc046a102020002903c8044200520d04200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41040c010b200141ff0171413947200341ef0047722002411847720d03200041f0036a200041bc046a101c20002d00f0030d0320004198046a200041bc046a101c20002d0098040d03200041e8006a200041bc046a101f2000290368a70d03200041f8006a290300210820002903702109200041c8036a200041f1036a220141186a290000370300200041c0036a200141106a290000370300200041b8036a200141086a290000370300200041d8036a200041a1046a290000370300200041e0036a200041a9046a290000370300200041e8036a200041b1046a29000037030020002000290099043703d003200020012900003703b003200041f0026a2202200041b0036a41c00010091a200041ae026a2000418e016a200041ce046a200241c000100941c000100941c00010091a200041e8016a200041a8026a413f10091a2000200041ea026a2800003600e301200020002800e7023602e00141050b210220004188016a410272200041e8016a413f10091a200041cc016a20002800e301360000200041d8016a2008370300200020002802e0013600c901200020093703d001200020013a008901200020023a008801200041003602b0022000428080013702cc04200041d2a6043602c8044100200041c8046a2203100d200020002902c8043702a802200041e0006a200041a8026a20002802d004100f200028026421042000280260210520002802a8022101200020002802ac0222063602c804200520042001200310002103200041d8006a20002802c8042001200641c08204100a02400240024020030e0400040401040b200028025821012000200028025c3602cc04200020013602c804200041406b200041c8046a101f2000290340a745044020002802cc04450d020b200041d4046a4200370200200041013602cc04200041a487043602c8040c050b200041d4046a4200370200200041013602cc04200041f486043602c8040c040b20004188016a4101722101200041d0006a290300210820002000290348220937039804200020083703a00402400240024002400240024002400240200241016b0e050001040502030b230041406a22022400200241286a200141086a290000370200200241306a200141106a290000370200200241386a200141186a290000370200200220004198046a36021c20022001290000370220200241086a200241206a102a20022903082108200041086a2201200241106a29030037030820012008370300200241406b24002000290308200041106a2903001035000b230041e0006b22022400200220004198046a36021c200241086a200241206a200141c0001009200241406b102b20022903082108200041186a2201200241106a29030037030820012008370300200241e0006a24002000290318200041206a2903001035000b200041d0046a20004190016a41d00010092101200020004198046a3602c80420004190056a290300210920004198056a2903002108200041a8026a22021025200041306a20012002102b41012103410121022000290330220b2009542204200041386a290300220a2008542008200a511b0d04410221022001200041f0046a20092008103a41ff017122054102460d03200541004721020c040b200920081035000b200041d0046a20004190016a413010092101200020004198046a3602c804200041f8046a2903002108200041f0046a2903002109200041a8026a220210252002200120092008103a220141ff0171410246047f200029039804200041a0046a290300103741000541010b20011036000b200041b8036a20004190016a413010092101200020004198046a3602b003200041e0036a2903002108200041d8036a2903002109200041f0026a2202102520022001200920081011200041c0026a20004188036a290000370300200041b8026a20004180036a290000370300200041b0026a200041f8026a290000370300200041d0026a20004198016a290300370300200041d8026a200041a0016a290300370300200041e0026a200041a8016a290300370300200020002900f0023703a80220002000290390013703c802200041c8046a2204200041a8026a41c00010091a20004190056a2206200837030020002009370388052000428080013702c004200041d2a6043602bc04200041bc046a101a200041f0016a2202200041c4046a280200360200200020002902bc043703e801200041f0036a2203200041e8016a220141de870410222003200410122002200041f8036a2205280200360200200020002902f0033703e8012001200041e8046a2207101220052002280200360200200020002903e8013703f00320012003102320052002280200360200200020002902e80122083703f003200041f8016a280200210220002802f4012105200041003602f001200020083702e80120042001100e20072001100e200029038805200629030020011010200020002902e8013703f003200041286a200320002802f001100f200520022000280228200028022c1002200029039804200041a0046a2903001037410041021036000b2001200041a8026a200b20097d200a20087d2004ad7d1011200029039804200041a0046a2903001037410021030b200320021036000b200041043a00c804200041c8046a103b000b200041d4046a4200370200200041013602cc04200041e485043602c804200041e4a1043602d004200041c8046a41ec85041031000b1034000b200041e4a1043602d004200041c8046a41cc86041031000bd40202037f037e23004180016b22042400200441186a2000102a0240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d100c200441086a2001102a2004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b4101460d01200120092008100c200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1021410221050b20044180016a240020050f0b4187a204412b41ac8704102f000b4801017f230041206b220124002001410c6a420137020020014101360204200141b09f043602002001410436021c200120003602182001200141186a360208200141cc86041031000bf40402087f037e230041c0016b2200240002401027220141ff0171410546044020004180800136025041d2a604200041d0006a22011001200041286a200028025041d2a6044180800141c08204100a200020002903283702502000410036023002402001200041306a4104101d0d0020002d0030419b01470d0020002d003141ae01470d0020002d0032419d01470d0020002d003341de00470d00200041106a200041d0006a101f2000290310a7450d020b1034000b200020013a0050200041d0006a103b000b200041206a290300210820002903182109200041306a1025200041ec006a200041c8006a2202290000370200200041e4006a200041406b2203290000370200200041dc006a200041386a220429000037020020002000290030370254200041f08004360250200041003602b0012000428080013702b801200041d2a6043602b40141e7b98fb102200041b4016a2201100d200041d4006a2001100e200020002902b4013702a801200041086a200041a8016a220520002802bc01100f200028020c21062000280208210720002902a801210a200041003602bc012000200a3702b4012009200820011010200020002902b4013702a8012000200520002802bc01100f200720062000280200200028020410031a2000419a016a200229000037010020004192016a20032900003701002000418a016a200429000037010020004182016a20002900303701002000200837035820002009370350200041013a008101200041003a0060200041d0006a1021200920081037230041106b22002400200042808001370208200041d2a604360204200041046a22014100101b20014100101b4100200028020c102d1038000b7701027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002103e2004280208200428020c103f200028020821030b200028020020036a2001200210091a2003200220036a22014b044041808904411c418c8f04102f000b20002001360208200441106a24000bc00301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003104220022802082105200228020c0c020b200528020021080240200310432205450440410021050c010b20052008200710091a0b20030c010b2002200310422002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41a08904412141e88a04102f000b1f00024020004181808080784704402000450d0120011040000b0f0b1041000b860101017f230041306b220124002001200036020c2001411c6a420137020020014102360214200141b88c043602102001410736022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c200041c88c043602182000200141106a360214200041889004360210200041e4a10436020c2000410c6a104a000b3c01017f230041206b22002400200041146a42003702002000410136020c2000418c8b04360208200041e4a104360210200041086a41948b041031000b2001017f41d2a6052d00001a20011043210220002001360204200020023602000be70101027f024002400240027f41c4a6042d0000044041c8a6042802000c010b3f002202418080044f0d0141c8a60441e0a60536020041c4a60441013a000041cca604200241107436020041e0a6050b2101027f4100200020016a22022001490d001a41cca6042802002002490440200041ffff036a220241107640002201417f460d042001418080044f0d032001411074220120024180807c716a22022001490d0441cca60420023602004100200020016a22022001490d011a0b41c8a604200236020020010b0f0b41b0a1044121419ca104102f000b41b0a104412141d4a104102f000b41000b0c00200041dc8904200110450bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10562003200329031037021c200341086a20062001105620032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0c00200020012002103d41000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101103e2004280208200428020c103f200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b103d0b200241106a240041000f0b41808904411c41fc8e04102f000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e2206410174418d92046a2f00003b0000200241026b2006419c7f6c20046a41ffff0371410174418d92046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff0371410174418d92046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a2002410174418d92046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041e4a1042104200241e4a10441e4a104104c20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004104f0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004104f0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004104f0d03200341106a2001200920026b4101105020032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10510d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101105020032802082205418080c400460d02200328020c2109200128021422022001280218220120072004104f0d02200220082006200128020c1100000d022005200920022001105121000c020b0c020b41d08f04411c41c89404102f000b200341406b240020000f0b41a08f04412141a09f04102f000b0e0020002802001a03400c000b000bc20201047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141b4a2043602102001410836022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441b8a2046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000104220012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10440d032001280230210020012802382103024041d0a6042d000045044041d1a6042d00004101710d010b200020031004410947044041d0a60441013a00000b41d1a60441013a00000b000b41808904411c41909f04102f000b1041000b20001040000b41d88c0441332001413f6a41c4890441f88d041026000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200104d22042006200120006b2200417c716a2000410371104d6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b418c9804104e200228020c21052002280208210620022002280200200228020422002000417c7141f89904104e200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41d08f04411c41b89a04102f000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441d08f04411c41989a04102f000b41d08f04411c41889a04102f000b41d08f04411c41a89a04102f000b41d08f04411c41e89904102f000b20002001104d21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41d08f04411c41909f04102f000b3d002002200349044041e4a10441232004102f000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41d08f04411c41d89404102f000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41d08f04411c41bc9b04102f000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41a08f04412141d09c04102f000bca0301067f230041306b22022400200028020421042000280200210302400240027f024020012802002205200128020822007204402000450d032001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1052200228021c418080c400470d010c050b0b200241106a200241246a10522002280214418080c400460d03024020022802102200450d00200020044f044020002004460d010c030b200020036a2c00004140480d020b200241086a4100200020031053200228020c210620022802080c020b200128021420032004200141186a28020028020c11000021000c030b41000b21002006200420001b21042000200320001b21030b2005450440200128021420032004200141186a28020028020c11000021000c010b200128020422002003200320046a104c22054b044020022001200020056b410010504101210020022802002205418080c400460d01200228020421062001280214220720032004200141186a280200220128020c1100000d012005200620072001105121000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044109470d0120012802000b2802002104410121030b20002004360204200020033602000bd40701107f230041d0006b22032400200341003b014c200320023602482003410036024420034281808080a00137023c2003200236023820034100360234200320023602302003200136022c2003410a3602282000280204210c2000280200210d2000280208210e200341406b210f027f0340024020032d004d450440200328022c210a02400240024002402003280238220b200328023022104b0d0020032802342202200b4b0d00200328023c2204450d012004200f6a41016b21110340200a200222076a210020112d0000210602400240024002400240027f02400240200b20026b220541084f0440024002402000200041036a417c712202460440200541086b2108410021020c010b200341206a20062000200220006b2202105820032802204101460d012002200541086b22084b0d030b200641818284086c21090340200020026a220141046a2802002009732212417f73201241818284086b7120012802002009732201417f73200141818284086b7172418081828478710d03200241086a220220084d0d000b0c020b200328022421010c020b200341106a20062000200510582003280214210120032802100c020b200220054b0d02200341186a2006200020026a200520026b1058410020032802184101470d011a2002200328021c6a22012002490d030b41010b22004101460440200141016a2202450d0302402007200220076a22024d04402003200236023420022004490d07200220104d0d010c070b41d08f04411c41f49d04102f000b200441054f0d04027f200a200220046b6a2106200f210720042105034041002005450d011a200541016b210520072d0000210820062d00002109200641016a2106200741016a210720082009460d000b200920086b0b0d05200341086a20032802442002200a105320032002360244200328020c2100200328020821020c0a0b2003200b3602340c060b41a08f04412141e09504102f000b41d08f04411c41f09504102f000b41d08f04411c41e49d04102f000b2004410441849e04100b000b2002200b4d0d000b0b200341013a004d20032d004c044020032802482101200328024421040c020b20032802482201200328024422044f04404100210220012004470d020c030b41a08f04412141cc9b04102f000b41a08f04412141d49d04102f000b200320042001200a105320032802042100200328020021020b20020d010b41000c020b0240200e2d00000440200d419491044104200c28020c1100000d010b200e2000047f200020026a41016b2d0000410a460541000b22013a0000200d20022000200c28020c110000450d010b0b41010b2100200341d0006a240020000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4e01027f20002802042102200028020021030240200028020822002d0000450d002003419491044104200228020c110000450d0041010f0b20002001410a463a00002003200120022802101101000b0c00200041fc9004200110450beb0201057f230041406a22022400200028020021054101210002402001280214220441989004410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4107360200200241346a410736020020024103360214200241f08f0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10450d00200528020822030440200441a49004410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a104521000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441a49004410220011100000d00200420032802002003280204200111000021000b200241406b240020000b130020004504404187a204412b2001102f000b0b6901017f230041306b220424002004200136020420042000360200200441146a42023702002004412c6a41073602002004410236020c20042003360208200441073602242004200441206a3602102004200441046a36022820042004360220200441086a20021031000b0bc5260200418080040bc10f2f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f73746f726167652d352e302e302d72632e312f7372632f6c617a792f6d617070696e672e7273e7dc23264661696c656420746f206765742076616c756520696e204d617070696e673a2074000100200000000000010070000000c4000000250000002c1201007500000091000000200000002c1201007500000091000000300000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b2d70616c6c65742d636f6e7472616374732d756170692d362e302e302f7372632f686f73742e7273000000cc000100710000002d000000170000000a0000000100000001000000030000004465636f6465427566666572546f6f536d616c6c52657475726e4572726f725375636365737343616c6c65655472617070656443616c6c656552657665727465644b65794e6f74466f756e645f42656c6f7753756273697374656e63655468726573686f6c645472616e736665724661696c65645f456e646f776d656e74546f6f4c6f77436f64654e6f74466f756e644e6f7443616c6c61626c654c6f6767696e6744697361626c656443616c6c52756e74696d654661696c656445636473615265636f766572794661696c6564537232353531395665726966794661696c656458636d457865637574696f6e4661696c656458636d53656e644661696c6564556e6b6e6f776e54686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e2c12010075000000800100000e0000002c120100750000001801000032000000656e636f756e746572656420756e6578706563746564206572726f72c80201001c0000002c12010075000000e1000000170000004411010076000000c40000003d0000004411010076000000c70000003b0000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f65726332302f6c69622e727300001c0301002e000000070000000500000073746f7261676520656e7472792077617320656d707479005c03010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279007c030100270000001c0301002e000000d30000003d00000001b5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb011a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d0000070000000d0000000e0000000b0000001a0000000e000000100000000c0000000b0000000f000000110000001300000013000000120000000d000000070000007f0101008601010093010100a1010100ac010100c6010100d4010100e4010100f0010100fb0101000a0201001b0201002e020100410201005302010060020100617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000b00000000000000010000000c0000004572726f720000000d0000000c000000040000000e0000000f000000100000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e7273000000f404010071000000980100001c0000006361706163697479206f766572666c6f770000007805010011000000f40401007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000001306010015000000280601000d000000a40501006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72738b0601006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000000807010071000000610700000d0000000807010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041d08f040bf316617474656d707420746f206164642077697468206f766572666c6f77293a0000e410010000000000ed07010001000000ed070100010000000b00000000000000010000001100000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320260801002000000046080100120000003a200000e4100100000000006808010002000000120000000c00000004000000130000001400000015000000202020202c0a28280a2f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000d509010070000000050500000d000000d50901007000000097050000300000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000680a010075000000760000004b000000680a010075000000770000003400000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820000b010012000000120b01002200000072616e676520656e6420696e64657820440b010010000000120b010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000640b0100160000007a0b01000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300980b010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820281c0c010015000000310c01002b000000ec070100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000740c0100720000004700000015000000740c0100720000004f00000032000000740c0100720000005a00000009000000740c010072000000660000000d000000740c0100720000006400000011000000740c01007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000480d0100710000009100000011000000480d0100710000004f0200002d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e727300dc0d010073000000d3000000130000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273600e010074000000a101000047000000600e010074000000b401000020000000600e010074000000b401000011000000600e010074000000b8010000370000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000140f01007a00000095000000010000009d08010070000000d201000005000000e410010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167652f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f616c6c6f6361746f722d352e302e302d72632e312f7372632f62756d702e72730000301001006a000000870000001100000000000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000301001006a0000009400000016000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00e41001000000000032110100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000044110100760000005c0000003b00000044110100760000005c0000001400000044110100760000005d0000000e00000044110100760000005e000000340000004411010076000000680000000900000044110100760000008600000025000000441101007600000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302d72632e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72732f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e7273a11201006b000000770000000e000000190000001c000000160000001400000019000000b80f0100d10f0100ed0f010003100100171001","build_info":{"build_mode":"Debug","cargo_contract_version":"3.2.0","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"erc20","version":"5.0.0-rc.1","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"total_supply","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":["Creates a new ERC-20 contract with the specified initial supply."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":14},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":2},"balance":{"displayName":["Balance"],"type":0},"blockNumber":{"displayName":["BlockNumber"],"type":23},"chainExtension":{"displayName":["ChainExtension"],"type":24},"hash":{"displayName":["Hash"],"type":21},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":22}},"events":[{"args":[{"docs":[],"indexed":true,"label":"from","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":true,"label":"to","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when a token transfer occurs."],"label":"Transfer","module_path":"erc20::erc20","signature_topic":"0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb"},{"args":[{"docs":[],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":true,"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when an approval occurs that `spender` is allowed to withdraw","up to the amount of `value` tokens from `owner`."],"label":"Approval","module_path":"erc20::erc20","signature_topic":"0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d"}],"lang_error":{"displayName":["ink","LangError"],"type":15},"messages":[{"args":[],"default":false,"docs":[" Returns the total token supply."],"label":"total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0xdb6375a8"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the account balance for the specified `owner`.",""," Returns `0` if the account is non-existent."],"label":"balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x0f755a56"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"label":"spender","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the amount which `spender` is still allowed to withdraw from `owner`.",""," Returns `0` if no allowance has been set."],"label":"allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x6a00165e"},{"args":[{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` amount of tokens from the caller's account to account `to`.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the caller's account balance."],"label":"transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x84a15da1"},{"args":[{"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Allows `spender` to withdraw from the caller's account multiple times, up to"," the `value` amount.",""," If this function is called again it overwrites the current allowance with"," `value`.",""," An `Approval` event is emitted."],"label":"approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x681266a0"},{"args":[{"label":"from","type":{"displayName":["AccountId"],"type":2}},{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` tokens on the behalf of `from` to the account `to`.",""," This can be used to allow a contract to transfer tokens on ones behalf and/or"," to charge fees in sub-currencies, for example.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientAllowance` error if there are not enough tokens allowed"," for the caller to withdraw from `from`.",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the account balance of `from`."],"label":"transfer_from","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x0b396f18"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"total_supply"},{"layout":{"root":{"layout":{"leaf":{"key":"0xe7dc2326","ty":0}},"root_key":"0xe7dc2326","ty":1}},"name":"balances"},{"layout":{"root":{"layout":{"leaf":{"key":"0xb721a0ec","ty":0}},"root_key":"0xb721a0ec","ty":9}},"name":"allowances"}],"name":"Erc20"}},"root_key":"0x00000000","ty":13}},"types":[{"id":0,"type":{"def":{"primitive":"u128"}}},{"id":1,"type":{"def":{"composite":{}},"params":[{"name":"K","type":2},{"name":"V","type":0},{"name":"KeyType","type":5}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":2,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":3,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":7}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":6,"type":{"def":{"composite":{}},"path":["ink_storage_traits","impls","AutoKey"]}},{"id":7,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":8,"type":{"def":{"tuple":[]}}},{"id":9,"type":{"def":{"composite":{}},"params":[{"name":"K","type":10},{"name":"V","type":0},{"name":"KeyType","type":11}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":10,"type":{"def":{"tuple":[2,2]}}},{"id":11,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":12}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":12,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"total_supply","type":0,"typeName":",>>::Type"},{"name":"balances","type":1,"typeName":" as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type"},{"name":"allowances","type":9,"typeName":" as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type"}]}},"path":["erc20","erc20","Erc20"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":15}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":15}],"path":["Result"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":15}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":19}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":19}],"path":["Result"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"index":0,"name":"InsufficientBalance"},{"index":1,"name":"InsufficientAllowance"}]}},"path":["erc20","erc20","Error"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":22,"type":{"def":{"primitive":"u64"}}},{"id":23,"type":{"def":{"primitive":"u32"}}},{"id":24,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":5} +{"source":{"hash":"0xf6939855fe6abe0b79cd23a154f0816d8205a5751f36b8703e9a60f31d9e48a5","language":"ink! 5.0.0-rc.1","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001691160037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f0060047f7f7f7f017f60057f7f7f7f7f0060000060017f017f60027e7e0060047f7f7e7e0060037e7e7f0060037f7e7e006000017f60057f7f7f7f7f017f60047f7f7e7e017f02c7010a057365616c310b6765745f73746f726167650006057365616c3005696e7075740002057365616c300d6465706f7369745f6576656e740005057365616c320b7365745f73746f726167650006057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c300663616c6c65720002057365616c301176616c75655f7472616e736665727265640002057365616c300f686173685f626c616b65325f323536000303656e76066d656d6f7279020102100356550000000007030b0202030c0d0402030305040207040202000202020403020204070e01010203040903030102010f0a02080a0208100408030502020901000001010104020101070605060201010300050101010205040501700116160616037f01418080040b7f0041809b050b7f0041fe9a050b0711020463616c6c003c066465706c6f79003f091b010041010b15555435332b2c495b4a2f2f2b2f4748454c2f57595a0afa78552b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6f01017f0240200020014d04402000210303402002450d02200320012d00003a0000200141016a2101200341016a2103200241016b21020c000b000b200141016b2101200041016b210303402002450d01200220036a200120026a2d00003a0000200241016b21020c000b000b20000b2501017f037f2002200346047f200005200020036a20013a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b2200200120034d044020002001360204200020023602000f0b200120032004100e000b0e0020002001200241f89004105d0bbb0102037f017e230041306b2204240020044100360220200442808001370228200441fe9a0436022441b7c380e57e200441246a2205101020002005101120012005101120042004290224370218200441106a200441186a2206200428022c10122004280214210020042802102101200429021821072004410036022c20042007370224200220032005101320042004290224370218200441086a2006200428022c1012200120002004280208200428020c10031a200441306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041017200241106a24000b0a0020012000412010170b4501017f2002200128020422034b044041a09604412341cc98041032000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101017200341106a24000bb50102047f017e230041306b2203240020034100360220200342808001370228200341fe9a0436022441e7b98fb102200341246a2204101020002004101120032003290224370218200341106a200341186a2205200328022c10122003280214210020032802102106200329021821072003410036022c20032007370224200120022004101320032003290224370218200341086a2005200328022c1012200620002003280208200328020c10031a200341306a24000bbd0102047f017e230041d0006b22012400200141186a220220001016200129021821052001410036022c20012005370224200141003a0044200141246a2203200141c4006a22044101101720012001290224370218200141106a2002200128022c10122003200128021020012802141018200141086a200028020020002802042000280208220210192001410036024c2001200129030837024420032004101120022002200128024c6a22024d101a20002002360208200141d0006a24000b3f01027f20012802042203200128020822024904402002200341bc98041031000b200041003602082000200320026b3602042000200128020020026a3602000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741ec9704105c0240200320044f0440200320054b0d01200420066a200320046b20012002418c9804101c2007419c9804105c200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41073602002000410236020c200041ac9104360208200041073602242000200041206a3602102000200041046a36022820002000360220200041086a41fc97041034000b2003200541fc9704100e000b8f0201077f230041d0006b22032400200341286a22044200370300200341206a22054200370300200341186a22064200370300200342003703100240200241214f0440200341c8006a22074200370300200341406b22084200370300200341386a220942003703002003420037033020012002200341306a1008200420072903003703002005200829030037030020062009290300370300200320032903303703100c010b200341086a2002200341106a412041a48104100d2003280208200328020c2001200241b48104101c0b20002003290310370000200041186a200341286a290300370000200041106a200341206a290300370000200041086a200341186a290300370000200341d0006a24000b29002002200349044020032002418c84041031000b2000200220036b3602042000200120036a3602000b1500200045044041c39604412b419c84041032000b0bb20102037f017e230041d0006b22022400200241186a220420001016200229021821052002410036022c200220053702242001200241246a2203101120022002290224370218200241106a2004200228022c10122003200228021020022802141018200241086a200028020020002802042000280208220110192002410036024c200220022903083702442003200241c4006a101120012001200228024c6a22014d101a20002001360208200241d0006a24000b7b002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41073602002000410336020c200041809304360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a20041034000b5c01027f230041206b22012400200141086a200028020020002802042000280208220210192001410036021c20012001290308370214200141146a410c101e20022002200128021c6a22024d101a20002002360208200141206a24000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41073602002000410236020c200041948e04360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a41ac98041034000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120102045044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f2000280204220320024922044504402001200220002802002201200241b49a04101c2000200320026b3602042000200120026a3602000b20040b5502027f017e230041206b22022400200241086a20011022200241186a29030021042002280208210320002002290310370308200041106a200437030020002003200128020472410047ad370300200241206a24000b5f02017f037e230041106b2202240020024200370308200242003703000240200120024110102045044020022903082104200229030021050c010b420121030b2000200537030820002003370300200041106a2004370300200241106a24000ba90102017f027e230041406a220224002002411f6a2001101f0240024020022d001f0d002002200110222002290300a70d00200241106a2903002103200229030821042000200229002037000820004200370300200041286a2004370300200041306a2003370300200041206a200241386a290000370000200041186a200241306a290000370000200041106a200241286a2900003700000c010b200042013703000b200241406b24000be80202077f017e230041406a22012400200142808001370228200141fe9a04360224200141246a101d200141186a2001412c6a28020036020020012001290224370310200141306a2202200141106a41b587041025200041316a2105024020002d001004402002200041116a101b0c010b200141306a10150b200041106a2106200141186a200141386a28020036020020012001290230370310024020052d00000440200141106a200041326a101b0c010b200141106a10150b200141386a2202200141186a220328020036020020012001290310370330200141106a2204200141306a2207102620022003280200360200200120012902102208370330200141206a2802002102200128021c210320014100360218200120083702102006200410272005200410272000290300200041086a2903002004101320012001290210370330200141086a200720012802181012200320022001280208200128020c1002200141406b24000bda0102037f017e230041d0006b22032400024020020440200341186a220520011016200329021821062003410036022c200320063702242002200341246a2204101120032003290224370218200341106a2005200328022c10122004200328021020032802141018200341086a200128020020012802042001280208220210192003410036024c200320032903083702442004200341c4006a101120022002200328024c6a22024d101a200120023602080c010b200110150b20002001290200370200200041086a200141086a280200360200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101220022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b210020002d000045044020014100101e0f0b20014101101e200041016a200110110baf0101027f230041306b2201240020014180800136020441fe9a04200141046a2202100620014180800136022c200141fe9a043602282002200141286a101f20012d00040440200141103a000441f7820441c100200241c8820441b883041029000b2000200141066a290000370001200041096a2001410e6a290000370000200041116a200141166a290000370000200041186a2001411d6a290000370000200020012d00053a0000200141306a24000b7c01017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a42023702002005413c6a41013602002005410236021c200541a88e04360218200541023602342005200541306a3602202005200541106a3602382005200541086a360230200541186a20041034000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10072000290308210120002903002102200041206a2400410541042001200284501b0b1b002001280214418889044105200141186a28020028020c1100000b3400200128021420002802002d0000410274220041b888046a280200200041f887046a280200200141186a28020028020c1100000bff0202057f027e230041d0006b220224002002410036023020024280800137023c200241fe9a0436023841e7b98fb102200241386a2204101020012004101120022002290238370228200241206a200241286a200228024010122002280224210320022802202105200228022821012002200228022c2206360238200520032001200410002103200241186a20022802382001200641b88204100d027e024002400240024020030e0400010103010b200228021821012002200228021c36023c200220013602382002200241386a10212002290300a70d0120022903082107200241106a2903000c030b200241c4006a42003702002002410136023c200241f48304360238200241a09604360240200241386a41fc83041034000b200241103a0037200241c4006a42013702002002410136023c2002418c81043602382002410336022c2002200241286a3602402002200241376a360228200241386a419481041034000b42000b21082000200737030020002008370308200241d0006a24000b850302047f027e230041d0006b220324002003410036023020034280800137023c200341fe9a0436023841b7c380e57e200341386a2204101020012004101120022004101120032003290238370228200341206a200341286a200328024010122003280224210220032802202105200328022821012003200328022c2206360238200520022001200410002102200341186a20032802382001200641b88204100d027e024002400240024020020e0400010103010b200328021821012003200328021c36023c200320013602382003200341386a10212003290300a70d0120032903082107200341106a2903000c030b200341c4006a42003702002003410136023c200341f48304360238200341a09604360240200341386a41fc83041034000b200341103a0037200341c4006a42013702002003410136023c2003418c81043602382003410336022c2003200341286a3602402003200341376a360228200341386a419481041034000b42000b21082000200737030020002008370308200341d0006a24000b0300010b1b002000418180014f044020004180800141c88304100e000b20000b0e0020002001200241d89004105d0b4601017f230041206b220324002003410c6a420037020020034101360204200341a096043602082003200136021c200320003602182003200341186a360200200320021034000b840101017f230041306b22022400200241146a42013702002002410136020c200241a0950436020820024102360224200220002d0000410274220041c49a046a28020036022c2002200041d89a046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10462100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241c48d04360210200241a0960436020c2002410c6a104b000b8f0101027f230041106b22022400027f024002400240410220002d000041106b41ff01712203200341024f1b41016b0e020102000b20022000360208200141d882044106200241086a410510360c020b200128021441de8204410e200141186a28020028020c1100000c010b2002200036020c200141ec8204410b2002410c6a410610360b2100200241106a240020000ba20201047f230041406a220524004101210702402000280214220620012002200041186a280200220228020c22011100000d000240200028021c2208410471450440200641d68e04410120011100000d022003200020041101000d0220002802142106200028021828020c21010c010b200641d78e04410220011100000d01200541013a001b200541346a41b88e04360200200520023602102005200636020c20052008360238200520002d00203a003c2005200028021036022c200520002902083702242005200029020037021c20052005411b6a36021420052005410c6a36023020032005411c6a20041101000d01200528023041d48e044102200528023428020c1100000d010b200641a88d044101200111000021070b200541406b240020070b3e01027f230041106b22022400200242808001370208200241fe9a04360204200241046a22034100101e20002001200310134100200228020c1030103b000b5101027f230041106b22022400200242808001370208200241fe9a04360204200241046a22034100101e2003200141ff0171410247047f20034101101e20010541000b101e2000200228020c1030103b000b3c01027f230041106b22002400200042808001370208200041fe9a04360204200041046a22014101101e20014101101e4101200028020c1030103b000bab0102057f017e230041306b2202240020024100360220200242808001370228200241fe9a043602244100200241246a2203101020022002290224370218200241106a200241186a2204200228022c10122002280214210520022802102106200229021821072002410036022c20022007370224200020012003101320022002290224370218200241086a2004200228022c1012200620052002280208200228020c10031a200241306a24000b0d00200041fe9a0420011005000b821602087f047e230041a0056b22002400024002400240102a41ff017141054604402000418080013602c80441fe9a04200041c8046a2201100120004180016a20002802c80441fe9a044180800141b88204100d20002000290380013702bc04200041003602c804200041bc046a2001410410200d0220002d00cb04210220002d00ca04210320002d00c9042101027f02400240024002400240024020002d00c8042204410b6b0e050509090901000b0240200441e8006b0e03040902000b2004418401460d02200441db0147200141ff017141e3004772200341f50047200241a8014772720d0841000c050b200141ff017141f50047200341da004772200241d60047720d07200041c8046a200041bc046a101f20002d00c8040d07200041f0016a200041d2046a290000370300200041f8016a200041da046a290000370300200041ff016a200041e1046a2900003700002000200041ca046a2900003703e80120002d00c904210141010c040b200141ff0171200341164772200241de0047720d06200041a8026a200041bc046a2201101f20002d00a8020d0620004188016a2001101f20002d0088010d06200041ff046a200041a1016a290000370000200041f7046a20004199016a290000370000200041ef046a20004191016a290000370000200041d0046a200041b2026a290000370300200041d8046a200041ba026a290000370300200041df046a200041c1026a29000037000020002000290089013700e7042000200041aa026a2900003703c80420002d00a9022101200041e8016a200041c8046a413f10091a41020c030b200141ff017141a10147200341dd004772200241a10147720d05200041c8046a200041bc046a102320002903c8044200520d05200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41030c020b200141ff0171411247200341e6004772200241a00147720d04200041c8046a200041bc046a102320002903c8044200520d04200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41040c010b200141ff0171413947200341ef0047722002411847720d03200041f0036a200041bc046a2201101f20002d00f0030d0320004198046a2001101f20002d0098040d03200041e8006a200110222000290368a70d03200041f8006a290300210820002903702109200041c8036a200041f1036a220141186a290000370300200041c0036a200141106a290000370300200041b8036a200141086a290000370300200041d8036a200041a1046a290000370300200041e0036a200041a9046a290000370300200041e8036a200041b1046a29000037030020002000290099043703d003200020012900003703b003200041f0026a2202200041b0036a41c00010091a200041ae026a2000418e016a200041ce046a200241c000100941c000100941c00010091a200041e8016a200041a8026a413f10091a2000200041ea026a2800003600e301200020002800e7023602e00141050b210220004188016a410272200041e8016a413f10091a200041cc016a20002800e301360000200041d8016a2008370300200020002802e0013600c901200020093703d001200020013a008901200020023a008801200041003602b0022000428080013702cc04200041fe9a043602c8044100200041c8046a22031010200020002902c8043702a802200041e0006a200041a8026a20002802d0041012200028026421042000280260210520002802a8022101200020002802ac0222063602c804200520042001200310002103200041d8006a20002802c8042001200641b88204100d02400240024020030e0400040401040b200028025821012000200028025c3602cc04200020013602c804200041406b200041c8046a10222000290340a745044020002802cc04450d020b200041d4046a4200370200200041013602cc042000419c87043602c8040c050b200041d4046a4200370200200041013602cc04200041ec86043602c8040c040b20004188016a4101722101200041d0006a290300210820002000290348220937039804200020083703a00402400240024002400240024002400240200241016b0e050001040502030b230041406a22022400200241286a200141086a290000370200200241306a200141106a290000370200200241386a200141186a290000370200200220004198046a36021c20022001290000370220200241086a200241206a102d20022903082108200041086a2201200241106a29030037030820012008370300200241406b24002000290308200041106a2903001037000b230041e0006b22022400200220004198046a36021c200241086a200241206a200141c0001009200241406b102e20022903082108200041186a2201200241106a29030037030820012008370300200241e0006a24002000290318200041206a2903001037000b200041d0046a20004190016a41d00010092101200020004198046a3602c80420004190056a290300210920004198056a2903002108200041a8026a22021028200041306a20012002102e41012103410121022000290330220b2009542204200041386a290300220a2008542008200a511b0d04410221022001200041f0046a20092008103d41ff017122054102460d03200541004721020c040b200920081037000b200041d0046a20004190016a413010092101200020004198046a3602c804200041f8046a2903002108200041f0046a2903002109200041a8026a220210282002200120092008103d220141ff0171410246047f200029039804200041a0046a290300103a41000541010b20011038000b200041b8036a20004190016a413010092101200020004198046a3602b003200041e0036a2903002108200041d8036a2903002109200041f0026a220210282002200120092008100f200041c0026a20004188036a290000370300200041b8026a20004180036a290000370300200041b0026a200041f8026a290000370300200041d0026a20004198016a290300370300200041d8026a200041a0016a290300370300200041e0026a200041a8016a290300370300200020002900f0023703a80220002000290390013703c802200041c8046a2204200041a8026a41c00010091a20004190056a2206200837030020002009370388052000428080013702c004200041fe9a043602bc04200041bc046a101d200041f0016a2202200041c4046a280200360200200020002902bc043703e801200041f0036a2203200041e8016a220141d68704102520032004101b2002200041f8036a2205280200360200200020002902f0033703e8012001200041e8046a2207101b20052002280200360200200020002903e8013703f00320012003102620052002280200360200200020002902e80122083703f003200041f8016a280200210220002802f4012105200041003602f001200020083702e801200420011011200720011011200029038805200629030020011013200020002902e8013703f003200041286a200320002802f0011012200520022000280228200028022c1002200029039804200041a0046a290300103a410041021038000b2001200041a8026a200b20097d200a20087d2004ad7d100f200029039804200041a0046a290300103a410021030b200320021038000b200041043a00c804200041c8046a103e000b200041d4046a4200370200200041013602cc04200041f483043602c804200041a096043602d004200041c8046a41fc83041034000b1039000b200041a096043602d004200041c8046a41c486041034000bd40202037f037e23004180016b22042400200441186a2000102d0240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d1014200441086a2001102d2004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b4101460d012001200920081014200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1024410221050b20044180016a240020050f0b41c39604412b41a487041032000b4801017f230041206b220124002001410c6a420137020020014101360204200141a095043602002001410436021c200120003602182001200141186a360208200141c486041034000bf00402087f037e230041c0016b220024000240102a220141ff0171410546044020004180800136025041fe9a04200041d0006a22011001200041286a200028025041fe9a044180800141b88204100d200020002903283702502000410036023002402001200041306a410410200d0020002d0030419b01470d0020002d003141ae01470d0020002d0032419d01470d0020002d003341de00470d00200041106a200110222000290310a7450d020b1039000b200020013a0050200041d0006a103e000b200041206a290300210820002903182109200041306a1028200041ec006a200041c8006a2202290000370200200041e4006a200041406b2203290000370200200041dc006a200041386a220429000037020020002000290030370254200041808004360250200041003602b0012000428080013702b801200041fe9a043602b40141e7b98fb102200041b4016a22011010200041d4006a20011011200020002902b4013702a801200041086a200041a8016a220520002802bc011012200028020c21062000280208210720002902a801210a200041003602bc012000200a3702b4012009200820011013200020002902b4013702a8012000200520002802bc011012200720062000280200200028020410031a2000419a016a200229000037010020004192016a20032900003701002000418a016a200429000037010020004182016a20002900303701002000200837035820002009370350200041013a008101200041003a0060200041d0006a102420092008103a230041106b22002400200042808001370208200041fe9a04360204200041046a22014100101e20014100101e4100200028020c1030103b000b6001027f230041106b2203240020022000280204200028020822046b4b0440200341086a20002004200210412003280208200328020c1042200028020821040b200028020020046a2001200210091a2000200220046a360208200341106a24000ba80301057f230041206b22042400027f4100200220036a22032002490d001a4108200128020422024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003104320022802082105200228020c0c020b200528020021080240200310442205450440410021050c010b20052008200710091a0b20030c010b2002200310432002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000bd10100024020004181808080784704402000450d01230041306b220024002000200136020c2000411c6a420137020020004102360214200041d88b043602102000410736022c2000200041286a36021820002000410c6a360228230041206b22012400200141003b011c200141e88b043602182001200041106a360214200141c48d04360210200141a0960436020c2001410c6a104b000b0f0b230041206b22002400200041146a42003702002000410136020c200041ac8a04360208200041a09604360210200041086a41b48a041034000b2001017f41ec9a042d00001a20011044210220002001360204200020023602000bb70101027f027f41f09a042d0000044041f49a042802000c010b3f00210141f49a0441809b0536020041f09a0441013a000041f89a04200141107436020041809b050b21010240027f4100200020016a22022001490d001a41f89a042802002002490440200041ffff036a220241107640002201417f460d022001411074220120024180807c716a22022001490d0241f89a0420023602004100200020016a22022001490d011a0b41f49a04200236020020010b0f0b41000b0c00200041908904200110460bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10562003200329031037021c200341086a20062001105620032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0c00200020012002104041000bb90201037f230041106b22022400024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a20002003410110412004280208200428020c1042200441106a2400200028020821030b2000200341016a360208200028020020036a20013a00000c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10400b200241106a240041000bdb05020b7f027e230041406a220324004127210202402000350200220d4290ce00540440200d210e0c010b0340200341196a20026a220041046b200d4290ce0080220e42f0b1037e200d7ca7220441ffff037141e4006e220641017441d98e046a2f00003b0000200041026b2006419c7f6c20046a41ffff037141017441d98e046a2f00003b0000200241046b2102200d42ffc1d72f562100200e210d20000d000b0b200ea7220041e3004b0440200241026b2202200341196a6a200ea7220441ffff037141e4006e2200419c7f6c20046a41ffff037141017441d98e046a2f00003b00000b02402000410a4f0440200241026b2202200341196a6a200041017441d98e046a2f00003b00000c010b200241016b2202200341196a6a200041306a3a00000b200128021c22054101712207412720026b22066a2100410021042005410471044041a09604210441a0960441a09604104d20006a21000b412b418080c40020071b2107200341196a20026a2108024020012802004504404101210220012802142200200128021822012007200410500d01200020082006200128020c11000021020c010b2000200128020422094f04404101210220012802142200200128021822012007200410500d01200020082006200128020c11000021020c010b200541087104402001280210210b2001413036021020012d0020210c41012102200141013a0020200128021422052001280218220a2007200410500d01200341106a2001200920006b4101105120032802102200418080c400460d0120032802142104200520082006200a28020c1100000d01200020042005200a10520d012001200c3a00202001200b360210410021020c010b41012102200341086a2001200920006b4101105120032802082205418080c400460d00200328020c210920012802142200200128021822012007200410500d00200020082006200128020c1100000d002005200920002001105221020b200341406b240020020b0e0020002802001a03400c000b000bc40101017f230041406a220124002001200036020c2001411c6a420137020020014102360214200141f096043602102001410836022c2001200141286a36021820012001410c6a3602282001410036023820014201370230200141306a200141106a10454504402001280230210020012802382101024041fc9a042d000045044041fd9a042d00004101710d010b200020011004410947044041fc9a0441013a00000b41fd9a0441013a00000b000b41f88b0441332001413f6a41f8880441988d041029000b210020004283ddaa8bf8ede3ea20370308200042ec80a48aff99c486ab7f3703000ba10301067f230041106b220224000240200120006b220141104f04402000200041036a417c71220520006b2200104e2005200120006b2200417c716a2000410371104e6a21042000410276210303402003450d0220022005200341c0012003200341c0014f1b41b09204104f200228020c21032002280208210520022002280200200228020422002000417c71418c9404104f024020022802042200450440410021010c010b2002280200220620004102746a21074100210103404100210003402001200020066a2802002201417f734107762001410676724181828408716a2101200041046a22004110470d000b200641106a22062007470d000b0b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a2104200228020c2201450d000b2002280208210020014102742103410021010340200120002802002201417f734107762001410676724181828408716a2101200041046a2100200341046b22030d000b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a21040c010b20002001104e21040b200241106a240020040b2c01017f200104400340200220002c000041bf7f4a6a2102200041016a2100200141016b22010d000b0b20020b3d002002200349044041a09604412320041032000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000b9c0101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b20024101762104200241016a41017621020b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490bf60101067f2000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722104200341f00149044020042006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200441067472722203418080c400460d011a0b200120012802082207200520026b6a36020820030b360204200020073602000bb90301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d002001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1053200228021c418080c400470d010c020b0b200241106a200241246a10532002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200141186a28020028020c11000021000c030b200128020422002003200320046a104d22054d0d01200241086a2001200020056b410010514101210020022802082205418080c400460d02200228020c21062001280214220720032004200141186a280200220128020c1100000d022005200620072001105221000c020b200128021420032004200141186a28020028020c11000021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044109470d0120012802000b2802002104410121030b20002004360204200020033602000bd30501107f230041406a22032400200341003b013c200320023602382003410036023420034281808080a00137022c2003200236022820034100360224200320023602202003200136021c2003410a3602182000280204210a2000280200210b2000280208210c200341306a210d027f0340027f024020032d003d450440200328021c2108024020032802282205200328022022104b0d002003280224220120054b0d00200328022c2200200d6a41016b21110340200120086a210420112d0000210602400240027f0240200520016b220741084f0440024002402004200441036a417c712202460440200741086b210e410021020c010b200341106a20062004200220046b2202105820032802104101460d012002200741086b220e4b0d030b200641818284086c210f0340200220046a220941046a280200200f732212417f73201241818284086b712009280200200f732209417f73200941818284086b7172418081828478710d03200241086a2202200e4d0d000b0c020b2003280214210241010c020b200320062004200710582003280204210220032802000c010b200341086a2006200220046a200720026b1058200328020c20026a210220032802084101460b41014604402003200120026a41016a2201360224200020014b200120104b720d02200041054f0d012008200120006b6a21022002200d2000100c0d022003280234210020032001360234200120006b0c070b200320053602240c030b2000410441909504100e000b200120054d0d000b0b200341013a003d20032d003c044020032802382102200328023421000c020b2003280238220220032802342200470d010b41000c030b200220006b0b21010240200c2d00000440200b41d08e044104200a28020c1100000d010b200020086a2100200c2001047f200020016a41016b2d0000410a460541000b3a0000200b20002001200a28020c110000450d010b0b41010b2100200341406b240020000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4e01027f20002802042102200028020021030240200028020822002d0000450d00200341d08e044104200228020c110000450d0041010f0b20002001410a463a00002003200120022802101101000b0c00200041b88e04200110460bea0201067f230041406a22022400200028020021054101210002402001280214220441d48d04410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4107360200200241346a410736020020024103360214200241ac8d0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a220736021820042006200241106a10460d00200528020822030440200441e08d04410220011100000d01200241386a200341106a290200370300200241306a200341086a29020037030020022003290200370328200420062007104621000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441e08d04410220011100000d00200420032802002003280204200111000021000b200241406b240020000b1300200045044041c39604412b20011032000b0b6901017f230041306b220424002004200136020420042000360200200441146a42023702002004412c6a41073602002004410236020c20042003360208200441073602242004200441206a3602102004200441046a36022820042004360220200441086a20021034000b0bf41a0100418080040beb1ae7dc23262f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f73746f726167652f7372632f6c617a792f6d617070696e672e72734661696c656420746f206765742076616c756520696e204d617070696e673a2000000069000100200000000400010065000000c4000000250000005c0c01006a00000093000000200000005c0c01006a00000093000000300000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f70616c6c65742d636f6e7472616374732d756170692d6e6578742d362e302e312f7372632f686f73742e72730000c4000100720000002d000000170000000a0000000100000001000000030000004465636f6465427566666572546f6f536d616c6c52657475726e4572726f7254686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e5c0c01006a000000820100000e0000005c0c01006a0000001a01000032000000656e636f756e746572656420756e6578706563746564206572726f72d80101001c0000005c0c01006a000000e300000017000000800b01006b000000cf0000003d000000800b01006b000000d20000003b0000005375636365737343616c6c65655472617070656443616c6c656552657665727465644b65794e6f74466f756e645f42656c6f7753756273697374656e63655468726573686f6c645472616e736665724661696c65645f456e646f776d656e74546f6f4c6f77436f64654e6f74466f756e644e6f7443616c6c61626c654c6f6767696e6744697361626c656443616c6c52756e74696d654661696c656445636473615265636f766572794661696c6564537232353531395665726966794661696c656458636d457865637574696f6e4661696c656458636d53656e644661696c6564556e6b6e6f776e2f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f65726332302f6c69622e72730000140301002e000000070000000500000073746f7261676520656e7472792077617320656d707479005403010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279007403010027000000140301002e000000d30000003d00000001b5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb011a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d0000070000000d0000000e0000000b0000001a0000000e000000100000000c0000000b0000000f000000110000001300000013000000120000000d000000070000002c02010033020100400201004e020100590201007302010081020100910201009d020100a8020100b7020100c8020100db020100ee020100000301000d0301000b00000000000000010000000c0000004572726f720000000d0000000c000000040000000e0000000f000000100000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f7700001905010011000000a80401007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564000000b305010015000000c80501000d000000440501006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72732b0601006d0000006402000020000000293a0000200b010000000000a906010001000000a9060100010000000b00000000000000010000001100000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320e20601002000000002070100120000003a200000200b0100000000002407010002000000120000000c00000004000000130000001400000015000000202020202c0a28280a303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393972616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468200000002108010012000000330801002200000072616e676520656e6420696e6465782068080100100000003308010022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200088080100160000009e0801000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300bc08010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820284009010015000000550901002b000000a8060100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273000098090100720000004f000000320000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e72731c0a010074000000b801000037000000200b010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d657373616765617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00200b0100000000006e0b0100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300800b01006b0000005c0000003b000000800b01006b0000005c00000014000000800b01006b0000005d0000000e000000800b01006b0000005e00000034000000800b01006b0000006800000009000000800b01006b0000008600000025000000800b01006b00000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72732f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e7273000000c60c01006b000000770000000e000000190000001c000000160000001400000019000000a80a0100c10a0100dd0a0100f30a0100070b01","build_info":{"build_mode":"Debug","cargo_contract_version":"4.0.0-rc.2","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"erc20","version":"5.0.0-rc.1","authors":["Parity Technologies "]},"image":null,"spec":{"constructors":[{"args":[{"label":"total_supply","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":["Creates a new ERC-20 contract with the specified initial supply."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":14},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":2},"balance":{"displayName":["Balance"],"type":0},"blockNumber":{"displayName":["BlockNumber"],"type":23},"chainExtension":{"displayName":["ChainExtension"],"type":24},"hash":{"displayName":["Hash"],"type":21},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":22}},"events":[{"args":[{"docs":[],"indexed":true,"label":"from","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":true,"label":"to","type":{"displayName":["Option"],"type":20}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when a token transfer occurs."],"label":"Transfer","module_path":"erc20::erc20","signature_topic":"0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb"},{"args":[{"docs":[],"indexed":true,"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":true,"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"docs":[],"indexed":false,"label":"value","type":{"displayName":["Balance"],"type":0}}],"docs":["Event emitted when an approval occurs that `spender` is allowed to withdraw","up to the amount of `value` tokens from `owner`."],"label":"Approval","module_path":"erc20::erc20","signature_topic":"0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d"}],"lang_error":{"displayName":["ink","LangError"],"type":15},"messages":[{"args":[],"default":false,"docs":[" Returns the total token supply."],"label":"total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0xdb6375a8"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the account balance for the specified `owner`.",""," Returns `0` if the account is non-existent."],"label":"balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x0f755a56"},{"args":[{"label":"owner","type":{"displayName":["AccountId"],"type":2}},{"label":"spender","type":{"displayName":["AccountId"],"type":2}}],"default":false,"docs":[" Returns the amount which `spender` is still allowed to withdraw from `owner`.",""," Returns `0` if no allowance has been set."],"label":"allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":16},"selector":"0x6a00165e"},{"args":[{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` amount of tokens from the caller's account to account `to`.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the caller's account balance."],"label":"transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x84a15da1"},{"args":[{"label":"spender","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Allows `spender` to withdraw from the caller's account multiple times, up to"," the `value` amount.",""," If this function is called again it overwrites the current allowance with"," `value`.",""," An `Approval` event is emitted."],"label":"approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x681266a0"},{"args":[{"label":"from","type":{"displayName":["AccountId"],"type":2}},{"label":"to","type":{"displayName":["AccountId"],"type":2}},{"label":"value","type":{"displayName":["Balance"],"type":0}}],"default":false,"docs":[" Transfers `value` tokens on the behalf of `from` to the account `to`.",""," This can be used to allow a contract to transfer tokens on ones behalf and/or"," to charge fees in sub-currencies, for example.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `InsufficientAllowance` error if there are not enough tokens allowed"," for the caller to withdraw from `from`.",""," Returns `InsufficientBalance` error if there are not enough tokens on"," the account balance of `from`."],"label":"transfer_from","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0x0b396f18"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"total_supply"},{"layout":{"root":{"layout":{"leaf":{"key":"0xe7dc2326","ty":0}},"root_key":"0xe7dc2326","ty":1}},"name":"balances"},{"layout":{"root":{"layout":{"leaf":{"key":"0xb721a0ec","ty":0}},"root_key":"0xb721a0ec","ty":9}},"name":"allowances"}],"name":"Erc20"}},"root_key":"0x00000000","ty":13}},"types":[{"id":0,"type":{"def":{"primitive":"u128"}}},{"id":1,"type":{"def":{"composite":{}},"params":[{"name":"K","type":2},{"name":"V","type":0},{"name":"KeyType","type":5}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":2,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":3,"type":{"def":{"array":{"len":32,"type":4}}}},{"id":4,"type":{"def":{"primitive":"u8"}}},{"id":5,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":7}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":6,"type":{"def":{"composite":{}},"path":["ink_storage_traits","impls","AutoKey"]}},{"id":7,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":8,"type":{"def":{"tuple":[]}}},{"id":9,"type":{"def":{"composite":{}},"params":[{"name":"K","type":10},{"name":"V","type":0},{"name":"KeyType","type":11}],"path":["ink_storage","lazy","mapping","Mapping"]}},{"id":10,"type":{"def":{"tuple":[2,2]}}},{"id":11,"type":{"def":{"composite":{}},"params":[{"name":"L","type":6},{"name":"R","type":12}],"path":["ink_storage_traits","impls","ResolverKey"]}},{"id":12,"type":{"def":{"composite":{}},"params":[{"name":"ParentKey","type":8}],"path":["ink_storage_traits","impls","ManualKey"]}},{"id":13,"type":{"def":{"composite":{"fields":[{"name":"total_supply","type":0,"typeName":",>>::Type"},{"name":"balances","type":1,"typeName":" as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type"},{"name":"allowances","type":9,"typeName":" as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type"}]}},"path":["erc20","erc20","Erc20"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":15}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":15}],"path":["Result"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":15}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":15}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"fields":[{"type":8}],"index":0,"name":"Ok"},{"fields":[{"type":19}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":8},{"name":"E","type":19}],"path":["Result"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"index":0,"name":"InsufficientBalance"},{"index":1,"name":"InsufficientAllowance"}]}},"path":["erc20","erc20","Error"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":21,"type":{"def":{"composite":{"fields":[{"type":3,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":22,"type":{"def":{"primitive":"u64"}}},{"id":23,"type":{"def":{"primitive":"u32"}}},{"id":24,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":5} diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.json b/packages/api-contract/src/test/contracts/ink/v5/erc20.json index 0f1dd10d0a3a..ea8318f1ded1 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/erc20.json +++ b/packages/api-contract/src/test/contracts/ink/v5/erc20.json @@ -1,11 +1,11 @@ { "source": { - "hash": "0x656ec6137638ba8ad1477e96dfe91eb90ca625dfbe543057868ea521fd1b73fe", + "hash": "0xf6939855fe6abe0b79cd23a154f0816d8205a5751f36b8703e9a60f31d9e48a5", "language": "ink! 5.0.0-rc.1", "compiler": "rustc 1.75.0", "build_info": { "build_mode": "Debug", - "cargo_contract_version": "3.2.0", + "cargo_contract_version": "4.0.0-rc.2", "rust_toolchain": "stable-aarch64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, @@ -20,6 +20,7 @@ "Parity Technologies " ] }, + "image": null, "spec": { "constructors": [ { diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20.wasm b/packages/api-contract/src/test/contracts/ink/v5/erc20.wasm index 0ad59dc4371c938e94aa1f798970dd90464308e0..f6800bb8784e46279835e91f4da1d71d2907faca 100644 GIT binary patch delta 7586 zcmbVRdvI09dEec0&b?PU_ew_(^nUC)x*!Q8BtS?)Jakv)Vayx95*No-g#z4*1xPZ* zj?EP~#?&?xynawZGBozsBz9xFc4OR9w;nSc{%8{0^(1ss*KVDTiR*Zn#?vq@HT`{i z?iF&JNhW33d-n0|x8M8wcJ+f({QMLA$m$|Ho87yY-EQsOo5k@mX(rXSwcul@^;4h7*-Td`&?S|v7}Hu z7ek0ICovQpNp)a z#7-$z?B-52B!LD7)V@vUrv0n*Nqcz$MA_2HXh--ZMa(T?#2I#9I%0db>Z4Y2$!Evy zZjn^4yfN|bd!?A>+kKsjCsAnDhZcB@GCh$<|5Y5Y{BgNU?SM4MNte`(F+WxBzx zEH4E(qv;s^#67D<+WO}r*;$G6ymXSeg>*Jk(yMfrfo(9&TZA20tH9LB$8FW5{^6MI z&DD#o)v-!&Pn&d)NcQGv{P5L3c@csl8f` z0_rdwqaQ<^r8XSA&B^HxB0dvh63&fX6w|3!|+uB1(!( zw}AQxH9*tdLT`vRi;thscSnQ5hXG$Fqw2&l{d81`=Z@;1N83s+KVf@az+y>9QNKtl z=lj)9?X$haRW3o7P%mSyPJ5A!&ck2F$$CqqG4TeZJxiUycrJ7GTDy){=#1UiY$(r( zlavPC3nNJ)l9Pz~IMc`!T4yijLZ+E@;bZV?aw4+X%9R{;^HlX^yMm6*_a zOTjFdme-}f9h)&TC(61>QI?M;XB=A?ZGSmAme0tKu^m888|I4i(9)7~__ zB;M`j#vYBc@!5Qa{$9MVs#!YVyIHbU3;w8LY5Lk;*&~TcUaG4S3vR0*qptEJFlUIk z4bqRm4{%D(_`hKGd5b4+Cq3Z@dIES1v4pG&KQ{fu0^wEb7ZNoMp_KwKZ>7)}lw>#n zxfc?fK+LkDMePlUH;8Od1O*s~uf%;GaX1T)>C8I}1P2p_*!1^`DmsnyT1eEYCG9m* zn6e=x$ghvt>R0=1^*R)x&Y^SqKHF>6zbZN=P94@qi|6nz{YLSZ_(5IgwZu;!w9`a9 zQ%HD?gSc0Pfk3F`reWT{;)n#GQ)WkzSE`GmR0C?OWOS0>0zj}e*JX# zy`EWGLqaRfA9tXXj{ED~nto(7bJv@$_m;}><51eNJ7HC3$w^)RkhjmlgRXVz+ zodbmk)BI5nsWR|ral zzS2|GhyZ$X)k)r{FI9c50^p5gNT);sxl|oAv7k{uRQ(Qb(zn-a$L|kn(k*$gi&g@a zi8^Le$S@m^*=FVfqnY5P;o6R@v`f-Bql|Im7%6KN7kH0#kpzWs zg-?sP$PuyH1Gx@VDB<!JIOG2#+^ak_-9 zmdt2Jo!LKw^7qX%?#L#MiS>aw1gqZ~8Yozyi1ZrB113Ym?UQlEqDV(8&=h5FJA-N& z5eW)F%>YfStL2_IU|@WEC6q{clUxrV1*QVUh*APo$*6iyS=^xvE;E6RaFM0(gNsK1 z<5`(tH44=#)#m!S=EM9Ny|AU0FV#1rGP*|ZY59KEeTy^XOs4itOib)qLE&Xtf&(22 z0>iFEsEK2}E|$=#wH6Xzc?DTb*iWgzejyYI%;f_icET0)vkIi}b`j)G8KpgmP! z1>yuqxvb+Vm#TO^RdJK5m|N`Xk6P=q&pn7O&~CU)3Pa+0`9T;mxf9Q-kB{3(i8Zj| zr9R|K^g_Z^0WtR#s%{{Xiv|XllTVN1M#E4U^)sK-i0+$!BnZlBs81*oD{q`8u~zN+ z908c53eG1 zEtnM(r76t5D!4^D3=^WhvHkveYRUy{0NzNt4vhkV!ITxo2#j^)u9>=g_O@(_(l-GE z?N1%yW(9dB>SEZRYW9UlNj6`wATe;{hwKLEJK+~W9u}EmHR`N1DhoR!&GJN0G;r}n zYp+b)^Gsl?D_5*t>St^uh$ud;{^_ut?qF;oBaTD{$^JxkyUg0@5bpC3Na(m*1M8L7 zf6{T2&t#FGkPMevR~9{k6F*?&3@CC?5g0S2Kk{p1N0Dxh*x0M!M^6T5<_YQ`Ndh~W0E=pybYdsld;^=-01YTg>juAvyKCLdBpg?;1U(){hyRX~vBN?v2`obKyUxqGmABTn^HEXSZd*S+S#diB zZjmtB7*l_ny)F%3MZm~CyWuu$I1=t+$W&S@Av|*bCiw4M{lodgC}6v~7bbQSQ`n{W zZeQp}x(_=4#d##F{hk9ZF7WCi$4z?=Xwyc@Ly} z1VMX&gWcrOco-$EQy0FD&1Qs$s5A*BbuGDrg-8eTKvOMQCRMhzRGUVOOKGdGG84xT z#F5>>M4@SKP2j9Ss1T;Q#3m<$!f1oyIE&Oi85NAt#_>9W?d1>yHbbdZq4|Zu5e|St z+mziKeWulddVOWV(d<7u+@p*cCN@YK6$WnElxurw)GfNCHLwpw%}K-pdUwG}OSqB@ zM-m?t3w4+*G=&RT@C%Iv`ljrP`Ejguru_sx*`kn0NvoYLCdRXfW_3QrdURR>^JpUj zZx!T0)Fc|c%vZZtg7hR0x$sws#GWh`D5 za0*lC*#l*cDm|Kyl>dDFlUq|Pe7GS#t}(CENVmO7{ID0dybxCTq!0@(IXMwq~A%D)*$5QDs zl*;a>HJq}#?fys2hyUC(Lzk$kHCwigcMNSE9?I;vb9}60+eoH;&fw=_f+q-9X&YokA-MV9J9LEu2&PMf31AThWHL5y~em`fdXbSoo{q{9Y zz2`Y+byH?PK)(`g!sRT3?~l+HPZ__BJ}O(Lj|^PU?MpjxH~z}fW`2V{u(YFK+~TYm zi{<*YrMkaOa5fJug|-&$%V=Y0`_PV}eG}~z+AC=1(0+>c2^s^IgvIqc%f4MVG`Mqc zXxsQ*a>wrB(XVdb@kfkRJDj05WT*7g%bzTH38QHkox?YQ?^1osisxs{ig0!ZMw>+_ z(pF=2K#hOj!5a0x6VdUNH#Phlh7v;&<&6Gn*N1@w^Ykwn)e|e5b>(&Ebm8jx2>pI6 z1e%9$0D#fKkuAe=cx1EOHnMqmkKBrR5A*Y4dh6<$g$FUL!0=l!ePZ?9;!I3etyw!Q zRS=SVBfhh+dWs0r>(<^;Ike->kx+%lur`Xdb!c;Gt#0Sw`1tVX2ozjb$k{mNPlL!F ze5I?;tlz6Y*|0v5Cwv49aJ^&IG+0k${_k(i!y~)((;FLy^H#74$B@>ij?1TvZ$+PM zE5H5~^t+~vx1wJ#WqbgAGJONDXIiG`TMx8x*;e#1;M|krH9XoPtt<3GajFW&v7*|A)RoEkVAtTH?nI&>xQ>(+;R`=j#hD|xKla(Gq+rws&82S*%ghA z^^LuK%laGt>h?QgFYeGE@Fx8m;gvYdDPkV;xF^)vZ%B8I{<5sA`uQ>0F6z_=fB)Fa z!n0IeCMn$nMoG6we_vMfV*QSs*XVkdXElhr4pD(Yk&I`1R=sF+i@gxW;xR%$ao3vZ zS^6!jE>!^`Zl;boF%rm>=TVXR=-TE^M|FXRR^DwZi}8PS4L=Unxw0& zIzO-2-~DjnS35jOirGdn+bzP1_|?qVJmNA=vC+fw@Op*_{<>Z)lm{I88 z+P=L9Hfh!+Azz2X$17jlDc#s7RyOLrig%UzZ1^Vo(t|X1exzpJLr0{VulDSMJ(=UY z#)bT3+Z@~Gv~5A#)~oDhUZHo`Gd^1kmEaPWerPNFPi#eCE1WE}60&(iVJE-{?Tlt( z7b4h&pj~j7I#Z`pp}FGKqx$wxGIs7L^!38(qoex4kP^F}(EYJW{eEa#$(!hDWe(J^ z6+JsT7VQ`34q(81xYcddyP|XWbp4%ZrCU{yR~^XHZ%4<)yL&OT(Y{3M==);5{3`v! z*amygF|ts~Y2h_`t+Nhqf8^X)S}oEd?TIE7p?$+q~_)h-c`djg;H38adtpf@cOr=uP<7U)r4@ox(e79zN8|$(r=E`)?&s0gqEsb->G~F56 zPqaJvwwpow&O|e>)%y}%sXD}ybn86UU;#mJ0NtevK_t@cuu@n92n&;`E8JrJhr~5} znqF8`lPkI+GJ(*^$drT_1a9C~6SbI)Z4g576G@U=t-!4m-ho>&Ee}v~EoK*73$((u zWhw$1Un0~A176f5^ad%TyG3}JYM<67a$1QSR0gL4jcd5~2fWL_efLyAdAJhAa z%NH1P*OM1iea5Z!coUPxdTtk!>VpTQdIM6F%&0T>OZ5V9K1aV(d_a7(S8sD$d8t-K6=>hV)A(lG2Z zCEfPP`w?#XKTF#9EL~RGGV}a{pvX=P17Echc(9uK2->vjHKnuoetlo*9Qz>Ru~j#h zmFw3^8w2v{Q~`NepO#MC8k;r~cAGt|Aa4CM68F@!mTU6jtb#b29*CnLQLs%%;G(6x z13R`9Oxlgxer=U~qDR~G6VMQx?@giojeAw?~S>61Xp2eoXI||;d zgJ}R^rbIT$)WKuMrU5T9_0ln2JiU?k=kJ79()zT zi%3SYkI%c#AxeIi({3h|_KE0;AvFfRPQUM7ij3q$tig&Rp z+}bkg(q8>s`AFjd({I;{HY6G|%JD+#qsOG;W|kjzFg`sBo(t=r%$S)o2mluYKgj@> z<`=_3&vCcO?PSii0Y2S)T38Bvb{J#iCkvX45Ft<_7%kUTV2#P?H~v4<+W>TIbaFme zR$b=Xl<1Q=avGN8wqlN1y0D}URm?6ivg=3?Wj)JH=rMyG-Xp+@2Vm$zSu2I46MU){@C>T#uG?JB0lbKvj?-9K)QP4x9 zR1gs}Dr-QZ9hHZ8wSKqq%N2-NfaL{|Kn%jpnP<7DudUjM-)~oCnuCEC ztb~Oj2jt{Hntnik~EYc>cI19iNRAiM~DI&ew~) zuIer_O43%M7plM|eZGiG$BTLqccI?rEpcWOMVWS&{tvIp=}-&+1+Lw8&HbtUCA#1L zezDR0RWd5sW2P=kwmQEwiNXT^l!Sg^+i>qFjQT>wY`vRb`AnJzCP zx(8dKZ@2A*C?#;$)xSv+aoDw97-}d16&hO4WAlSVB1i%Pk7^%KPtcE#Y_!PLD<1v*{(!C1h z0N|KXPw_te%h?UrQni?IYiNr5d{06+fjK-76V0d2MaDiJ+1roMzzRQV)^lfTHK(up z!URy67xoe)1@v-)WEzMZ=lT4^)NxL#qwrQ|5eaa+J~hXKpMN!{2{BKKi{qfC7cdvV z!QNiw$X4^`ZVLMbm>v43Gp2uv@`$xiwYgOkM3bC#_atYL*TDCa1*$ zky67%8fM!$F){I_KH{|=dXK^_)q{k^6KyRJlE0HQwzA+}4|6aegj$^qi^=H`*y zVk$G}Yf>?26#(W`P1j&%i`r6|%)56#y z=!;rw6t&C2+(r+ztr>RZ0EifcyrQL--*~6xR=@+2J&^$2B%X)B|6&6PKt>7pKOS+6 zZuz&w^a5Pza} z!+}O*AW;OH%@ua*kS#HJ?f|S<@3B!e7eC1mMSC@}E>dr}$`?pi63JI?!zg4NG)!$t z&n~{7Vds7*fzR8CiBqWXs{C-l1E5|k#dcgoDaG*O>Qd5a;3Ld^@r*>tN&#wMlFIR+>t>WNWQdaKQsmYMm{PAJPBYS_5YBSs`L9_!|F&va;&L5%U3&NwR(r6$g$j9}MNA3hE&+15sIp z(aOD{DhYza6SyB5qK;Tfn?X?aB;YAzG5P|-`*zWW8%UDAi1Q!eId>UZuwJBmMz>Di z5@~hDuqL76XXXh&OQ2>0fL*Dg$P_ff(4|8of+tpBioL& zh5YmTuiEYH63zWa~m4ANZ+|wr>IOcU&%z0GunEt`lwVy|o zjQDW}l9GUE8tT4n;1FePa|b93%6$B7r?Ui+hAHiy1jnKbdi;CR@8>P~2ZNY7^cD0vT}WHJWO!aoej zf@EW7P%}oK)k#O?##MN`=cv&3F}3sl2O`_xRYWulLf;L_?E_ilgi}D&i6;X@NiW(5 zS5qNM#eZbGy1esJcpDzgJ%hY0HzMm``@o17F}R38F&{oRdXXAoqi|jad|gh_0jz*i zC7A&qAgM|mG!U}>vb2GO%!B_xplZIg`-;{JSF}Ead2zBvc5w%&6bcfIXF0uew8?KF zv>|wm`6&EYBV+0xa@QO7g3FPod`u=HHEIe3S`dMGyn$B`B*@4Lyr*ixT`l^_wqgFt z;|mwn!bUJS_;owj(W0AxH}ea;YeHBrU${HGSMU(32mOnMyBuQ43!GAXSg&tS<-#hI z9UDtpc>+QDrih6E4FJ+8^z@M2IQ&j$J=j=Kl%SL$P6$+e^(kY8MnZ=m2$0TvG#H7` z7gR`}5XhN>X7EoesDym0&$L&}q|%0@vZUe7NRo}wDv0#QJC@{bB6wCC{RmSwutR3X z4-Vx_XIWl(L^+Lhfo&?@^Wo#kUQDAp6{?W^)1VYu1N9e;vfP_#R@}!K1$JIIp8#a2 z;;GQ9I}VzAYM#i=PF90n*$!aadl6J>Z6oNT}uA>hY3Z9yxA8%oSZyo{mBB|eva+|as@&ko`W93_JP z{bG@`(jx6yO>6+0^{gCDy!{w468)o;)0sqwfp3#;KP-=@HUP)TKX)g=?l@@kiZcMZ zUt*=bm?x59f__O8V}7Wx6z-PJ8b1bAqP zLp%C^2Lu=nZrs~Q15a`I9j|C?GSW|JBV?FrqaTF|7)?ACoDxRIlciu2uha|}-Dc3} z;VmlPaiD+*Zgkt2n!v-Cw&kdN0DQ2=$N<=dAOneYJ~vMUPSVB>6v4q7^}5stZHS*N z`ZP8Q)A6hrb#GI~Y88qD;xjP}6L6vp^;bY|94+AVjng3ws3MchQ4)mV!x$Kb78G;F z!)DUC_xVpC|A<<>&5cG&dYq6_s4SBk5o!h z8YQfF0AXK3P$d;qGj9gWm2aKR%QF!e?1Ey#sE^t39_j^!68AO`x>p3dKyX6s$2p|* z;)PIkJe<(rM33+VLt>PQ_0qXslD@>e1PsIqqhW3&NKVXR(E);febG*_f1g&}&GAcn z%{P(rTfuGp%>mus9Vprz>EQ7JYGXrWmI-&X4BcgOL6w@r`2Lx}>*xWb^13#A9~)}fIC$?pEt>|nZXMbD#pbc`56;!j(QjYtwPqP-9-}|bw&M2` zuGzR6OF6p>_kFm$sck)P$-n{#YTAnbxg5?m4Q<(+9UC0VjyK&kxOJqdox~c68@7yR zAqjKe#M;~Rx0ZD2Z>B%g=a;C;!s-*8v7#xfSLkcgwVkI0XVp{QzK`b_xR#Z0wjFoU zaq*P)Kj9f4VodK;DI8|LqUQ3?>3>%((fcgU=AxromoC-09OrBoE{*Fjt`~9r7}r@` z=W$)Y^#@!rh_Axcj7#CV8P{4|gW2rxrma~oyTuz^x6ZqJB)h@evVC}L{l+bKL&((r zO?Pd~j%?j{&(uMZM(OiQkEAg6qJ&9sKL7*JR)+?+4i1fE@0q&bmu$}Pb;B;|Bi9`* znHJ(~I$HI(CvbmG-@5E?6OW*^39WSkZqk2qT_(4Ec&KI5mUV&UBjG^IU>N7{7*=SX zK|6{z{Y}}{_+57zUrtpUT2p*G|5H9?;2-V30nu^Z#b!v#?;sVAxa;{nx6Yaq;mkv` z7xz-!yU;LW@w_3TpY55eU%qb5w4p6y!v;9(H)UHk-?a%l&_C`uO??Zl=$qW#FQNfv zZ99-#Xg`5=3dUHgcl8xFZW`V+v|%i;$A(ydYC=&ziO;vme{Hz*qrD5GPM~I~qkr04 z9$SW{i!L-j?wyxdhh{mN_u`(&%a|b!IQrSX8%nF=fsa~opN~Nwh4tmWd)H*q97D4Y z7rC&|UWMnYr?l_DGkK-ZzaGzI&q8}0o(T|z_AS&V9oi=CGoBr58OaXkw~LcEgE9(Y znpkMB0$Q4AV%-%J;ro&7I9ci(CQ{_Sg=?DG<*%2|SiH7~vn<{mhI45zh4yi@y-&4C zT%rF2`a5V9H7SmCYzgGG3=Rz$Z!=a_%-Ow|_;p;E!=46Wh?IVg27C(C=;9SSi0X1g zbs(TELxbSEPm|r9cWv5g9G(IsGnn`gF4Bnproi}5g{g_"]},"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Creates a new flipper smart contract initialized with the given value."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Creates a new flipper smart contract initialized to `false`."],"label":"new_default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x61ef7e3e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":6},"balance":{"displayName":["Balance"],"type":9},"blockNumber":{"displayName":["BlockNumber"],"type":12},"chainExtension":{"displayName":["ChainExtension"],"type":13},"hash":{"displayName":["Hash"],"type":10},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":11}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":4},"messages":[{"args":[],"default":false,"docs":[" Flips the current value of the Flipper's boolean."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":2},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Returns the current value of the Flipper's boolean."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":5},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Flipper"}},"root_key":"0x00000000","ty":1}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"}]}},"path":["flipper","flipper","Flipper"]}},{"id":2,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":4}],"path":["Result"]}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":4}],"path":["Result"]}},{"id":6,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":7,"type":{"def":{"array":{"len":32,"type":8}}}},{"id":8,"type":{"def":{"primitive":"u8"}}},{"id":9,"type":{"def":{"primitive":"u128"}}},{"id":10,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":11,"type":{"def":{"primitive":"u64"}}},{"id":12,"type":{"def":{"primitive":"u32"}}},{"id":13,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":5} +{"source":{"hash":"0xaf1c6d2ea289d7d4f8753db2d658782f4d066544f3ee34b3d54272075ad0de99","language":"ink! 5.0.0-rc.1","compiler":"rustc 1.75.0","wasm":"0x0061736d0100000001400b60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060047f7f7f7f017f60017f0060017f017f60000060047f7f7f7f0060057f7f7f7f7f006000017f028a0107057365616c310b6765745f73746f726167650004057365616c3005696e7075740002057365616c320b7365745f73746f726167650004057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c301176616c75655f7472616e73666572726564000203656e76066d656d6f7279020102100334330000000002030a060301020600070205030202070507030802020601000500010101010502010109040804030902010103010204050170010e0e0616037f01418080040b7f00419093050b7f00418693050b0711020463616c6c0019066465706c6f79001b0913010041010b0d0f34263728352327232425212a0afc3b332b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6f01017f0240200020014d04402000210303402002450d02200320012d00003a0000200141016a2101200341016a2103200241016b21020c000b000b200141016b2101200041016b210303402002450d01200220036a200120026a2d00003a0000200241016b21020c000b000b20000b2501017f037f2002200346047f200005200020036a20013a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b2601017f230041106b22022400200220003a000f20012002410f6a4101100b200241106a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741f0900410380240200320044f0440200320054b0d01200420066a200320046b20012002419091041032200741a091041038200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41033602002000410236020c200041b48b04360208200041033602242000200041206a3602102000200041046a36022820002000360220200041086a418091041010000b2003200541809104100e000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10052000290308210120002903002102200041206a2400410541042001200284501b0b1b002000418180014f044020004180800141f08104100e000b20000b6b01017f230041306b220324002003200136020420032000360200200341146a42023702002003412c6a41033602002003410236020c200341808b04360208200341033602242003200341206a3602102003200341046a36022820032003360220200341086a20021010000b840101017f230041306b22022400200241146a42013702002002410136020c200241a48e0436020820024102360224200220002d0000410274220041cc92046a28020036022c2002200041e092046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10222100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241908804360210200241a48f0436020c2002410c6a1029000b4701027f230041106b22012400200141003a000f20002001410f6a41011012220045044020012d000f21020b200141106a240041024101410220024101461b410020021b20001b0b3d01027f2000280204220320024922044504402001200220002802002201200241bc920410322000200320026b3602042000200120026a3602000b20040b3c01027f230041106b22002400200042808001370208200041869304360204200041046a2201410010182001410010184100200028020c100d1017000b4401027f230041106b22022400200242808001370208200241869304360204200241046a22032001047f20034101101841010541000b10182000200228020c100d1017000bb20102057f017e230041306b220124002001410036021c20014280800137022820014186930436022420014100360220200141246a2202200141206a4104100b20012001290224370214200141086a200141146a2203200128022c1016200128020c210420012802082105200129021421062001410036022c2001200637022420002002100a2001200129022437021420012003200128022c1016200520042001280200200128020410021a200141306a24000b4501017f2002200128020422034b044041a48f04412341c091041031000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d0020004186930420011004000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41033602002000410236020c200041e08804360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a41b091041010000b880501077f230041306b22002400024002400240024002400240100c41ff0171410546044020004180800136021441869304200041146a2202100120002802142201418180014f0d0120002001360218200041869304360214200041003602082002200041086a410410120d0520002d000b210120002d000a210220002d00092103024020002d00082204412f470440200441e300470d07410121042003413a47200241a5014772200141d1004772450d010c070b41002104200341860147200241db004772200141d90147720d060b200041003602102000428080013702182000418693043602142000410036022c200041146a22032000412c6a4104100b200020002902143702082000200041086a200028021c10162000280204210520002802002106200028020821012000200028020c2202360214200620052001200310002105200220002802142203490d0202400240024020050e0400060601060b2000200336021820002001360214200041146a1011220141ff017141024704402000280218450d020b200041206a420037020020004101360218200041bc83043602140c080b200041206a4200370200200041013602182000418c83043602140c070b20040d04230041106b22002400200042808001370208200041869304360204200041046a22024100101820012002100a4100200028020c100d1017000b200041043a0014200041146a101a000b20014180800141f48004100e000b2003200241f48004100e000b200041206a4200370200200041013602182000419c8204360214200041a48f0436021c200041146a41a482041010000b200141ff0171451015410041001014000b410141011014000b200041a48f0436021c200041146a41e482041010000b4801017f230041206b220124002001410c6a420137020020014101360204200141a48e043602002001410136021c200120003602182001200141186a360208200141e482041010000b820201057f230041106b2200240002400240100c220141ff0171410546044020004180800136020441869304200041046a2202100120002802042201418180014f0d01200020013602082000418693043602042000410036020c024020022000410c6a410410120d0020002d000f210120002d000e210320002d000d210420002d000c220041e1004704402000419b0147200441ae0147722003419d0147200141de004772720d0120021011220041ff01714102460d01200010151013000b200441ef0147200341fe0047720d002001413e460d030b410141011014000b200020013a0004200041046a101a000b20014180800141f48004100e000b410010151013000b6001027f230041106b2203240020022000280204200028020822046b4b0440200341086a200020042002101d2003280208200328020c101e200028020821040b200028020020046a2001200210061a2000200220046a360208200341106a24000ba80301057f230041206b22042400027f4100200220036a22032002490d001a4108200128020422024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003101f20022802082105200228020c0c020b200528020021080240200310202205450440410021050c010b20052008200710061a0b20030c010b20022003101f2002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000bd10100024020004181808080784704402000450d01230041306b220024002000200136020c2000411c6a420137020020004102360214200041a486043602102000410336022c2000200041286a36021820002000410c6a360228230041206b22012400200141003b011c200141b486043602182001200041106a360214200141908804360210200141a48f0436020c2001410c6a1029000b0f0b230041206b22002400200041146a42003702002000410136020c200041f88404360208200041a48f04360210200041086a418085041010000b2001017f41f492042d00001a20011020210220002001360204200020023602000bb70101027f027f41f892042d0000044041fc92042802000c010b3f00210141fc92044190930536020041f8920441013a0000418093042001411074360200419093050b21010240027f4100200020016a22022001490d001a418093042802002002490440200041ffff036a220241107640002201417f460d022001411074220120024180807c716a22022001490d024180930420023602004100200020016a22022001490d011a0b41fc9204200236020020010b0f0b41000b0c00200041dc8304200110220bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10362003200329031037021c200341086a20062001103620032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0300010b0c00200020012002101c41000bb90201037f230041106b22022400024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101101d2004280208200428020c101e200441106a2400200028020821030b2000200341016a360208200028020020036a20013a00000c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b101c0b200241106a240041000bdb05020b7f027e230041406a220324004127210202402000350200220d4290ce00540440200d210e0c010b0340200341196a20026a220041046b200d4290ce0080220e42f0b1037e200d7ca7220441ffff037141e4006e2206410174418489046a2f00003b0000200041026b2006419c7f6c20046a41ffff0371410174418489046a2f00003b0000200241046b2102200d42ffc1d72f562100200e210d20000d000b0b200ea7220041e3004b0440200241026b2202200341196a6a200ea7220441ffff037141e4006e2200419c7f6c20046a41ffff0371410174418489046a2f00003b00000b02402000410a4f0440200241026b2202200341196a6a2000410174418489046a2f00003b00000c010b200241016b2202200341196a6a200041306a3a00000b200128021c22054101712207412720026b22066a2100410021042005410471044041a48f04210441a48f0441a48f04102b20006a21000b412b418080c40020071b2107200341196a20026a21080240200128020045044041012102200128021422002001280218220120072004102e0d01200020082006200128020c11000021020c010b2000200128020422094f044041012102200128021422002001280218220120072004102e0d01200020082006200128020c11000021020c010b200541087104402001280210210b2001413036021020012d0020210c41012102200141013a0020200128021422052001280218220a20072004102e0d01200341106a2001200920006b4101102f20032802102200418080c400460d0120032802142104200520082006200a28020c1100000d01200020042005200a10300d012001200c3a00202001200b360210410021020c010b41012102200341086a2001200920006b4101102f20032802082205418080c400460d00200328020c2109200128021422002001280218220120072004102e0d00200020082006200128020c1100000d002005200920002001103021020b200341406b240020020b1b00200128021441d483044105200141186a28020028020c1100000b0e0020002802001a03400c000b000baf0201017f230041406a220124002001200036020c2001411c6a420137020020014102360214200141f48f043602102001410436022c2001200141286a36021820012001410c6a3602282001410036023820014201370230200141306a200141106a102145044020012802302100200128023821010240418493042d0000450440418593042d00004101710d010b20002001100341094704404184930441013a00000b4185930441013a00000b000b230041406a220024002000413336020c200041c48604360208200041c4830436021420002001413f6a360210200041246a42023702002000413c6a41063602002000410236021c200041f48804360218200041023602342000200041306a3602202000200041106a3602382000200041086a360230200041186a41e487041010000b210020004283ddaa8bf8ede3ea20370308200042ec80a48aff99c486ab7f3703000ba10301067f230041106b220224000240200120006b220141104f04402000200041036a417c71220520006b2200102c2005200120006b2200417c716a2000410371102c6a21042000410276210303402003450d0220022005200341c0012003200341c0014f1b41b88c04102d200228020c21032002280208210520022002280200200228020422002000417c7141948e04102d024020022802042200450440410021010c010b2002280200220620004102746a21074100210103404100210003402001200020066a2802002201417f734107762001410676724181828408716a2101200041046a22004110470d000b200641106a22062007470d000b0b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a2104200228020c2201450d000b2002280208210020014102742103410021010340200120002802002201417f734107762001410676724181828408716a2101200041046a2100200341046b22030d000b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a21040c010b20002001102c21040b200241106a240020040b2c01017f200104400340200220002c000041bf7f4a6a2102200041016a2100200141016b22010d000b0b20020b3d002002200349044041a48f04412320041031000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000b9c0101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b20024101762104200241016a41017621020b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b4601017f230041206b220324002003410c6a420037020020034101360204200341a48f043602082003200136021c200320003602182003200341186a360200200320021010000b7b002001200346044020002002200110061a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41033602002000410336020c200041888d04360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a20041010000bf60101067f2000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722104200341f00149044020042006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200441067472722203418080c400460d011a0b200120012802082207200520026b6a36020820030b360204200020073602000bb90301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d002001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1033200228021c418080c400470d010c020b0b200241106a200241246a10332002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200141186a28020028020c11000021000c030b200128020422002003200320046a102b22054d0d01200241086a2001200020056b4100102f4101210020022802082205418080c400460d02200228020c21062001280214220720032004200141186a280200220128020c1100000d022005200620072001103021000c020b200128021420032004200141186a28020028020c11000021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000bea0201067f230041406a22022400200028020021054101210002402001280214220441a08804410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4103360200200241346a410336020020024103360214200241f8870436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a220736021820042006200241106a10220d00200528020822030440200441ac8804410220011100000d01200241386a200341106a290200370300200241306a200341086a29020037030020022003290200370328200420062007102221000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441ac8804410220011100000d00200420032802002003280204200111000021000b200241406b240020000b1300200045044041c78f04412b20011031000b0b0bfc120100418080040bf3122f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f70616c6c65742d636f6e7472616374732d756170692d6e6578742d362e302e312f7372632f686f73742e7273000000000100720000002d000000170000002f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72730000840001006a0000001a01000032000000656e636f756e746572656420756e6578706563746564206572726f72000101001c000000840001006a000000e3000000170000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f666c69707065722f6c69622e72733401010030000000060000000500000073746f7261676520656e7472792077617320656d707479007401010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279009401010027000000070000000000000001000000080000004572726f72000000090000000c000000040000000a0000000b0000000c0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f7700006502010011000000f40101007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564000000ff02010015000000140301000d000000900201006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273770301006d0000006402000020000000293a0000a407010000000000f503010001000000f5030100010000000700000000000000010000000d00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973202e040100200000004e040100120000003a200000a40701000000000070040100020000003030303130323033303430353036303730383039313031313132313331343135313631373138313932303231323232333234323532363237323832393330333133323333333433353336333733383339343034313432343334343435343634373438343935303531353235333534353535363537353835393630363136323633363436353636363736383639373037313732373337343735373637373738373938303831383238333834383538363837383838393930393139323933393439353936393739383939206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e6465782000006e050100100000004c05010022000000736c69636520696e64657820737461727473206174202062757420656e647320617420009005010016000000a60501000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300c405010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e677468202848060100150000005d0601002b000000f4030100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000a0060100720000004f00000032000000a407010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d657373616765617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00a407010000000000f2070100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300040801006b0000005c0000003b000000040801006b0000005c00000014000000040801006b0000005d0000000e000000040801006b0000005e00000034000000040801006b0000006800000009000000040801006b00000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e727300d00801006b000000770000000e000000190000001c0000001600000014000000190000002c0701004507010061070100770701008b0701","build_info":{"build_mode":"Debug","cargo_contract_version":"4.0.0-rc.2","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"flipper","version":"5.0.0-rc.1","authors":["Parity Technologies "]},"image":null,"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Creates a new flipper smart contract initialized with the given value."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Creates a new flipper smart contract initialized to `false`."],"label":"new_default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x61ef7e3e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":6},"balance":{"displayName":["Balance"],"type":9},"blockNumber":{"displayName":["BlockNumber"],"type":12},"chainExtension":{"displayName":["ChainExtension"],"type":13},"hash":{"displayName":["Hash"],"type":10},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":11}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":4},"messages":[{"args":[],"default":false,"docs":[" Flips the current value of the Flipper's boolean."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":2},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Returns the current value of the Flipper's boolean."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":5},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Flipper"}},"root_key":"0x00000000","ty":1}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"}]}},"path":["flipper","flipper","Flipper"]}},{"id":2,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":4}],"path":["Result"]}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":4}],"path":["Result"]}},{"id":6,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":7,"type":{"def":{"array":{"len":32,"type":8}}}},{"id":8,"type":{"def":{"primitive":"u8"}}},{"id":9,"type":{"def":{"primitive":"u128"}}},{"id":10,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":11,"type":{"def":{"primitive":"u64"}}},{"id":12,"type":{"def":{"primitive":"u32"}}},{"id":13,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":5} diff --git a/packages/api-contract/src/test/contracts/ink/v5/flipper.json b/packages/api-contract/src/test/contracts/ink/v5/flipper.json index 846bfd337d4d..9a3ce449de6d 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/flipper.json +++ b/packages/api-contract/src/test/contracts/ink/v5/flipper.json @@ -1,11 +1,11 @@ { "source": { - "hash": "0x536329645b973de35b88a083a0fb769b9a6778dd7daacf1f2069c966a26fcc25", - "language": "ink! 5.0.0-rc", + "hash": "0xaf1c6d2ea289d7d4f8753db2d658782f4d066544f3ee34b3d54272075ad0de99", + "language": "ink! 5.0.0-rc.1", "compiler": "rustc 1.75.0", "build_info": { "build_mode": "Debug", - "cargo_contract_version": "3.2.0", + "cargo_contract_version": "4.0.0-rc.2", "rust_toolchain": "stable-aarch64-apple-darwin", "wasm_opt_settings": { "keep_debug_symbols": false, @@ -15,11 +15,12 @@ }, "contract": { "name": "flipper", - "version": "5.0.0-rc", + "version": "5.0.0-rc.1", "authors": [ "Parity Technologies " ] }, + "image": null, "spec": { "constructors": [ { diff --git a/packages/api-contract/src/test/contracts/ink/v5/flipper.wasm b/packages/api-contract/src/test/contracts/ink/v5/flipper.wasm index e15b683b136efc880416e08a91d80af8a94c6a86..c359b6db59b8732092edc076026daf73f1e3bf77 100644 GIT binary patch delta 4549 zcmbVPYiwM_6`q+pcX#c(>s&kQ#Ic=t?%GcLT0d}Nn?wyBt8q%8q^(N&rvVmw1Ku@$ ztk(`v5!ZQO%%k9BK&TW1m8?>=RiOf@twedWk*HcqAF9faK13CMR0u=_p^DTL_dByr z;vgi{+PZgM=bky|o9~=6`}n~>etD^By$tck!&`XB@Swxk$^N!R>CR*`b$o+(ZiGPh-!Jb8az*o~>o_|1iEakenQoYF^?bD8nk?9IhOW@6@0wou59 zGT~$=<|21w@0ctc5nTAr_FjfR;gm-lE+Q-{Tt|qg8+BqrL^yL9$Db=WFOxCpl%WGT z>GCOFQ4!hTgj~d&F$Y^$IeDVmZD_hT*=3Zjm_O1Ob zI~un&HZ=!rszJ`HLTNg->$|O>Xt`wI49A8T&aQ2@T6oeT});n&fGt(hhO%dEPZ# zgw_%{sM$JibysT=Y+z6wNZL0ST((ci;RKA5%E_Bq-oQQcC{Md*m!v;nUgHgkrIXUX zN=5b4Xa~%Pd^dl=%tva?^?l`Lzrsw3PVSngM6Y}HD2?9~yT$wiW~0-| zeKYJdiRFjPxKmU4`YD-f5v)&iz$vERI%OVpZt|8EWuNe2_VUB#W2c>0nKrr4eeo15 zFh^uhYQbQgJdn8**UYa0mUwHXSc{1J34fz`UDma&iU|_KfdDaJ1TpSv=HVlz#6|H+ zw|S=(Zz5HFLZNBOr34z4)6&OjDc&lY`b82`F+i@9R%wgq@Hdz#w`FVjS`i|ET~aO} zMHfJ~2V{7MLtVPcpz^{f5$a8v5{A?E0hA%UU7em zl?f!kCaO!D!u&`r5D^#=D311XP0ahAQ-WFLQxb#@^#&4gD3-*v30A9PHc(P#xA!uy zHUIH`5qf{%3>Y$?JU@S@g=bHKUkZv6>T#^s=Z1KRm|~SD3pfTJD-I3Gw9GxFCDZ zpMWZ&gXJsPf#93Jr^Huea((WUOfy!C*jE9tCidWj6s%|7PdJVO_?!=|5Hk6NQxf1J z!C%7yP9rK_5Y^|=r4pd$DUWEsNRw390*-tUQUoe)lbJ;rQgle-T1&K*6@V|aKR3ug z+$E~>qa^6Gt+(& z?*;#{s(LK`OmJtFVxozep2~ZAH!BzvqZctrTB4K)<$zFN4z~=l)LN}}=4|CySWlIW zSOv9zafKI(yKx?a;1Z^`1wsrewnMN~Vrc0N_EmVB2r2-dLp0u$Lybik$-J`5^QnrV zvp;t3R*AcwNl6VV&s^}tB8Ig99N;tmE^9JK)FGQht`!> z-|RXNFjWyG6hm$GRK+vc@eHFt63_!+$&eh)ui27W?VqaLBbRjfeybo{qXD^it(ou= zJMhappn~MU5R@@w_LQsnbSkR1DQJk`5}@fm;A%MymVv8*q&Gc&yJA@PbUV0knyF}A z5WNUq5XN8)m9{G(1mZ}=RD>qum5kx;1JkUGOqIcp|LsFp z$6zBV^8?TPJXy(w`CYO;r2CamNvBM)Jkov_r6nI=lhu?YF-($=)|T>;E!H-gEBCw6 z=PJIFDKs8(1`r`jt#vl%U8y<-2urF#&la&S9+Z8m_u$J~?~#^WG7$ma9SGc)^kAOS ztXGFASg8MW-2AyZkk1Ov&A+Rg!*f*Vd;}z#4w%MQ6BzYu0z-=uGoUzSzHW@V>1yKV z`~ZhSI=ewYGy{|h^a(@xhK}nV+XD>}rQ`4&U53m`5;m21B%zxrtKh0yimFnU>qSKa z2TxO)q}+D;xEb2mA3X}=?9uc>0rUXLBRR||+a`V}0gZT8pc zpFSx4w7tmD^%{93a3O^baHZl5OQ2Cd@({!X;?B+y1T5e6N1wqSNTw zHirTx$B}7K5#bp2#RVhWL!Y7_17;jH1Ww5W+Wa$i#upBfP0Aq^pS9m=-1!|;rAuj3 zNw4D?)FE7r2jML$PzPiB<#1n)s?nvN2Plx%BjJ4xm?{T#!{&!Z1bC0>sm<~y%wx5? z5_9AfzS4Xy5ay%WMe}|<7_hYu<)4aMJsQxp#-3gck~$o~O#(k1z5(ayN6jD*Me&Lg2&sax>yBSoL(RKKKIs_*8~yjs5=#TzK5qF{)~+k)XB zlBu3X`-F*YKC-2kaIUw3yEnn(0;fbk;MJ7#d!K)5^GV+Pj=&}*zN0+ZBM6W#113NR z%5PFXy=ZQ17#8R6HBUCAMJj53-B2%nxM=>_a5aybW_1G%W>t61Ye=H)aHa=*@Geww zN=MTBu*&FQc-ItuX=aP*k;w`C(j6(zq-QfzW9f-Nc+VrOB7 z;g7Qd-Uwf|(WrFYj@!nHT_d+=NAi=i#hI?LiF~>zGdjAXr#CyA891~fGjMfRCfnaT z+I?%+NFh_q&UE27w0SJpQqE35Sq_S7%}YUJHRGJsV{~!$%<2|NQ=V$z+f7?)8!wu# zq`KTkAi2%Fky>sU$xLNN#)?PO%V9bT3)#ka@>r6#c zf8`1!sH$t;h{% zt1!J&T^60f95gWV!PZ}yeJ$I|CtS{aOkD4p#g?|j5{4Tv{4UzWs#!Oh*4BhL?V5qs z8>+q#DOqY!m}JTkF?)ye%bM*@{5*!5QX%X|MO6e zq_-SkGR9dR%D;{W7mX{%$u;AH=vS;6--Q15HRIdSFS|H4@1_rn-^Wb0Gqt`0pzgtw L!E+eT15y58n8`j* delta 5238 zcmai2eQ;I972n;v_kG>>k{d`MUnF~95)&XH;X`7P+AM8|$RIj0j&_O|l85Hy`{gBq zLw!L(5vYQT1r5$v$0{>^6tq*BmZ{odMx1dv)IX{-r5&wIi&LhhGjxWwTKYTpzDERq;`2p)yC}u9ku+YV z{`e-*?9MhDLQQMK(^ar*?sq9$Nvbk>Nmo{4WLvtPIh~y6usv!`T5Dwowk36)J^>i3 z%{!siFbq}Pwaw?DE#l~2lL|NIj-nHg?zee3SI2Z)f0ETR(ea;uZd704quO3AI{?Jw zBwsE{HBH1|t_v`mL@B`8G0E2_IJS!Za`gF_l%fL6Bfc(Pk+ha>al%%tg*hIyTTF3e zfB^Y!q_P5Pip>|L?KHsGrpc>;#j(gnUSx`*O_5U%!6T*di1DIj{Gizo^=`|f?>kB4 zokSM1E+yRXG+%)@P+GyrDwsYOGVzw{OOv3EPb(4B&D+sAYo33QmVz!&TrR5pLHgwf z0|s&erPH0Iu|cR}- z2}t}|Cb-CNQr05|$eS3_BqB+xAM}K6U_Aq`g}M82pCwB1X*rOAo2hU z&n9VlONG`{A%ra*S%*>^H~xZoBmRrlVn<)Zf}TFH%U`e-vjV*xlarHM31!v^?6^CR zImM1!!^~eRk^(uUtkO#$xE|&ROh35H{<7NK?nl5U7m!+%jxbI)r738r7DufKsxTdK zh$YzdoTzu0#vrbs;zEUJnNMDMe#X%fPrLJ(vocuh>I|jnRjeH_A`gQ^iskg#U6_o5 z(r31d3Ig*Sc1F1sqxC=s5axr%5-;KFfAEEmlABZpV>=^>{tOi5_M9~Y1sN1Zz4J1Q^jJRC^Oi4zbn?|gkxaW9{9 zE%|)D<+dZd;q$Z#VawN=qwb;73Z(8|32x;HEQm+u){Kk+*QI}QmkJ$;)N`L)KHzYH6Klet308ZCvn-3qtHUM zK%mQlq{m&T1aMvpBlJSh@)T1T5iWSZ!}$*Xbz&d~XsDNh-glxb2am%_x{DH&&>}=S zq`eZxJQhdN%OBuTa__W}|8Jn#glhydlcm);N?P z+BTVpm}|rQ!oh$2>>kSNmmUl9x}`h%DG(_CK1yNz-jjYuRRE}dey7wnazi;??t*?BNO_{j?coQsQP6Z7Xmq;-3h<}HmQiu zpa=}}zz*LoG9&C8oVP*FumQ;g-#s#oGy+rllbk3>i{<|JYU>g*A36I>aMA^F^cgV3 z{V3meWJcfFppS5Io9VU{oJ-1bR?~L`_aQDuo&>H}Q<33q$*!Ms{=evi34Z?$-9kLjpsF~c?0;?f@Ty_&B{feW8` zr{-po=hn8BzX5a>VrTG_WD0zSdi=UDURyttHcA+Em%B z)Yj~x%ow8|XQOzZGiPgS&3(0tzDmC)x)W-o-e~SnbtMtbSv90W>qWCqweywclxpPL z%>~uE?g%s*p+UdyY&JDGl2zGZ)!o~x?(56mtA;01nJoju_kE#%aC{)!H!`qorjk+K z^NXSREfLsym@|L*p6-$Ep1$n1>9d`N4o*VonvcEbN_s5L${=n4X1aT_GmU2Cd*^s! zn&OvsKOa|((l~ZQrhVP!0GUeDS9iNN0Z~ExKFV1rS3vM}Q9pq;VN^q3Y|CJ_b!dDL zcAHP?PMa$YTNY4Luoa2Fyo^BIwu2Q4@*&7=Xg4p_FN^&IN-l(hVe@JIg4l-;=Ro{( z*vxCVU*JResfL@&_D2F3e~5A+dRLOIFd&`IW?FlO$AD-CcMH^@6+}^(E8f zZ=+5?7W%iKP7oC2Uew8n1$hI>v|J^Y>&vDxfuBxB13w+eclTXKeXVdtUv{juyQjwo zhOv$qXZJ(rNj!w`d$68xc^?9x0IX)$H4jj*rveDH;`ye-{|%LD@@fD8 From 0e039e795131214aeb9cd0ebcb50ab70e72e608f Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Fri, 1 Mar 2024 13:44:02 +0100 Subject: [PATCH 24/25] implements decoding of anonymous events if possible --- packages/api-contract/src/Abi/Abi.spec.ts | 39 +- packages/api-contract/src/Abi/index.ts | 66 +- ...5_erc20AnonymousTransferMetadata.test.json | 370 ++++++ .../ink/v5/erc20_anonymous_transfer.json | 1025 +++++++++++++++++ .../src/test/contracts/ink/v5/index.ts | 1 + packages/api-contract/src/types.ts | 12 +- .../interfaces/contractsAbi/definitions.ts | 2 +- .../src/interfaces/contractsAbi/types.ts | 2 +- 8 files changed, 1496 insertions(+), 21 deletions(-) create mode 100644 packages/api-contract/src/test/compare/ink_v5_erc20AnonymousTransferMetadata.test.json create mode 100644 packages/api-contract/src/test/contracts/ink/v5/erc20_anonymous_transfer.json diff --git a/packages/api-contract/src/Abi/Abi.spec.ts b/packages/api-contract/src/Abi/Abi.spec.ts index 6bc91e1140c9..d099cbad5345 100644 --- a/packages/api-contract/src/Abi/Abi.spec.ts +++ b/packages/api-contract/src/Abi/Abi.spec.ts @@ -134,7 +134,7 @@ describe('Abi', (): void => { registry.setMetadata(metadata); }); - it('decoding <=ink!v4 events', (): void => { + it('decoding <=ink!v4 event', (): void => { const abiJson = abis['ink_v4_erc20Metadata']; expect(abiJson).toBeDefined(); @@ -166,7 +166,7 @@ describe('Abi', (): void => { expect(decodedEventHuman).toEqual(expectedEvent); }); - it('decoding >=ink!v5 events', (): void => { + it('decoding >=ink!v5 event', (): void => { const abiJson = abis['ink_v5_erc20Metadata']; expect(abiJson).toBeDefined(); @@ -197,5 +197,40 @@ describe('Abi', (): void => { expect(decodedEventHuman).toEqual(expectedEvent); }); + + it('decoding >=ink!v5 anonymous event', (): void => { + const abiJson = abis['ink_v5_erc20AnonymousTransferMetadata']; // TODO needs metadata with anonymous event + + expect(abiJson).toBeDefined(); + const abi = new Abi(abiJson); + + expect(abi.events[0].identifier).toEqual('erc20::erc20::Transfer'); + expect(abi.events[0].signatureTopic).toEqual(null); + + const eventRecordWithAnonymousEventHex = '0x00010000000803538e726248a9c155911e7d99f4f474c3408630a2f6275dd501d4471c7067ad2c490101d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb1060000000000000008d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48'; + const record = registry.createType('EventRecord', eventRecordWithAnonymousEventHex); + + const decodedEvent = abi.decodeEvent(record); + // TODO what should even happen? + + expect(decodedEvent.event.args.length).toEqual(3); + expect(decodedEvent.args.length).toEqual(3); + expect(decodedEvent.event.identifier).toEqual('erc20::erc20::Transfer'); + + const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { + return { + ...prev, + [cur.name]: decodedEvent.args[index].toHuman() + }; + }, {}); + + const expectedEvent = { + from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + value: '123.4567 MUnit' + }; + + expect(decodedEventHuman).toEqual(expectedEvent); + }); }); }); diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index b035d0f9e143..ca81293b42f1 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes, Vec } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataV4, ContractMetadataV5, ContractProjectInfo, ContractTypeSpec, EventRecord } from '@polkadot/types/interfaces'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEventParamSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataV4, ContractMetadataV5, ContractProjectInfo, ContractTypeSpec, EventRecord } from '@polkadot/types/interfaces'; import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; -import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; +import type { AbiConstructor, AbiEvent, AbiEventParam, AbiMessage, AbiMessageParam, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { Option, TypeRegistry } from '@polkadot/types'; import { TypeDefInfo } from '@polkadot/types-create'; @@ -181,15 +181,43 @@ export class Abi { } #decodeEventV5 = (record: EventRecord): DecodedEvent => { - const data = record.event.data[1] as Bytes; + // Find event by first topic, which potentially is the signature_topic const signatureTopic = record.topics[0]; - const event = this.events.find((e) => e.signatureTopic !== undefined && e.signatureTopic === signatureTopic.toHex()); + const data = record.event.data[1] as Bytes; - if (!event) { - throw new Error(`Unable to find event with signature_topic ${signatureTopic.toHex()}`); + if (signatureTopic) { + const event = this.events.find((e) => e.signatureTopic !== undefined && e.signatureTopic !== null && e.signatureTopic === signatureTopic.toHex()); + + // Early return if event found by signature topic + if (event) { + return event.fromU8a(data); + } } - return event.fromU8a(data.subarray(0)); + // If no event returned yet, it might be anonymous + const amountOfTopics = record.topics.length; + const potentialEvents = this.events.filter((e) => { + // event can't have a signature topic + if (e.signatureTopic !== null && e.signatureTopic !== undefined) { + return false; + } + + // event should have same amount of indexed fields as emitted topics + const amountIndexed = e.args.filter((a) => a.indexed).length; + + if (amountIndexed !== amountOfTopics) { + return false; + } + + // If all conditions met, it's a potential event + return true; + }); + + if (potentialEvents.length === 1) { + return potentialEvents[0].fromU8a(data); + } + + throw new Error('Unable to determine event'); }; #decodeEventV4 = (record: EventRecord): DecodedEvent => { @@ -226,7 +254,7 @@ export class Abi { return findMessage(this.messages, messageOrId); } - #createArgs = (args: ContractMessageParamSpecLatest[], spec: unknown): AbiParam[] => { + #createArgs = (args: ContractMessageParamSpecLatest[] | ContractEventParamSpecLatest[], spec: unknown): AbiParam[] => { return args.map(({ label, type }, index): AbiParam => { try { if (!isObject(type)) { @@ -264,6 +292,16 @@ export class Abi { }); }; + #createMessageParams = (args: ContractMessageParamSpecLatest[], spec: unknown): AbiMessageParam[] => { + return this.#createArgs(args, spec); + }; + + #createEventParams = (args: ContractEventParamSpecLatest[], spec: unknown): AbiEventParam[] => { + const params = this.#createArgs(args, spec); + + return params.map((p, index): AbiEventParam => ({ ...p, indexed: args[index].indexed.toPrimitive() })); + }; + #createEvent = (index: number): AbiEvent => { // TODO TypeScript would narrow this type to the correct version, // but version is `Text` so I need to call `toString()` here, @@ -277,7 +315,7 @@ export class Abi { }; #createEventV5 = (spec: EventOf, index: number): AbiEvent => { - const args = this.#createArgs(spec.args, spec); + const args = this.#createEventParams(spec.args, spec); const event = { args, docs: spec.docs.map((d) => d.toString()), @@ -287,14 +325,14 @@ export class Abi { }), identifier: [spec.module_path, spec.label].join('::'), index, - signatureTopic: spec.signature_topic.toHex() + signatureTopic: spec.signature_topic.isSome ? spec.signature_topic.unwrap().toHex() : null }; return event; }; #createEventV4 = (spec: EventOf, index: number): AbiEvent => { - const args = this.#createArgs(spec.args, spec); + const args = this.#createEventParams(spec.args, spec); const event = { args, docs: spec.docs.map((d) => d.toString()), @@ -310,7 +348,7 @@ export class Abi { }; #createMessage = (spec: ContractMessageSpecLatest | ContractConstructorSpecLatest, index: number, add: Partial = {}): AbiMessage => { - const args = this.#createArgs(spec.args, spec); + const args = this.#createMessageParams(spec.args, spec); const identifier = spec.label.toString(); const message = { ...add, @@ -327,7 +365,7 @@ export class Abi { path: identifier.split('::').map((s) => stringCamelCase(s)), selector: spec.selector, toU8a: (params: unknown[]) => - this.#encodeArgs(spec, args, params) + this.#encodeMessageArgs(spec, args, params) }; return message; @@ -359,7 +397,7 @@ export class Abi { return message.fromU8a(trimmed.subarray(4)); }; - #encodeArgs = ({ label, selector }: ContractMessageSpecLatest | ContractConstructorSpecLatest, args: AbiParam[], data: unknown[]): Uint8Array => { + #encodeMessageArgs = ({ label, selector }: ContractMessageSpecLatest | ContractConstructorSpecLatest, args: AbiMessageParam[], data: unknown[]): Uint8Array => { if (data.length !== args.length) { throw new Error(`Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`); } diff --git a/packages/api-contract/src/test/compare/ink_v5_erc20AnonymousTransferMetadata.test.json b/packages/api-contract/src/test/compare/ink_v5_erc20AnonymousTransferMetadata.test.json new file mode 100644 index 000000000000..c8d5fe3675ec --- /dev/null +++ b/packages/api-contract/src/test/compare/ink_v5_erc20AnonymousTransferMetadata.test.json @@ -0,0 +1,370 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 5, + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 6, + "lookupName": "InkStorageTraitsImplsAutoKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::AutoKey" + }, + { + "info": "Null", + "lookupIndex": 7, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "lookupName": "InkStorageTraitsImplsResolverKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 12, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "Erc20", + "type": "{\"totalSupply\":\"u128\",\"balances\":\"Null\",\"allowances\":\"InkStorageLazyMapping\"}", + "docs": [], + "namespace": "erc20::erc20::Erc20", + "sub": [ + { + "docs": [], + "name": "totalSupply", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "namespace": "", + "typeName": "" + }, + { + "docs": [], + "name": "balances", + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + }, + { + "docs": [], + "name": "allowances", + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 17, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 20, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 21, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 23, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 24, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/v5/erc20_anonymous_transfer.json b/packages/api-contract/src/test/contracts/ink/v5/erc20_anonymous_transfer.json new file mode 100644 index 000000000000..9536911d39d5 --- /dev/null +++ b/packages/api-contract/src/test/contracts/ink/v5/erc20_anonymous_transfer.json @@ -0,0 +1,1025 @@ +{ + "source": { + "hash": "0x3f4668bee7d86719c3219962213b5d5bcb70a6e8611f166e1dae06019dd481d2", + "language": "ink! 5.0.0-rc.1", + "compiler": "rustc 1.75.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "4.0.0-rc.2", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "erc20", + "version": "5.0.0-rc.1", + "authors": [ + "Parity Technologies " + ] + }, + "image": null, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "total_supply", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + "Creates a new ERC-20 contract with the specified initial supply." + ], + "label": "new", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 14 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 2 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 0 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 23 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 24 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 21 + }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 22 + } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": [ + "Option" + ], + "type": 20 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": [ + "Option" + ], + "type": 20 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when a token transfer occurs." + ], + "label": "Transfer", + "module_path": "erc20::erc20", + "signature_topic": null + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval", + "module_path": "erc20::erc20", + "signature_topic": "0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d" + } + ], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 15 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [ + " Returns the total token supply." + ], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0xdb6375a8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0x0f755a56" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 16 + }, + "selector": "0x6a00165e" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x84a15da1" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x681266a0" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "to", + "type": { + "displayName": [ + "AccountId" + ], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": [ + "Balance" + ], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xe7dc2326", + "ty": 0 + } + }, + "root_key": "0xe7dc2326", + "ty": 1 + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xb721a0ec", + "ty": 0 + } + }, + "root_key": "0xb721a0ec", + "ty": 9 + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000", + "ty": 13 + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 2 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 5 + } + ], + "path": [ + "ink_storage", + "lazy", + "mapping", + "Mapping" + ] + } + }, + { + "id": 2, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 3, + "type": { + "def": { + "array": { + "len": 32, + "type": 4 + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 7 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ResolverKey" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": {} + }, + "path": [ + "ink_storage_traits", + "impls", + "AutoKey" + ] + } + }, + { + "id": 7, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ManualKey" + ] + } + }, + { + "id": 8, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 9, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 10 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 11 + } + ], + "path": [ + "ink_storage", + "lazy", + "mapping", + "Mapping" + ] + } + }, + { + "id": 10, + "type": { + "def": { + "tuple": [ + 2, + 2 + ] + } + } + }, + { + "id": 11, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 12 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ResolverKey" + ] + } + }, + { + "id": 12, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": [ + "ink_storage_traits", + "impls", + "ManualKey" + ] + } + }, + { + "id": 13, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "total_supply", + "type": 0, + "typeName": ",>>::Type" + }, + { + "name": "balances", + "type": 1, + "typeName": " as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type" + }, + { + "name": "allowances", + "type": 9, + "typeName": " as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type" + } + ] + } + }, + "path": [ + "erc20", + "erc20", + "Erc20" + ] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 18 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 18 + }, + { + "name": "E", + "type": 15 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 19 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 19 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": [ + "erc20", + "erc20", + "Error" + ] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 2 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 21, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 22, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 23, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 24, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } + } + ], + "version": 5 +} diff --git a/packages/api-contract/src/test/contracts/ink/v5/index.ts b/packages/api-contract/src/test/contracts/ink/v5/index.ts index b9ec4dbdf248..9a45c277ad21 100644 --- a/packages/api-contract/src/test/contracts/ink/v5/index.ts +++ b/packages/api-contract/src/test/contracts/ink/v5/index.ts @@ -3,5 +3,6 @@ export { default as erc20Contract } from './erc20.contract.json' assert { type: 'json' }; export { default as erc20Metadata } from './erc20.json' assert { type: 'json' }; +export { default as erc20AnonymousTransferMetadata } from './erc20_anonymous_transfer.json' assert { type: 'json' }; export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; diff --git a/packages/api-contract/src/types.ts b/packages/api-contract/src/types.ts index f1d0007f2344..dd4bc83647bd 100644 --- a/packages/api-contract/src/types.ts +++ b/packages/api-contract/src/types.ts @@ -23,17 +23,23 @@ export interface AbiParam { type: TypeDef; } +export type AbiMessageParam = AbiParam + +export interface AbiEventParam extends AbiParam{ + indexed: boolean; +} + export interface AbiEvent { - args: AbiParam[]; + args: AbiEventParam[]; docs: string[]; fromU8a: (data: Uint8Array) => DecodedEvent; identifier: string; index: number; - signatureTopic?: HexString; + signatureTopic?: HexString | null; } export interface AbiMessage { - args: AbiParam[]; + args: AbiMessageParam[]; docs: string[]; fromU8a: (data: Uint8Array) => DecodedMessage; identifier: string; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index a041a69368f1..0b11b0a58867 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -161,7 +161,7 @@ const spec = { args: 'Vec', docs: 'Vec', module_path: 'Text', - signature_topic: '[u8; 32]' + signature_topic: 'Option<[u8; 32]>' }, ContractMessageParamSpecV0: { name: 'Text', diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index 4e9a341d832b..5034d9b9e6c7 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -176,7 +176,7 @@ export interface ContractEventSpecV3 extends Struct { readonly args: Vec; readonly docs: Vec; readonly module_path: Text; - readonly signature_topic: U8aFixed; + readonly signature_topic: Option; } /** @name ContractLayoutArray */ From 3b489409ae38cb8b08e06a8eb7f72a1fcac5ead9 Mon Sep 17 00:00:00 2001 From: peetzweg/ Date: Fri, 1 Mar 2024 13:46:54 +0100 Subject: [PATCH 25/25] removes done todo comments --- packages/api-contract/src/Abi/Abi.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/api-contract/src/Abi/Abi.spec.ts b/packages/api-contract/src/Abi/Abi.spec.ts index d099cbad5345..0e9d58a2a676 100644 --- a/packages/api-contract/src/Abi/Abi.spec.ts +++ b/packages/api-contract/src/Abi/Abi.spec.ts @@ -199,7 +199,7 @@ describe('Abi', (): void => { }); it('decoding >=ink!v5 anonymous event', (): void => { - const abiJson = abis['ink_v5_erc20AnonymousTransferMetadata']; // TODO needs metadata with anonymous event + const abiJson = abis['ink_v5_erc20AnonymousTransferMetadata']; expect(abiJson).toBeDefined(); const abi = new Abi(abiJson); @@ -211,7 +211,6 @@ describe('Abi', (): void => { const record = registry.createType('EventRecord', eventRecordWithAnonymousEventHex); const decodedEvent = abi.decodeEvent(record); - // TODO what should even happen? expect(decodedEvent.event.args.length).toEqual(3); expect(decodedEvent.args.length).toEqual(3);