diff --git a/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-besu-environment.ts b/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-besu-environment.ts index 424ea495ec..dd158d58db 100644 --- a/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-besu-environment.ts +++ b/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-besu-environment.ts @@ -426,7 +426,7 @@ export class BesuEnvironment { id: BesuEnvironment.BESU_ASSET_ID, referenceId: BesuEnvironment.BESU_ASSET_REFERENCE_ID, amount, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, networkId: { id: BesuEnvironment.BESU_NETWORK_ID, ledgerType: NetworkIdLedgerTypeEnum.Besu2X, diff --git a/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-bridging-app-dummy-infrastructure.ts b/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-bridging-app-dummy-infrastructure.ts index 68df98ecde..46c95c972b 100644 --- a/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-bridging-app-dummy-infrastructure.ts +++ b/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-bridging-app-dummy-infrastructure.ts @@ -407,7 +407,7 @@ export class CbdcBridgingAppDummyInfrastructure { id: BesuEnvironment.BESU_NETWORK_ID, ledgerType: LedgerType.Besu2X, }, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -429,7 +429,7 @@ export class CbdcBridgingAppDummyInfrastructure { id: FabricEnvironment.FABRIC_NETWORK_ID, ledgerType: LedgerType.Fabric2, }, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveFabricAddress?.data.approveAddress) { diff --git a/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-fabric-environment.ts b/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-fabric-environment.ts index cc504b1e97..b927dc6cd3 100644 --- a/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-fabric-environment.ts +++ b/examples/cactus-example-cbdc-bridging-backend/src/main/typescript/infrastructure/cbdc-fabric-environment.ts @@ -475,7 +475,7 @@ export class FabricEnvironment { id: FabricEnvironment.FABRIC_ASSET_ID, referenceId: FabricEnvironment.FABRIC_ASSET_REFERENCE_ID, amount, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, networkId: { id: FabricEnvironment.FABRIC_NETWORK_ID, ledgerType: NetworkIdLedgerTypeEnum.Fabric2, diff --git a/packages/cactus-plugin-satp-hermes/package.json b/packages/cactus-plugin-satp-hermes/package.json index 71c2f2cbf8..d588acf226 100644 --- a/packages/cactus-plugin-satp-hermes/package.json +++ b/packages/cactus-plugin-satp-hermes/package.json @@ -97,7 +97,7 @@ "docker:run:dev": "docker run -it hyperledger/cacti-satp-hermes-gateway:$(date +\"%Y-%m-%d\")-dev-$(git rev-parse --short HEAD)", "docker:run:stable": "docker run -it hyperledger/cacti-satp-hermes-gateway:$(node -e \"console.log(require('./package.json').customMetadata['satp-package-version'])\")", "docker:run:stg": "docker run -it hyperledger/cacti-satp-hermes-gateway:$(date +\"%Y-%m-%d\")-stg-$(git rev-parse --short HEAD)", - "forge:all": "run-s 'forge:build' 'forge:build:test' 'forge:test'", + "forge:all": "run-s 'forge:build:all' 'forge:test'", "forge:build:all": "run-s forge:build:contracts forge:build:test", "forge:build:contracts": "forge build ./src/main/solidity/contracts/*.sol --out ./src/main/solidity/generated", "forge:build:test": "forge build ./src/test/solidity/contracts/*.sol --out ./src/test/solidity/generated", diff --git a/packages/cactus-plugin-satp-hermes/src/main/json/openapi-blo-bundled.json b/packages/cactus-plugin-satp-hermes/src/main/json/openapi-blo-bundled.json index 14c00665a6..8216c0b35e 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/json/openapi-blo-bundled.json +++ b/packages/cactus-plugin-satp-hermes/src/main/json/openapi-blo-bundled.json @@ -87,7 +87,8 @@ "contractName", "networkId", "tokenType", - "referenceId" + "referenceId", + "ercTokenStandard" ], "properties": { "id": { @@ -141,9 +142,6 @@ "tokenType": { "type": "string", "enum": [ - "ERC20", - "ERC721", - "ERC1155", "NONSTANDARD_FUNGIBLE", "NONSTANDARD_NONFUNGIBLE" ], @@ -151,6 +149,16 @@ }, "referenceId": { "type": "string" + }, + "ercTokenStandard": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "ERC20", + "ERC721", + "ERC1155" + ], + "description": "The ERC token standard." } } }, @@ -163,7 +171,8 @@ "contractName", "networkId", "tokenType", - "referenceId" + "referenceId", + "ercTokenStandard" ], "properties": { "id": { @@ -217,9 +226,6 @@ "tokenType": { "type": "string", "enum": [ - "ERC20", - "ERC721", - "ERC1155", "NONSTANDARD_FUNGIBLE", "NONSTANDARD_NONFUNGIBLE" ], @@ -227,6 +233,16 @@ }, "referenceId": { "type": "string" + }, + "ercTokenStandard": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "ERC20", + "ERC721", + "ERC1155" + ], + "description": "The ERC token standard." } } } @@ -2641,9 +2657,6 @@ "schema": { "type": "string", "enum": [ - "ERC20", - "ERC721", - "ERC1155", "NONSTANDARD_FUNGIBLE", "NONSTANDARD_NONFUNGIBLE" ], @@ -4533,7 +4546,8 @@ "contractName", "networkId", "tokenType", - "referenceId" + "referenceId", + "ercTokenStandard" ], "properties": { "id": { @@ -4587,9 +4601,6 @@ "tokenType": { "type": "string", "enum": [ - "ERC20", - "ERC721", - "ERC1155", "NONSTANDARD_FUNGIBLE", "NONSTANDARD_NONFUNGIBLE" ], @@ -4597,6 +4608,16 @@ }, "referenceId": { "type": "string" + }, + "ercTokenStandard": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "ERC20", + "ERC721", + "ERC1155" + ], + "description": "The ERC token standard." } } }, @@ -4627,7 +4648,8 @@ "contractName", "networkId", "tokenType", - "referenceId" + "referenceId", + "ercTokenStandard" ], "properties": { "id": { @@ -4681,9 +4703,6 @@ "tokenType": { "type": "string", "enum": [ - "ERC20", - "ERC721", - "ERC1155", "NONSTANDARD_FUNGIBLE", "NONSTANDARD_NONFUNGIBLE" ], @@ -4691,6 +4710,16 @@ }, "referenceId": { "type": "string" + }, + "ercTokenStandard": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "ERC20", + "ERC721", + "ERC1155" + ], + "description": "The ERC token standard." } } }, @@ -4703,7 +4732,8 @@ "contractName", "networkId", "tokenType", - "referenceId" + "referenceId", + "ercTokenStandard" ], "properties": { "id": { @@ -4757,9 +4787,6 @@ "tokenType": { "type": "string", "enum": [ - "ERC20", - "ERC721", - "ERC1155", "NONSTANDARD_FUNGIBLE", "NONSTANDARD_NONFUNGIBLE" ], @@ -4767,6 +4794,16 @@ }, "referenceId": { "type": "string" + }, + "ercTokenStandard": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "ERC20", + "ERC721", + "ERC1155" + ], + "description": "The ERC token standard." } } } @@ -8261,9 +8298,6 @@ "tokenType": { "type": "string", "enum": [ - "ERC20", - "ERC721", - "ERC1155", "NONSTANDARD_FUNGIBLE", "NONSTANDARD_NONFUNGIBLE" ], @@ -10024,14 +10058,21 @@ "TokenType": { "type": "string", "enum": [ - "ERC20", - "ERC721", - "ERC1155", "NONSTANDARD_FUNGIBLE", "NONSTANDARD_NONFUNGIBLE" ], "description": "The type of token." }, + "ERCTokenStandard": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "ERC20", + "ERC721", + "ERC1155" + ], + "description": "The ERC token standard." + }, "DraftVersions": { "type": "object", "description": "The draft versions supported by the gateway.", diff --git a/packages/cactus-plugin-satp-hermes/src/main/proto/cacti/satp/v02/common/message.proto b/packages/cactus-plugin-satp-hermes/src/main/proto/cacti/satp/v02/common/message.proto index 6b35858132..cfa346cf6e 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/proto/cacti/satp/v02/common/message.proto +++ b/packages/cactus-plugin-satp-hermes/src/main/proto/cacti/satp/v02/common/message.proto @@ -277,11 +277,8 @@ message WrapAssertionClaim { enum TokenType { TOKEN_TYPE_UNSPECIFIED = 0; - TOKEN_TYPE_ERC20 = 1; - TOKEN_TYPE_ERC721 = 2; - TOKEN_TYPE_ERC1155 = 3; - TOKEN_TYPE_NONSTANDARD_FUNGIBLE = 4; - TOKEN_TYPE_NONSTANDARD_NONFUNGIBLE = 5; + TOKEN_TYPE_NONSTANDARD_FUNGIBLE = 1; + TOKEN_TYPE_NONSTANDARD_NONFUNGIBLE = 2; } message Asset { @@ -297,6 +294,7 @@ message Asset { string msp_id = 8; string channel_name = 9; NetworkId network_id = 10; + ERCTokenStandard erc_token_standard = 11; } message NetworkId { @@ -304,3 +302,10 @@ message NetworkId { string type = 2; } +enum ERCTokenStandard { + ERC_TOKEN_STANDARD_UNSPECIFIED = 0; + ERC_TOKEN_STANDARD_ERC20 = 1; + ERC_TOKEN_STANDARD_ERC721 = 2; + ERC_TOKEN_STANDARD_ERC1155 = 3; +} + diff --git a/packages/cactus-plugin-satp-hermes/src/main/solidity/contracts/SATPWrapperContract.sol b/packages/cactus-plugin-satp-hermes/src/main/solidity/contracts/SATPWrapperContract.sol index 5a753bbc73..4ef9bb0573 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/solidity/contracts/SATPWrapperContract.sol +++ b/packages/cactus-plugin-satp-hermes/src/main/solidity/contracts/SATPWrapperContract.sol @@ -1,22 +1,28 @@ // SPDX-License-Identifier: GPL-3.0 -pragma solidity 0.8.20; +pragma solidity ^0.8.20; import "@openzeppelin/contracts/access/Ownable.sol"; import "./ITraceableContract.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; +import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; /** * @dev Enum for the supported token types. */ -enum TokenType { UNSPECIFIED, ERC20, ERC721, ERC1155, OTHER } //TODO: FIX THIS ENUM TO BE THE SAME OF THE BRIDGE +enum TokenType { UNSPECIFIED, NONSTANDARD_FUNGIBLE, NONSTANDARD_NONFUNGIBLE } /** * @dev Enum for the supported interaction types. */ -enum InteractionType { MINT, BURN, ASSIGN, CHECKPERMITION, LOCK, UNLOCK } +enum InteractionType { MINT, BURN, ASSIGN, CHECKPERMITION, LOCK, UNLOCK, APPROVE } /** * @dev Enum representing the supported variable types used for contract-to-contract calls. */ -enum VarType {CONTRACTADDRESS, TOKENTYPE, TOKENID, OWNER, AMOUNT, BRIDGE, RECEIVER} +enum AssetParameterIdentifier {CONTRACTADDRESS, TOKENTYPE, TOKENID, OWNER, AMOUNT, BRIDGE, RECEIVER, UNIQUE_DESCRIPTOR} + +/** + * @dev Enum representing the supported ERC token standards. + */ +enum ERCTokenStandard { UNSPECIFIED, ERC20, ERC721, ERC1155 } /** @@ -26,7 +32,7 @@ enum VarType {CONTRACTADDRESS, TOKENTYPE, TOKENID, OWNER, AMOUNT, BRIDGE, RECEIV * @param tokenType The type of the token. * @param tokenId The unique identifier of the token. * @param owner The owner of the token. - * @param amount The amount of the token currently held by the bridge. + * @param amount The amount of the token currently held by the bridge. Its logic differs between fungible and non fungible tokens. */ struct Token { string contractName; @@ -35,8 +41,11 @@ struct Token { string tokenId; string referenceId; address owner; - uint amount; //amount that is approved by the contract owner - //uint locked_amount; //amount that is approved by the contract owner + uint amount; //amount that is approved by the contract owner. On Fungible tokens, it is the relevant attribute of the token. + // For non fungible tokens, it holds the amount of different tokens that are held by the wrapper. Yet, the relevant + // attribute of non fungible tokens is the unique descriptor itself, stored in NFT_IDs. + //uint locked_amount; //amount that is approved by the contract owner + ERCTokenStandard ercTokenStandard; } /** @@ -50,7 +59,7 @@ struct Token { struct InteractionSignature { InteractionType interactionType; string[] functionsSignature; - VarType[][] variables; + AssetParameterIdentifier[][] variables; bool available; } @@ -66,6 +75,10 @@ error TokenNotUnlocked(string tokenId); error InsuficientAmountLocked(string tokenId, uint256 amount); +error TokenNotSupported(string tokenId); + +error TokenAlreadyLocked(string tokenId, uint256 unique_descriptor); + /** * @title SATPWrapper @@ -76,7 +89,7 @@ error InsuficientAmountLocked(string tokenId, uint256 amount); * * @notice Ensure that the contract is deployed and configured correctly before interacting with it. */ -contract SATPWrapperContract is Ownable, ITraceableContract{ +contract SATPWrapperContract is Ownable, ITraceableContract, IERC721Receiver{ /** * Maping of token IDs to Token structs. @@ -88,6 +101,11 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ */ mapping (string => mapping(InteractionType => InteractionSignature)) public tokensInteractions; + /** + * Mapping of the NFT unique descriptors that are in the possetion of the wrapper contract, for each registered tokenId and respective contract. + */ + mapping (string => mapping(uint256 => bool)) public NFT_IDs; + string[] ids; /** @@ -103,6 +121,7 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ event Mint(string indexed tokenId, uint256 amount); event Burn(string indexed tokenId, uint256 amount); event Assign(string indexed tokenId, address receiver_account, uint256 amount); + event Approve(string indexed tokenId, address spender, uint256 amount); /** @@ -124,7 +143,7 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ * @param owner The owner of the token. * @param interactions The interactions to be used for the token. */ - function wrap(string memory contractName, address contractAddress, TokenType tokenType, string memory tokenId, string memory referenceId, address owner, InteractionSignature[] memory interactions ) external onlyOwner returns (bool wrapSuccess) { + function wrap(string memory contractName, address contractAddress, TokenType tokenType, string memory tokenId, string memory referenceId, address owner, InteractionSignature[] memory interactions, ERCTokenStandard ercTokenStandard) external onlyOwner returns (bool wrapSuccess) { if(tokens[tokenId].contractAddress != address(0)) { revert TokenAlreadyWrapped(tokenId); } @@ -136,7 +155,7 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ require(interact(tokenId, InteractionType.CHECKPERMITION), "Contract does not have permission to interact with the token"); } - tokens[tokenId] = Token(contractName, contractAddress, tokenType, tokenId, referenceId, owner, 0); + tokens[tokenId] = Token(contractName, contractAddress, tokenType, tokenId, referenceId, owner, 0, ercTokenStandard); ids.push(tokenId); @@ -148,8 +167,8 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ * Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. * TODO: Implement that functionality for standard tokens. */ - function wrap(string memory contractName, address contractAddress, TokenType tokenType, string memory tokenId, string memory referenceId, address owner) external onlyOwner returns (bool wrapSuccess) { - return this.wrap(contractName, contractAddress, tokenType, tokenId, referenceId, owner, new InteractionSignature[](0)); + function wrap(string memory contractName, address contractAddress, TokenType tokenType, string memory tokenId, string memory referenceId, address owner, ERCTokenStandard ercTokenStandard) external onlyOwner returns (bool wrapSuccess) { + return this.wrap(contractName, contractAddress, tokenType, tokenId, referenceId, owner, new InteractionSignature[](0), ercTokenStandard); } /** @@ -162,7 +181,8 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ } if(tokens[tokenId].amount > 0) { revert TokenLocked(tokenId); - } + } + deleteFromArray(tokens[tokenId].tokenId); delete tokens[tokenId]; @@ -171,102 +191,170 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ } /** - * Locks a given amount of tokens with the given token ID. This method calls the lock function of the token contract. + * Locks tokens with the given token ID. This method calls the lock function of the token contract. * @param tokenId The unique identifier of the token. - * @param amount The amount of tokens to be locked. + * @param assetAttribute The attribute related to the asset to be locked. An amount for fungible tokens, or a unique descriptor for non-fungible tokens. */ - function lock(string memory tokenId, uint256 amount) external onlyOwner returns (bool success) { + function lock(string memory tokenId, uint256 assetAttribute) external onlyOwner returns (bool success) { if(tokens[tokenId].contractAddress == address(0)){ revert TokenNotAvailable(tokenId); } + require(assetAttribute > 0, "Invalid asset attribute"); - bool lockSuccess = interact(tokenId, InteractionType.LOCK, amount); - - if(lockSuccess) { - // The locked amount is added to the amount of the token struct - tokens[tokenId].amount += amount; - emit Lock(tokenId, amount); - return true; + TokenType tt = tokens[tokenId].tokenType; + if (tt == TokenType.NONSTANDARD_FUNGIBLE) { + require(interact(tokenId, InteractionType.LOCK, assetAttribute), "Token Lock Failed"); + tokens[tokenId].amount += assetAttribute; } - - revert TokenNotLocked(tokenId); + else if (tt == TokenType.NONSTANDARD_NONFUNGIBLE) { + require(NFT_IDs[tokenId][assetAttribute] == false, "Token Already Locked"); + require(interact(tokenId, InteractionType.LOCK, assetAttribute), "Token Lock Failed"); + tokens[tokenId].amount += 1; + NFT_IDs[tokenId][assetAttribute] = true; + } + else { + revert TokenNotSupported(tokenId); + } + emit Lock(tokenId, assetAttribute); + return true; } /** - * Unlocks a given amount of tokens with the given token ID. This method calls the unlock function of the token contract. + * Unlocks tokens with the given token ID. This method calls the unlock function of the token contract. * @param tokenId The unique identifier of the token. - * @param amount The amount of tokens to be unlocked. + * @param assetAttribute The amount of tokens to be unlocked, for fungible tokens, or the uniqueDescriptor of the token to unlock, for non fungible tokens. */ - function unlock(string memory tokenId, uint256 amount) external onlyOwner returns (bool success) { //ammount - if(tokens[tokenId].contractAddress == address(0)){ + function unlock(string memory tokenId, uint256 assetAttribute) external onlyOwner returns (bool success) { + if (tokens[tokenId].contractAddress == address(0)){ revert TokenNotAvailable(tokenId); } + require(assetAttribute > 0, "Invalid asset attribute"); - if(tokens[tokenId].amount < amount) { - revert InsuficientAmountLocked(tokenId, amount); + TokenType tt = tokens[tokenId].tokenType; + if (tt == TokenType.NONSTANDARD_FUNGIBLE) { + if(tokens[tokenId].amount < assetAttribute) { + revert InsuficientAmountLocked(tokenId, assetAttribute); + } + require(interact(tokenId, InteractionType.UNLOCK, assetAttribute), "Unlock fungible asset call failed"); + tokens[tokenId].amount -= assetAttribute; } - - bool unlockSuccess = interact(tokenId, InteractionType.UNLOCK, amount); - - if(unlockSuccess) { - // The unlocked amount is subtracted from the amount of the token struct - tokens[tokenId].amount -= amount; - emit Unlock(tokenId, amount); - return true; + else if (tt == TokenType.NONSTANDARD_NONFUNGIBLE) { + require(NFT_IDs[tokenId][assetAttribute] == true, "Token Not Locked"); + require(tokens[tokenId].amount > 0, "Trying to Unlock an asset that is not accounted for"); + require(interact(tokenId, InteractionType.UNLOCK, assetAttribute), "Unlock non fungible asset call failed"); + tokens[tokenId].amount -= 1; + NFT_IDs[tokenId][assetAttribute] = false; + } + else { + revert TokenNotSupported(tokenId); } - revert TokenNotUnlocked(tokenId); + emit Unlock(tokenId, assetAttribute); + return true; } /** - * Mints a given amount of tokens with the given token ID. This method calls the mint function of the token contract. + * Mints tokens with the given token ID. This method calls the mint function of the token contract. * @param tokenId The unique identifier of the token. - * @param amount The amount of tokens to be minted. + * @param assetAttribute The amount of tokens to be minted, for fungible tokens, or the uniqueDescriptor of the token to mint, for non fungible tokens. */ - function mint(string memory tokenId, uint256 amount) external onlyOwner returns (bool success) { + function mint(string memory tokenId, uint256 assetAttribute) external onlyOwner returns (bool success) { if(tokens[tokenId].contractAddress == address(0)){ revert TokenNotAvailable(tokenId); } - - require(interact(tokenId, InteractionType.MINT, amount) , "mint asset call failed"); + require(assetAttribute > 0, "Invalid asset attribute"); + + TokenType tt = tokens[tokenId].tokenType; + if (tt == TokenType.NONSTANDARD_FUNGIBLE) { + require(interact(tokenId, InteractionType.MINT, assetAttribute) , "mint asset call failed"); + tokens[tokenId].amount = assetAttribute; + } + else if (tt == TokenType.NONSTANDARD_NONFUNGIBLE) { + require(NFT_IDs[tokenId][assetAttribute] == false, "Unique Descriptor already exists"); + require(interact(tokenId, InteractionType.MINT, assetAttribute) , "mint asset call failed"); + tokens[tokenId].amount += 1; + NFT_IDs[tokenId][assetAttribute] = true; + } + else { + revert TokenNotSupported(tokenId); + } - tokens[tokenId].amount = amount; - emit Mint(tokenId, amount); + emit Mint(tokenId, assetAttribute); return true; } /** - * Burns a given amount of tokens with the given token ID. This method calls the burn function of the token contract. + * Burns tokens with the given token ID. This method calls the burn function of the token contract. * @param tokenId The unique identifier of the token. - * @param amount The amount of tokens to be burned. + * @param assetAttribute The amount of tokens to be burned, for fungible tokens, or the uniqueDescriptor of the token to burn, for non fungible tokens. */ - function burn(string memory tokenId, uint256 amount) external onlyOwner returns (bool success) { - require(tokens[tokenId].amount >= amount, "burn asset asset is not locked"); - - require(interact(tokenId, InteractionType.BURN, amount), "burn asset call failed"); + function burn(string memory tokenId, uint256 assetAttribute) external onlyOwner returns (bool success) { + if(tokens[tokenId].contractAddress == address(0)){ + revert TokenNotAvailable(tokenId); + } + require(assetAttribute > 0, "Invalid asset attribute"); - tokens[tokenId].amount -= amount; + TokenType tt = tokens[tokenId].tokenType; + if (tt == TokenType.NONSTANDARD_FUNGIBLE) { + require(tokens[tokenId].amount >= assetAttribute, "burn asset asset is not locked"); + require(interact(tokenId, InteractionType.BURN, assetAttribute), "burn asset call failed"); + tokens[tokenId].amount -= assetAttribute; + } + else if (tt == TokenType.NONSTANDARD_NONFUNGIBLE) { + require(tokens[tokenId].amount > 0, "Trying to burn an unaccounted Asset"); + require(NFT_IDs[tokenId][assetAttribute] == true, "Unique Descriptor does not exist"); + require(interact(tokenId, InteractionType.BURN, assetAttribute), "burn asset call failed"); + tokens[tokenId].amount -= 1; + NFT_IDs[tokenId][assetAttribute] = false; + } + else { + revert TokenNotSupported(tokenId); + } - emit Burn(tokenId, amount); + emit Burn(tokenId, assetAttribute); return true; } /** - * Assigns a given amount of tokens with the given token ID to a receiver account. This method calls the assign function of the token contract. + * Assigns tokens with the given token ID to a receiver account. This method calls the assign function of the token contract. * @param tokenId The unique identifier of the token. * @param receiver_account The address of the receiver account. - * @param amount The amount of tokens to be assigned. + * @param assetAttribute The amount of tokens to be assigned, for fungible tokens, or the uniqueDescriptor of the token to be assigned, for non-fungible tokens. */ - function assign(string memory tokenId, address receiver_account, uint256 amount) external onlyOwner returns (bool success) { - require(tokens[tokenId].amount >= amount, "assign asset asset is not locked"); - - require(interact(tokenId, InteractionType.ASSIGN, amount, receiver_account), "assign asset call failed"); + function assign(string memory tokenId, address receiver_account, uint256 assetAttribute) external onlyOwner returns (bool success) { + if(tokens[tokenId].contractAddress == address(0)){ + revert TokenNotAvailable(tokenId); + } + require(assetAttribute > 0, "Invalid asset attribute"); - tokens[tokenId].amount -= amount; - - emit Assign(tokenId, receiver_account, amount); + TokenType tt = tokens[tokenId].tokenType; + if (tt == TokenType.NONSTANDARD_FUNGIBLE) { + require(tokens[tokenId].amount >= assetAttribute, "assign asset asset is not locked"); + require(interact(tokenId, InteractionType.ASSIGN, assetAttribute, receiver_account), "assign asset call failed"); + tokens[tokenId].amount -= assetAttribute; + } + else if (tt == TokenType.NONSTANDARD_NONFUNGIBLE) { + require(tokens[tokenId].amount > 0, "Assign nft - asset is not locked"); + require(NFT_IDs[tokenId][assetAttribute] == true, "Unique Descriptor does not exist"); + require(interact(tokenId, InteractionType.ASSIGN, assetAttribute, receiver_account), "assign nft call failed"); + tokens[tokenId].amount -= 1; + NFT_IDs[tokenId][assetAttribute] = false; + } + else { + revert TokenNotSupported(tokenId); + } + emit Assign(tokenId, receiver_account, assetAttribute); return true; - } + } + + /** + * @notice REQUIRED by OpenZeppelin: Supports the use of safe functions for ERC721 tokens. + * @return success A boolean indicating if the account has the bridge role. + */ + function onERC721Received(address, address, uint256, bytes calldata) external pure override returns (bytes4) { + return this.onERC721Received.selector; + } + /** * Gets all the token IDs. @@ -291,12 +379,46 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ } /** - * Gets a token with the given token ID. + * Overload of the getToken function, used when getting fungible tokens, providing a neutral unique descriptor + * that is required when getting a non fungible token. * @param tokenId The unique identifier of the token. * @return token the token with the given token ID. */ function getToken(string memory tokenId) view public returns (Token memory token) { - return tokens[tokenId]; + return getToken(tokenId, 0); + } + + /** + * Gets a token with the given token ID. Since a tokenId can be associated to multiple non fungible tokens, + * it is required to also provide the asset attribute of the wanted non fungible token. If the provided tokenId + * is not for a non fungible token, the assetAttribute parameter will be ignored. + * @param tokenId The unique identifier of the token. + * @param assetAttribute The asset attribute of the token. + * @return token the token with the given token ID and asset attribute. + */ + function getToken(string memory tokenId, uint256 assetAttribute) view public returns (Token memory token) { + TokenType tt = tokens[tokenId].tokenType; + /*When dealing with fungible tokens, the attribute that is relevant is the amount that is held by an actor + at a specific point in time. The amount is returned with the token, when the token is fungible.*/ + if (tt == TokenType.NONSTANDARD_FUNGIBLE) { + return tokens[tokenId]; + } + /*When dealing with non fungible tokens, the relevant attribute is the unique descriptor. Since the same contract + can be associated with multiple non fungible tokens, it is necessary to provide the unique descriptor of the wanted + asset. The wrapper contract then verifies if it holds the asset with that unique descriptor. If it holds it, the + contract returns the unique descriptor with the token. If not, it returns 0 as the unique descriptor, which is to + be interpreted as the absence of that same token.*/ + else if (tt == TokenType.NONSTANDARD_NONFUNGIBLE) { + /*The reason the token is rebuilt upon the return is due to internal logic of the protocol. Everytime a token is passed between + steps of the protocol, the token is expected to have an amount attribute. The leafs that receive the tokens from the contract + rebuild the asset according to its type (Fungible or NonFungible) and interpret the value of the amount field accordingly. */ + if(NFT_IDs[tokenId][assetAttribute]) { + return Token(tokens[tokenId].contractName, tokens[tokenId].contractAddress, tokens[tokenId].tokenType, tokenId, tokens[tokenId].referenceId, tokens[tokenId].owner, assetAttribute, tokens[tokenId].ercTokenStandard); + } + else { + return Token(tokens[tokenId].contractName, tokens[tokenId].contractAddress, tokens[tokenId].tokenType, tokenId, tokens[tokenId].referenceId, tokens[tokenId].owner, 0, tokens[tokenId].ercTokenStandard); + } + } } /** @@ -320,25 +442,25 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ } /** - * Interacts with the token contract using the given token ID, interaction type, and amount. + * Interacts with the token contract using the given token ID, interaction type, and the token specific attribute. * @param tokenId The unique identifier of the token. * @param interactionType The type of the interaction. - * @param amount The amount of tokens to be interacted with. + * @param assetAttribute The asset attribute of tokens to be interacted with. */ - function interact(string memory tokenId, InteractionType interactionType, uint256 amount) internal returns (bool success) { - return interact(tokenId, interactionType, amount, address(0)); + function interact(string memory tokenId, InteractionType interactionType, uint256 assetAttribute) internal returns (bool success) { + return interact(tokenId, interactionType, assetAttribute, address(0)); } /** - * Interacts with the token contract using the given token ID, interaction type, amount, and receiver account. + * Interacts with the token contract using the given token ID, interaction type, asset attribute, and receiver account. * This function allows modular interactions by dynamically calling contract functions based on the stored interactions. * To mitigate the risk of attacks, this method only allows the usage of known variables and only variables that are assigned to the specific token. * @param tokenId The unique identifier of the token. * @param interactionType The type of the interaction. - * @param amount The amount of tokens to be interacted with. + * @param assetAttribute The asset attribute of tokens to be interacted with. * @param receiver The address of the receiver account. */ - function interact(string memory tokenId, InteractionType interactionType, uint256 amount, address receiver) internal returns (bool) { + function interact(string memory tokenId, InteractionType interactionType, uint256 assetAttribute, address receiver) internal returns (bool) { if (!tokensInteractions[tokenId][interactionType].available) { return false; } @@ -346,7 +468,7 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ for (uint i = 0; i < tokensInteractions[tokenId][interactionType].functionsSignature.length; i++) { bytes4 functionSelector = bytes4(keccak256(abi.encodePacked(tokensInteractions[tokenId][interactionType].functionsSignature[i]))); - bytes memory encodedParams = encodeDynamicParams(functionSelector, encodeParams(tokensInteractions[tokenId][interactionType].variables[i], tokenId, receiver, amount)); + bytes memory encodedParams = encodeDynamicParams(functionSelector, AssetParameterIdentifierEncoder(tokensInteractions[tokenId][interactionType].variables[i], tokenId, receiver, assetAttribute)); (bool callSuccess, ) = tokens[tokenId].contractAddress.call(encodedParams); if (!callSuccess) { @@ -375,23 +497,25 @@ contract SATPWrapperContract is Ownable, ITraceableContract{ * @param variables The variables to be encoded. * @param tokenId The unique identifier of the token. * @param receiver The address of the receiver account. - * @param amount The amount of tokens to be encoded. + * @param assetAttribute The asset attribute of tokens to be encoded. */ - function encodeParams(VarType[] memory variables, string memory tokenId, address receiver, uint256 amount) internal view returns (bytes[] memory){ + function AssetParameterIdentifierEncoder(AssetParameterIdentifier[] memory variables, string memory tokenId, address receiver, uint256 assetAttribute) internal view returns (bytes[] memory){ bytes[] memory dynamicParams = new bytes[](variables.length); for (uint i = 0; i < variables.length; i++) { - if (variables[i] == VarType.BRIDGE) { + if (variables[i] == AssetParameterIdentifier.BRIDGE) { dynamicParams[i] = abi.encode(address(this)); - } else if (variables[i] == VarType.TOKENID) { + } else if (variables[i] == AssetParameterIdentifier.TOKENID) { dynamicParams[i] = abi.encode(tokenId); - } else if (variables[i] == VarType.AMOUNT) { - dynamicParams[i] = abi.encode(amount); - } else if (variables[i] == VarType.OWNER) { + } else if (variables[i] == AssetParameterIdentifier.AMOUNT) { + dynamicParams[i] = abi.encode(assetAttribute); + } else if (variables[i] == AssetParameterIdentifier.OWNER) { dynamicParams[i] = abi.encode(tokens[tokenId].owner); - } else if (variables[i] == VarType.CONTRACTADDRESS) { + } else if (variables[i] == AssetParameterIdentifier.CONTRACTADDRESS) { dynamicParams[i] = abi.encode(tokens[tokenId].contractAddress); - } else if (variables[i] == VarType.RECEIVER) { + } else if (variables[i] == AssetParameterIdentifier.RECEIVER) { dynamicParams[i] = abi.encode(receiver); + } else if (variables[i] == AssetParameterIdentifier.UNIQUE_DESCRIPTOR) { + dynamicParams[i] = abi.encode(assetAttribute); } else { revert("Variable not supported"); } diff --git a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Context.sol/Context.json b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Context.sol/Context.json index b48127af20..add652e57c 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Context.sol/Context.json +++ b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Context.sol/Context.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/Context.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":1} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/Context.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":2} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/IERC721Receiver.sol/IERC721Receiver.json b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/IERC721Receiver.sol/IERC721Receiver.json new file mode 100644 index 0000000000..93d70b9c79 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/IERC721Receiver.sol/IERC721Receiver.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":"IERC721Receiver"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"}},"version":1},"id":1} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/ITraceableContract.sol/ITraceableContract.json b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/ITraceableContract.sol/ITraceableContract.json index a2a5ff2f03..a45eb74491 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/ITraceableContract.sol/ITraceableContract.json +++ b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/ITraceableContract.sol/ITraceableContract.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAllAssetsIDs()":"5137b8a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/main/solidity/contracts/ITraceableContract.sol\":\"ITraceableContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/main/solidity/contracts/ITraceableContract.sol":"ITraceableContract"},"evmVersion":"paris","libraries":{}},"sources":{"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"}},"version":1},"id":5} \ No newline at end of file +{"abi":[{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAllAssetsIDs()":"5137b8a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/main/solidity/contracts/ITraceableContract.sol\":\"ITraceableContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/main/solidity/contracts/ITraceableContract.sol":"ITraceableContract"},"evmVersion":"paris","libraries":{}},"sources":{"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"}},"version":1},"id":6} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Math.sol/Math.json b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Math.sol/Math.json index cd8d4063f8..34e3f71b29 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Math.sol/Math.json +++ b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Math.sol/Math.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb763282d69b607efc1d4ccc7b0f0e833a7c738cbdcf1d4a2b7e0b1f2c9fa3e764736f6c63430008140033","sourceMap":"203:14914:3:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:3;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb763282d69b607efc1d4ccc7b0f0e833a7c738cbdcf1d4a2b7e0b1f2c9fa3e764736f6c63430008140033","sourceMap":"203:14914:3:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/math/Math.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file +{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb763282d69b607efc1d4ccc7b0f0e833a7c738cbdcf1d4a2b7e0b1f2c9fa3e764736f6c63430008140033","sourceMap":"203:14914:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:4;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb763282d69b607efc1d4ccc7b0f0e833a7c738cbdcf1d4a2b7e0b1f2c9fa3e764736f6c63430008140033","sourceMap":"203:14914:4:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/math/Math.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"}},"version":1},"id":4} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json index 602af9d4c4..ea6d641ce9 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json +++ b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_bridge_address","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"assign","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"receiver_account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"bridge_address","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"getToken","inputs":[{"name":"tokenId","type":"string","internalType":"string"}],"outputs":[{"name":"token","type":"tuple","internalType":"struct Token","components":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"lock","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokens","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokensInteractions","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint8","internalType":"enum InteractionType"}],"outputs":[{"name":"interactionType","type":"uint8","internalType":"enum InteractionType"},{"name":"available","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"unwrap","inputs":[{"name":"tokenId","type":"string","internalType":"string"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"wrapSuccess","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"interactions","type":"tuple[]","internalType":"struct InteractionSignature[]","components":[{"name":"interactionType","type":"uint8","internalType":"enum InteractionType"},{"name":"functionsSignature","type":"string[]","internalType":"string[]"},{"name":"variables","type":"uint8[][]","internalType":"enum VarType[][]"},{"name":"available","type":"bool","internalType":"bool"}]}],"outputs":[{"name":"wrapSuccess","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Assign","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"receiver_account","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false},{"type":"event","name":"Lock","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unlock","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unwrap","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Wrap","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"contractName","type":"string","indexed":false,"internalType":"string"},{"name":"contractAddress","type":"address","indexed":false,"internalType":"address"},{"name":"tokenType","type":"uint8","indexed":false,"internalType":"enum TokenType"},{"name":"owner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InsuficientAmountLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"TokenAlreadyWrapped","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotAvailable","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotUnlocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040516200318e3803806200318e8339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600480546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b61306680620001286000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a1bc17c511610097578063e1efb59611610066578063e1efb59614610231578063ea8f547f14610244578063f272660b1461029b578063f2fde38b146102ae57600080fd5b8063a1bc17c5146101d8578063b48272cc146101eb578063c1733f68146101fe578063d9cf884c1461021e57600080fd5b80635137b8a7116100d35780635137b8a7146101955780636a0876e0146101aa578063715018a6146101bd5780638da5cb5b146101c757600080fd5b806304c2320b14610105578063056b01ce146101345780631255c189146101575780634534ba1714610182575b600080fd5b610118610113366004612281565b6102c1565b60405161012b9796959493929190612330565b60405180910390f35b61014761014236600461239c565b6104ba565b604051901515815260200161012b565b60045461016a906001600160a01b031681565b6040516001600160a01b03909116815260200161012b565b6101476101903660046123f8565b6105f3565b61019d61075e565b60405161012b919061244f565b6101476101b83660046124c0565b610837565b6101c561091c565b005b6000546001600160a01b031661016a565b6101476101e6366004612281565b610930565b6101476101f936600461239c565b610b77565b61021161020c366004612281565b610cc5565b60405161012b9190612579565b61014761022c36600461239c565b610f49565b61014761023f36600461239c565b6110dc565b61028d610252366004612630565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161012b92919061268e565b6101476102a9366004612958565b611202565b6101c56102bc366004612a37565b611533565b80516020818301810180516001825292820191909301209152805481906102e790612a52565b80601f016020809104026020016040519081016040528092919081815260200182805461031390612a52565b80156103605780601f1061033557610100808354040283529160200191610360565b820191906000526020600020905b81548152906001019060200180831161034357829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161039390612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf90612a52565b801561040c5780601f106103e15761010080835404028352916020019161040c565b820191906000526020600020905b8154815290600101906020018083116103ef57829003601f168201915b50505050509080600301805461042190612a52565b80601f016020809104026020016040519081016040528092919081815260200182805461044d90612a52565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b50505050600483015460059093015491926001600160a01b031691905087565b60006104c461158a565b60006001600160a01b03166001846040516104df9190612a8c565b908152604051908190036020019020600101546001600160a01b031603610524578260405163c0bab25f60e01b815260040161051b9190612aa8565b60405180910390fd5b610530836000846115d0565b61057c5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c656400000000000000000000604482015260640161051b565b8160018460405161058d9190612a8c565b908152604051908190036020018120600501919091556105ae908490612a8c565b604051908190038120838252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a25060015b92915050565b60006105fd61158a565b8160018560405161060e9190612a8c565b908152602001604051809103902060050154101561066e5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b6564604482015260640161051b565b61067b84600284866115e7565b6106c75760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c65640000000000000000604482015260640161051b565b816001856040516106d89190612a8c565b908152602001604051809103902060050160008282546106f89190612ad1565b909155505060405161070b908590612a8c565b604080519182900382206001600160a01b038616835260208301859052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a25060019392505050565b60606003805480602002602001604051908101604052809291908181526020016000905b8282101561082e5783829060005260206000200180546107a190612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546107cd90612a52565b801561081a5780601f106107ef5761010080835404028352916020019161081a565b820191906000526020600020905b8154815290600101906020018083116107fd57829003601f168201915b505050505081526020019060010190610782565b50505050905090565b600061084161158a565b3063f272660b88888888888860006040519080825280602002602001820160405280156108ab57816020015b6108986040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161086d5790505b506040518863ffffffff1660e01b81526004016108ce9796959493929190612b70565b6020604051808303816000875af11580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190612cc7565b979650505050505050565b61092461158a565b61092e6000611903565b565b600061093a61158a565b60006001600160a01b03166001836040516109559190612a8c565b908152604051908190036020019020600101546001600160a01b031603610991578160405163c0bab25f60e01b815260040161051b9190612aa8565b60006001836040516109a39190612a8c565b90815260200160405180910390206005015411156109ef57816040517fb7d2c10a00000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b610aa1600183604051610a029190612a8c565b90815260200160405180910390206002018054610a1e90612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a90612a52565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050611960565b600182604051610ab19190612a8c565b9081526040519081900360200190206000610acc8282611f94565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055610afa600283016000611f94565b610b08600383016000611f94565b5060048101805473ffffffffffffffffffffffffffffffffffffffff191690556000600590910155604051610b3e908390612a8c565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000610b8161158a565b81600184604051610b929190612a8c565b9081526020016040518091039020600501541015610bf25760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b65640000604482015260640161051b565b610bfe836001846115d0565b610c4a5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c656400000000000000000000604482015260640161051b565b81600184604051610c5b9190612a8c565b90815260200160405180910390206005016000828254610c7b9190612ad1565b9091555050604051610c8e908490612a8c565b604051908190038120838252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee99906020016105e1565b6040805160e0810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c0810191909152600182604051610d0d9190612a8c565b90815260200160405180910390206040518060e0016040529081600082018054610d3690612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6290612a52565b8015610daf5780601f10610d8457610100808354040283529160200191610daf565b820191906000526020600020905b815481529060010190602001808311610d9257829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166004811115610dec57610dec612306565b6004811115610dfd57610dfd612306565b8152602001600282018054610e1190612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d90612a52565b8015610e8a5780601f10610e5f57610100808354040283529160200191610e8a565b820191906000526020600020905b815481529060010190602001808311610e6d57829003601f168201915b50505050508152602001600382018054610ea390612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecf90612a52565b8015610f1c5780601f10610ef157610100808354040283529160200191610f1c565b820191906000526020600020905b815481529060010190602001808311610eff57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260059091015460409091015292915050565b6000610f5361158a565b60006001600160a01b0316600184604051610f6e9190612a8c565b908152604051908190036020019020600101546001600160a01b031603610faa578260405163c0bab25f60e01b815260040161051b9190612aa8565b81600184604051610fbb9190612a8c565b90815260200160405180910390206005015410156110095782826040517fed579e6000000000000000000000000000000000000000000000000000000000815260040161051b929190612ce4565b6000611017846005856115d0565b905080156110a857826001856040516110309190612a8c565b908152602001604051809103902060050160008282546110509190612ad1565b9091555050604051611063908590612a8c565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e906020015b60405180910390a260019150506105ed565b836040517f58300fe700000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b60006110e661158a565b60006001600160a01b03166001846040516111019190612a8c565b908152604051908190036020019020600101546001600160a01b03160361113d578260405163c0bab25f60e01b815260040161051b9190612aa8565b600061114b846004856115d0565b905080156111ce57826001856040516111649190612a8c565b908152602001604051809103902060050160008282546111849190612d06565b9091555050604051611197908590612a8c565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001611096565b836040517f8244096a00000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b600061120c61158a565b60006001600160a01b03166001866040516112279190612a8c565b908152604051908190036020019020600101546001600160a01b03161461127c57846040517f67ab234400000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b6112868583611abe565b6002856040516112969190612a8c565b9081526040805160209281900383019020600360008181529190935220015460ff161561133a576112c8856003611bde565b61133a5760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e00000000606482015260840161051b565b6040518060e00160405280898152602001886001600160a01b0316815260200187600481111561136c5761136c612306565b8152602001868152602001858152602001846001600160a01b0316815260200160008152506001866040516113a19190612a8c565b908152604051908190036020019020815181906113be9082612d67565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600481111561142757611427612306565b0217905550606082015160028201906114409082612d67565b50608082015160038201906114559082612d67565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c090910151600590910155600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016114d18682612d67565b50846040516114e09190612a8c565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8989898760405161151d9493929190612e27565b60405180910390a2506001979650505050505050565b61153b61158a565b6001600160a01b03811661157e576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161051b565b61158781611903565b50565b6000546001600160a01b0316331461092e576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161051b565b60006115df84848460006115e7565b949350505050565b60006002856040516115f99190612a8c565b9081526020016040518091039020600085600581111561161b5761161b612306565b600581111561162c5761162c612306565b815260208101919091526040016000206003015460ff1661164f575060006115df565b60005b6002866040516116629190612a8c565b9081526020016040518091039020600086600581111561168457611684612306565b600581111561169557611695612306565b81526020810191909152604001600020600101548110156118f75760006002876040516116c29190612a8c565b908152602001604051809103902060008760058111156116e4576116e4612306565b60058111156116f5576116f5612306565b8152602001908152602001600020600101828154811061171757611717612e6b565b906000526020600020016040516020016117319190612e81565b604051602081830303815290604052805190602001209050600061184d8261184860028b6040516117629190612a8c565b908152602001604051809103902060008b600581111561178457611784612306565b600581111561179557611795612306565b815260200190815260200160002060020186815481106117b7576117b7612e6b565b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561183b57602002820191906000526020600020906000905b82829054906101000a900460ff16600681111561181957611819612306565b8152602060019283018181049485019490930390920291018084116117fa5790505b50505050508b898b611bf4565b611ece565b905060006001896040516118619190612a8c565b908152604051908190036020018120600101546001600160a01b031690611889908490612a8c565b6000604051808303816000865af19150503d80600081146118c6576040519150601f19603f3d011682016040523d82523d6000602084013e6118cb565b606091505b50509050806118e15760009450505050506115df565b50505080806118ef90612ef7565b915050611652565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b600354811015611aba57611a1c6003828154811061198357611983612e6b565b90600052602060002001805461199890612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546119c490612a52565b8015611a115780601f106119e657610100808354040283529160200191611a11565b820191906000526020600020905b8154815290600101906020018083116119f457829003601f168201915b505050505083611f6f565b15611aa85760038054611a3190600190612ad1565b81548110611a4157611a41612e6b565b9060005260206000200160038281548110611a5e57611a5e612e6b565b906000526020600020019081611a749190612f10565b506003805480611a8657611a86612feb565b600190038181906000526020600020016000611aa29190611f94565b90555050565b80611ab281612ef7565b915050611963565b5050565b60005b8151811015611bd957818181518110611adc57611adc612e6b565b6020026020010151600284604051611af49190612a8c565b90815260200160405180910390206000848481518110611b1657611b16612e6b565b6020026020010151600001516005811115611b3357611b33612306565b6005811115611b4457611b44612306565b8152602081019190915260400160002081518154829060ff19166001836005811115611b7257611b72612306565b02179055506020828101518051611b8f9260018501920190611fce565b5060408201518051611bab916002840191602090910190612024565b50606091909101516003909101805460ff191691151591909117905580611bd181612ef7565b915050611ac1565b505050565b6000611bed83836000806115e7565b9392505050565b60606000855167ffffffffffffffff811115611c1257611c126121a1565b604051908082528060200260200182016040528015611c4557816020015b6060815260200190600190039081611c305790505b50905060005b8651811015611ec4576005878281518110611c6857611c68612e6b565b60200260200101516006811115611c8157611c81612306565b03611cc35760408051306020820152015b604051602081830303815290604052828281518110611cb357611cb3612e6b565b6020026020010181905250611eb2565b6002878281518110611cd757611cd7612e6b565b60200260200101516006811115611cf057611cf0612306565b03611d065785604051602001611c929190612aa8565b6004878281518110611d1a57611d1a612e6b565b60200260200101516006811115611d3357611d33612306565b03611d4957604080516020810186905201611c92565b6003878281518110611d5d57611d5d612e6b565b60200260200101516006811115611d7657611d76612306565b03611db457600186604051611d8b9190612a8c565b908152604080519182900360209081018320600401546001600160a01b03169083015201611c92565b6000878281518110611dc857611dc8612e6b565b60200260200101516006811115611de157611de1612306565b03611e1f57600186604051611df69190612a8c565b908152604080519182900360209081018320600101546001600160a01b03169083015201611c92565b6006878281518110611e3357611e33612e6b565b60200260200101516006811115611e4c57611e4c612306565b03611e6a57604080516001600160a01b038716602082015201611c92565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f7274656400000000000000000000604482015260640161051b565b80611ebc81612ef7565b915050611c4b565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b8251811015611f685781838281518110611f2b57611f2b612e6b565b6020026020010151604051602001611f44929190613001565b60405160208183030381529060405291508080611f6090612ef7565b915050611f0f565b5092915050565b600081518351148015611bed5750508051602091820120825192909101919091201490565b508054611fa090612a52565b6000825580601f10611fb0575050565b601f016020900490600052602060002090810190611587919061207d565b828054828255906000526020600020908101928215612014579160200282015b8281111561201457825182906120049082612d67565b5091602001919060010190611fee565b50612020929150612092565b5090565b828054828255906000526020600020908101928215612071579160200282015b8281111561207157825180516120619184916020909101906120af565b5091602001919060010190612044565b5061202092915061215f565b5b80821115612020576000815560010161207e565b808211156120205760006120a68282611f94565b50600101612092565b82805482825590600052602060002090601f016020900481019282156121535791602002820160005b8382111561212457835183826101000a81548160ff0219169083600681111561210357612103612306565b021790555092602001926001016020816000010492830192600103026120d8565b80156121515782816101000a81549060ff0219169055600101602081600001049283019260010302612124565b505b5061202092915061207d565b80821115612020576000612173828261217c565b5060010161215f565b50805460008255601f016020900490600052602060002090810190611587919061207d565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156121da576121da6121a1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612209576122096121a1565b604052919050565b600082601f83011261222257600080fd5b813567ffffffffffffffff81111561223c5761223c6121a1565b61224f601f8201601f19166020016121e0565b81815284602083860101111561226457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561229357600080fd5b813567ffffffffffffffff8111156122aa57600080fd5b6115df84828501612211565b60005b838110156122d15781810151838201526020016122b9565b50506000910152565b600081518084526122f28160208601602086016122b6565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6005811061232c5761232c612306565b9052565b60e08152600061234360e083018a6122da565b6001600160a01b03808a166020850152612360604085018a61231c565b838203606085015261237282896122da565b9150838203608085015261238682886122da565b951660a0840152505060c0015295945050505050565b600080604083850312156123af57600080fd5b823567ffffffffffffffff8111156123c657600080fd5b6123d285828601612211565b95602094909401359450505050565b80356001600160a01b0381168114610b7257600080fd5b60008060006060848603121561240d57600080fd5b833567ffffffffffffffff81111561242457600080fd5b61243086828701612211565b93505061243f602085016123e1565b9150604084013590509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156124a457603f198886030184526124928583516122da565b94509285019290850190600101612476565b5092979650505050505050565b803560058110610b7257600080fd5b60008060008060008060c087890312156124d957600080fd5b863567ffffffffffffffff808211156124f157600080fd5b6124fd8a838b01612211565b975061250b60208a016123e1565b965061251960408a016124b1565b9550606089013591508082111561252f57600080fd5b61253b8a838b01612211565b9450608089013591508082111561255157600080fd5b5061255e89828a01612211565b92505061256d60a088016123e1565b90509295509295509295565b602081526000825160e060208401526125966101008401826122da565b905060208401516001600160a01b038082166040860152604086015191506125c1606086018361231c565b60608601519150601f19808685030160808701526125df84846122da565b935060808701519250808685030160a0870152506125fd83836122da565b92508060a08701511660c0860152505060c084015160e08401528091505092915050565b803560068110610b7257600080fd5b6000806040838503121561264357600080fd5b823567ffffffffffffffff81111561265a57600080fd5b61266685828601612211565b92505061267560208401612621565b90509250929050565b6006811061232c5761232c612306565b6040810161269c828561267e565b82151560208301529392505050565b600067ffffffffffffffff8211156126c5576126c56121a1565b5060051b60200190565b600082601f8301126126e057600080fd5b813560206126f56126f0836126ab565b6121e0565b828152600592831b850182019282820191908785111561271457600080fd5b8387015b858110156127b957803567ffffffffffffffff8111156127385760008081fd5b8801603f81018a1361274a5760008081fd5b85810135604061275c6126f0836126ab565b82815291851b8301810191888101908d8411156127795760008081fd5b938201935b838510156127a85784359250600783106127985760008081fd5b828252938901939089019061277e565b885250505093850193508401612718565b5090979650505050505050565b801515811461158757600080fd5b8035610b72816127c6565b600082601f8301126127f057600080fd5b6127fd6126f083356126ab565b82358082526020808301929160051b8501018581111561281c57600080fd5b602085015b8181101561294d5767ffffffffffffffff808235111561284057600080fd5b813587016080818a03601f1901121561285857600080fd5b6128606121b7565b61286c60208301612621565b815260408201358381111561288057600080fd5b8201603f81018b1361289157600080fd5b60208101356128a26126f0826126ab565b81815260059190911b82016040019060208101908d8311156128c357600080fd5b604084015b838110156128fc5787813511156128de57600080fd5b6128ee8f60408335880101612211565b8352602092830192016128c8565b50602085015250505060608201358381111561291757600080fd5b6129268b6020838601016126cf565b604083015250612938608083016127d4565b60608201528652505060209384019301612821565b509095945050505050565b600080600080600080600060e0888a03121561297357600080fd5b873567ffffffffffffffff8082111561298b57600080fd5b6129978b838c01612211565b98506129a560208b016123e1565b97506129b360408b016124b1565b965060608a01359150808211156129c957600080fd5b6129d58b838c01612211565b955060808a01359150808211156129eb57600080fd5b6129f78b838c01612211565b9450612a0560a08b016123e1565b935060c08a0135915080821115612a1b57600080fd5b50612a288a828b016127df565b91505092959891949750929550565b600060208284031215612a4957600080fd5b611bed826123e1565b600181811c90821680612a6657607f821691505b602082108103612a8657634e487b7160e01b600052602260045260246000fd5b50919050565b60008251612a9e8184602087016122b6565b9190910192915050565b602081526000611bed60208301846122da565b634e487b7160e01b600052601160045260246000fd5b818103818111156105ed576105ed612abb565b600081518084526020808501808196508360051b810191508286016000805b86811015612b62578385038a52825180518087529087019087870190845b81811015612b4d57835160078110612b3b57612b3b612306565b83529289019291890191600101612b21565b50509a87019a95505091850191600101612b03565b509298975050505050505050565b60e081526000612b8360e083018a6122da565b60206001600160a01b03808b16828601526040612ba28187018c61231c565b606086850381880152612bb5858c6122da565b9450608087860381890152612bca868c6122da565b955060a0848b16818a015288870360c08a015286945089518088528688019550868160051b890101878c0160005b83811015612cad57601f198b84030189528151868401612c1985835161267e565b818c0151858d01899052805191829052600582901b8601880191908d01908887019060005b81811015612c6c57609f19898603018352612c5a8585516122da565b9450928f0192918f0191600101612c3e565b50505050898201518582038b870152612c858282612ae4565b928a0151801515878c0152929150612c9a9050565b998b019993505090890190600101612bf8565b505080995050505050505050505098975050505050505050565b600060208284031215612cd957600080fd5b8151611bed816127c6565b604081526000612cf760408301856122da565b90508260208301529392505050565b808201808211156105ed576105ed612abb565b601f821115611bd957600081815260208120601f850160051c81016020861015612d405750805b601f850160051c820191505b81811015612d5f57828155600101612d4c565b505050505050565b815167ffffffffffffffff811115612d8157612d816121a1565b612d9581612d8f8454612a52565b84612d19565b602080601f831160018114612dca5760008415612db25750858301515b600019600386901b1c1916600185901b178555612d5f565b600085815260208120601f198616915b82811015612df957888601518255948401946001909101908401612dda565b5085821015612e175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608081526000612e3a60808301876122da565b90506001600160a01b038086166020840152612e59604084018661231c565b80841660608401525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000808354612e8f81612a52565b60018281168015612ea75760018114612ebc57612eeb565b60ff1984168752821515830287019450612eeb565b8760005260208060002060005b85811015612ee25781548a820152908401908201612ec9565b50505082870194505b50929695505050505050565b600060018201612f0957612f09612abb565b5060010190565b818103612f1b575050565b612f258254612a52565b67ffffffffffffffff811115612f3d57612f3d6121a1565b612f4b81612d8f8454612a52565b6000601f821160018114612f7f5760008315612f675750848201545b600019600385901b1c1916600184901b178455612fe4565b600085815260209020601f19841690600086815260209020845b83811015612fb95782860154825560019586019590910190602001612f99565b5085831015612fd75781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b600083516130138184602088016122b6565b8351908301906130278183602088016122b6565b0194935050505056fea264697066735822122061f8f07054ee3a2d9a71872f7ff8a9dc2f86a362579cf974a5c1acbbce2c412f64736f6c63430008140033","sourceMap":"2711:14214:6:-:0;;;3914:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3960:15;-1:-1:-1;;;;;1273:26:0;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:0;;1350:1;1322:31;;;455:51:7;428:18;;1322:31:0;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;3987:14:6::1;:41:::0;;-1:-1:-1;;;;;;3987:41:6::1;-1:-1:-1::0;;;;;3987:41:6;;;::::1;::::0;;;::::1;::::0;;2711:14214;;2912:187:0;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:7:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:7;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:7:o;309:203::-;2711:14214:6;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063a1bc17c511610097578063e1efb59611610066578063e1efb59614610231578063ea8f547f14610244578063f272660b1461029b578063f2fde38b146102ae57600080fd5b8063a1bc17c5146101d8578063b48272cc146101eb578063c1733f68146101fe578063d9cf884c1461021e57600080fd5b80635137b8a7116100d35780635137b8a7146101955780636a0876e0146101aa578063715018a6146101bd5780638da5cb5b146101c757600080fd5b806304c2320b14610105578063056b01ce146101345780631255c189146101575780634534ba1714610182575b600080fd5b610118610113366004612281565b6102c1565b60405161012b9796959493929190612330565b60405180910390f35b61014761014236600461239c565b6104ba565b604051901515815260200161012b565b60045461016a906001600160a01b031681565b6040516001600160a01b03909116815260200161012b565b6101476101903660046123f8565b6105f3565b61019d61075e565b60405161012b919061244f565b6101476101b83660046124c0565b610837565b6101c561091c565b005b6000546001600160a01b031661016a565b6101476101e6366004612281565b610930565b6101476101f936600461239c565b610b77565b61021161020c366004612281565b610cc5565b60405161012b9190612579565b61014761022c36600461239c565b610f49565b61014761023f36600461239c565b6110dc565b61028d610252366004612630565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161012b92919061268e565b6101476102a9366004612958565b611202565b6101c56102bc366004612a37565b611533565b80516020818301810180516001825292820191909301209152805481906102e790612a52565b80601f016020809104026020016040519081016040528092919081815260200182805461031390612a52565b80156103605780601f1061033557610100808354040283529160200191610360565b820191906000526020600020905b81548152906001019060200180831161034357829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161039390612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf90612a52565b801561040c5780601f106103e15761010080835404028352916020019161040c565b820191906000526020600020905b8154815290600101906020018083116103ef57829003601f168201915b50505050509080600301805461042190612a52565b80601f016020809104026020016040519081016040528092919081815260200182805461044d90612a52565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b50505050600483015460059093015491926001600160a01b031691905087565b60006104c461158a565b60006001600160a01b03166001846040516104df9190612a8c565b908152604051908190036020019020600101546001600160a01b031603610524578260405163c0bab25f60e01b815260040161051b9190612aa8565b60405180910390fd5b610530836000846115d0565b61057c5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c656400000000000000000000604482015260640161051b565b8160018460405161058d9190612a8c565b908152604051908190036020018120600501919091556105ae908490612a8c565b604051908190038120838252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a25060015b92915050565b60006105fd61158a565b8160018560405161060e9190612a8c565b908152602001604051809103902060050154101561066e5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b6564604482015260640161051b565b61067b84600284866115e7565b6106c75760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c65640000000000000000604482015260640161051b565b816001856040516106d89190612a8c565b908152602001604051809103902060050160008282546106f89190612ad1565b909155505060405161070b908590612a8c565b604080519182900382206001600160a01b038616835260208301859052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a25060019392505050565b60606003805480602002602001604051908101604052809291908181526020016000905b8282101561082e5783829060005260206000200180546107a190612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546107cd90612a52565b801561081a5780601f106107ef5761010080835404028352916020019161081a565b820191906000526020600020905b8154815290600101906020018083116107fd57829003601f168201915b505050505081526020019060010190610782565b50505050905090565b600061084161158a565b3063f272660b88888888888860006040519080825280602002602001820160405280156108ab57816020015b6108986040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161086d5790505b506040518863ffffffff1660e01b81526004016108ce9796959493929190612b70565b6020604051808303816000875af11580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190612cc7565b979650505050505050565b61092461158a565b61092e6000611903565b565b600061093a61158a565b60006001600160a01b03166001836040516109559190612a8c565b908152604051908190036020019020600101546001600160a01b031603610991578160405163c0bab25f60e01b815260040161051b9190612aa8565b60006001836040516109a39190612a8c565b90815260200160405180910390206005015411156109ef57816040517fb7d2c10a00000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b610aa1600183604051610a029190612a8c565b90815260200160405180910390206002018054610a1e90612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a90612a52565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050611960565b600182604051610ab19190612a8c565b9081526040519081900360200190206000610acc8282611f94565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055610afa600283016000611f94565b610b08600383016000611f94565b5060048101805473ffffffffffffffffffffffffffffffffffffffff191690556000600590910155604051610b3e908390612a8c565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000610b8161158a565b81600184604051610b929190612a8c565b9081526020016040518091039020600501541015610bf25760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b65640000604482015260640161051b565b610bfe836001846115d0565b610c4a5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c656400000000000000000000604482015260640161051b565b81600184604051610c5b9190612a8c565b90815260200160405180910390206005016000828254610c7b9190612ad1565b9091555050604051610c8e908490612a8c565b604051908190038120838252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee99906020016105e1565b6040805160e0810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c0810191909152600182604051610d0d9190612a8c565b90815260200160405180910390206040518060e0016040529081600082018054610d3690612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6290612a52565b8015610daf5780601f10610d8457610100808354040283529160200191610daf565b820191906000526020600020905b815481529060010190602001808311610d9257829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166004811115610dec57610dec612306565b6004811115610dfd57610dfd612306565b8152602001600282018054610e1190612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d90612a52565b8015610e8a5780601f10610e5f57610100808354040283529160200191610e8a565b820191906000526020600020905b815481529060010190602001808311610e6d57829003601f168201915b50505050508152602001600382018054610ea390612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecf90612a52565b8015610f1c5780601f10610ef157610100808354040283529160200191610f1c565b820191906000526020600020905b815481529060010190602001808311610eff57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260059091015460409091015292915050565b6000610f5361158a565b60006001600160a01b0316600184604051610f6e9190612a8c565b908152604051908190036020019020600101546001600160a01b031603610faa578260405163c0bab25f60e01b815260040161051b9190612aa8565b81600184604051610fbb9190612a8c565b90815260200160405180910390206005015410156110095782826040517fed579e6000000000000000000000000000000000000000000000000000000000815260040161051b929190612ce4565b6000611017846005856115d0565b905080156110a857826001856040516110309190612a8c565b908152602001604051809103902060050160008282546110509190612ad1565b9091555050604051611063908590612a8c565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e906020015b60405180910390a260019150506105ed565b836040517f58300fe700000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b60006110e661158a565b60006001600160a01b03166001846040516111019190612a8c565b908152604051908190036020019020600101546001600160a01b03160361113d578260405163c0bab25f60e01b815260040161051b9190612aa8565b600061114b846004856115d0565b905080156111ce57826001856040516111649190612a8c565b908152602001604051809103902060050160008282546111849190612d06565b9091555050604051611197908590612a8c565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001611096565b836040517f8244096a00000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b600061120c61158a565b60006001600160a01b03166001866040516112279190612a8c565b908152604051908190036020019020600101546001600160a01b03161461127c57846040517f67ab234400000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b6112868583611abe565b6002856040516112969190612a8c565b9081526040805160209281900383019020600360008181529190935220015460ff161561133a576112c8856003611bde565b61133a5760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e00000000606482015260840161051b565b6040518060e00160405280898152602001886001600160a01b0316815260200187600481111561136c5761136c612306565b8152602001868152602001858152602001846001600160a01b0316815260200160008152506001866040516113a19190612a8c565b908152604051908190036020019020815181906113be9082612d67565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600481111561142757611427612306565b0217905550606082015160028201906114409082612d67565b50608082015160038201906114559082612d67565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c090910151600590910155600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016114d18682612d67565b50846040516114e09190612a8c565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8989898760405161151d9493929190612e27565b60405180910390a2506001979650505050505050565b61153b61158a565b6001600160a01b03811661157e576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161051b565b61158781611903565b50565b6000546001600160a01b0316331461092e576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161051b565b60006115df84848460006115e7565b949350505050565b60006002856040516115f99190612a8c565b9081526020016040518091039020600085600581111561161b5761161b612306565b600581111561162c5761162c612306565b815260208101919091526040016000206003015460ff1661164f575060006115df565b60005b6002866040516116629190612a8c565b9081526020016040518091039020600086600581111561168457611684612306565b600581111561169557611695612306565b81526020810191909152604001600020600101548110156118f75760006002876040516116c29190612a8c565b908152602001604051809103902060008760058111156116e4576116e4612306565b60058111156116f5576116f5612306565b8152602001908152602001600020600101828154811061171757611717612e6b565b906000526020600020016040516020016117319190612e81565b604051602081830303815290604052805190602001209050600061184d8261184860028b6040516117629190612a8c565b908152602001604051809103902060008b600581111561178457611784612306565b600581111561179557611795612306565b815260200190815260200160002060020186815481106117b7576117b7612e6b565b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561183b57602002820191906000526020600020906000905b82829054906101000a900460ff16600681111561181957611819612306565b8152602060019283018181049485019490930390920291018084116117fa5790505b50505050508b898b611bf4565b611ece565b905060006001896040516118619190612a8c565b908152604051908190036020018120600101546001600160a01b031690611889908490612a8c565b6000604051808303816000865af19150503d80600081146118c6576040519150601f19603f3d011682016040523d82523d6000602084013e6118cb565b606091505b50509050806118e15760009450505050506115df565b50505080806118ef90612ef7565b915050611652565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b600354811015611aba57611a1c6003828154811061198357611983612e6b565b90600052602060002001805461199890612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546119c490612a52565b8015611a115780601f106119e657610100808354040283529160200191611a11565b820191906000526020600020905b8154815290600101906020018083116119f457829003601f168201915b505050505083611f6f565b15611aa85760038054611a3190600190612ad1565b81548110611a4157611a41612e6b565b9060005260206000200160038281548110611a5e57611a5e612e6b565b906000526020600020019081611a749190612f10565b506003805480611a8657611a86612feb565b600190038181906000526020600020016000611aa29190611f94565b90555050565b80611ab281612ef7565b915050611963565b5050565b60005b8151811015611bd957818181518110611adc57611adc612e6b565b6020026020010151600284604051611af49190612a8c565b90815260200160405180910390206000848481518110611b1657611b16612e6b565b6020026020010151600001516005811115611b3357611b33612306565b6005811115611b4457611b44612306565b8152602081019190915260400160002081518154829060ff19166001836005811115611b7257611b72612306565b02179055506020828101518051611b8f9260018501920190611fce565b5060408201518051611bab916002840191602090910190612024565b50606091909101516003909101805460ff191691151591909117905580611bd181612ef7565b915050611ac1565b505050565b6000611bed83836000806115e7565b9392505050565b60606000855167ffffffffffffffff811115611c1257611c126121a1565b604051908082528060200260200182016040528015611c4557816020015b6060815260200190600190039081611c305790505b50905060005b8651811015611ec4576005878281518110611c6857611c68612e6b565b60200260200101516006811115611c8157611c81612306565b03611cc35760408051306020820152015b604051602081830303815290604052828281518110611cb357611cb3612e6b565b6020026020010181905250611eb2565b6002878281518110611cd757611cd7612e6b565b60200260200101516006811115611cf057611cf0612306565b03611d065785604051602001611c929190612aa8565b6004878281518110611d1a57611d1a612e6b565b60200260200101516006811115611d3357611d33612306565b03611d4957604080516020810186905201611c92565b6003878281518110611d5d57611d5d612e6b565b60200260200101516006811115611d7657611d76612306565b03611db457600186604051611d8b9190612a8c565b908152604080519182900360209081018320600401546001600160a01b03169083015201611c92565b6000878281518110611dc857611dc8612e6b565b60200260200101516006811115611de157611de1612306565b03611e1f57600186604051611df69190612a8c565b908152604080519182900360209081018320600101546001600160a01b03169083015201611c92565b6006878281518110611e3357611e33612e6b565b60200260200101516006811115611e4c57611e4c612306565b03611e6a57604080516001600160a01b038716602082015201611c92565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f7274656400000000000000000000604482015260640161051b565b80611ebc81612ef7565b915050611c4b565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b8251811015611f685781838281518110611f2b57611f2b612e6b565b6020026020010151604051602001611f44929190613001565b60405160208183030381529060405291508080611f6090612ef7565b915050611f0f565b5092915050565b600081518351148015611bed5750508051602091820120825192909101919091201490565b508054611fa090612a52565b6000825580601f10611fb0575050565b601f016020900490600052602060002090810190611587919061207d565b828054828255906000526020600020908101928215612014579160200282015b8281111561201457825182906120049082612d67565b5091602001919060010190611fee565b50612020929150612092565b5090565b828054828255906000526020600020908101928215612071579160200282015b8281111561207157825180516120619184916020909101906120af565b5091602001919060010190612044565b5061202092915061215f565b5b80821115612020576000815560010161207e565b808211156120205760006120a68282611f94565b50600101612092565b82805482825590600052602060002090601f016020900481019282156121535791602002820160005b8382111561212457835183826101000a81548160ff0219169083600681111561210357612103612306565b021790555092602001926001016020816000010492830192600103026120d8565b80156121515782816101000a81549060ff0219169055600101602081600001049283019260010302612124565b505b5061202092915061207d565b80821115612020576000612173828261217c565b5060010161215f565b50805460008255601f016020900490600052602060002090810190611587919061207d565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156121da576121da6121a1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612209576122096121a1565b604052919050565b600082601f83011261222257600080fd5b813567ffffffffffffffff81111561223c5761223c6121a1565b61224f601f8201601f19166020016121e0565b81815284602083860101111561226457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561229357600080fd5b813567ffffffffffffffff8111156122aa57600080fd5b6115df84828501612211565b60005b838110156122d15781810151838201526020016122b9565b50506000910152565b600081518084526122f28160208601602086016122b6565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6005811061232c5761232c612306565b9052565b60e08152600061234360e083018a6122da565b6001600160a01b03808a166020850152612360604085018a61231c565b838203606085015261237282896122da565b9150838203608085015261238682886122da565b951660a0840152505060c0015295945050505050565b600080604083850312156123af57600080fd5b823567ffffffffffffffff8111156123c657600080fd5b6123d285828601612211565b95602094909401359450505050565b80356001600160a01b0381168114610b7257600080fd5b60008060006060848603121561240d57600080fd5b833567ffffffffffffffff81111561242457600080fd5b61243086828701612211565b93505061243f602085016123e1565b9150604084013590509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156124a457603f198886030184526124928583516122da565b94509285019290850190600101612476565b5092979650505050505050565b803560058110610b7257600080fd5b60008060008060008060c087890312156124d957600080fd5b863567ffffffffffffffff808211156124f157600080fd5b6124fd8a838b01612211565b975061250b60208a016123e1565b965061251960408a016124b1565b9550606089013591508082111561252f57600080fd5b61253b8a838b01612211565b9450608089013591508082111561255157600080fd5b5061255e89828a01612211565b92505061256d60a088016123e1565b90509295509295509295565b602081526000825160e060208401526125966101008401826122da565b905060208401516001600160a01b038082166040860152604086015191506125c1606086018361231c565b60608601519150601f19808685030160808701526125df84846122da565b935060808701519250808685030160a0870152506125fd83836122da565b92508060a08701511660c0860152505060c084015160e08401528091505092915050565b803560068110610b7257600080fd5b6000806040838503121561264357600080fd5b823567ffffffffffffffff81111561265a57600080fd5b61266685828601612211565b92505061267560208401612621565b90509250929050565b6006811061232c5761232c612306565b6040810161269c828561267e565b82151560208301529392505050565b600067ffffffffffffffff8211156126c5576126c56121a1565b5060051b60200190565b600082601f8301126126e057600080fd5b813560206126f56126f0836126ab565b6121e0565b828152600592831b850182019282820191908785111561271457600080fd5b8387015b858110156127b957803567ffffffffffffffff8111156127385760008081fd5b8801603f81018a1361274a5760008081fd5b85810135604061275c6126f0836126ab565b82815291851b8301810191888101908d8411156127795760008081fd5b938201935b838510156127a85784359250600783106127985760008081fd5b828252938901939089019061277e565b885250505093850193508401612718565b5090979650505050505050565b801515811461158757600080fd5b8035610b72816127c6565b600082601f8301126127f057600080fd5b6127fd6126f083356126ab565b82358082526020808301929160051b8501018581111561281c57600080fd5b602085015b8181101561294d5767ffffffffffffffff808235111561284057600080fd5b813587016080818a03601f1901121561285857600080fd5b6128606121b7565b61286c60208301612621565b815260408201358381111561288057600080fd5b8201603f81018b1361289157600080fd5b60208101356128a26126f0826126ab565b81815260059190911b82016040019060208101908d8311156128c357600080fd5b604084015b838110156128fc5787813511156128de57600080fd5b6128ee8f60408335880101612211565b8352602092830192016128c8565b50602085015250505060608201358381111561291757600080fd5b6129268b6020838601016126cf565b604083015250612938608083016127d4565b60608201528652505060209384019301612821565b509095945050505050565b600080600080600080600060e0888a03121561297357600080fd5b873567ffffffffffffffff8082111561298b57600080fd5b6129978b838c01612211565b98506129a560208b016123e1565b97506129b360408b016124b1565b965060608a01359150808211156129c957600080fd5b6129d58b838c01612211565b955060808a01359150808211156129eb57600080fd5b6129f78b838c01612211565b9450612a0560a08b016123e1565b935060c08a0135915080821115612a1b57600080fd5b50612a288a828b016127df565b91505092959891949750929550565b600060208284031215612a4957600080fd5b611bed826123e1565b600181811c90821680612a6657607f821691505b602082108103612a8657634e487b7160e01b600052602260045260246000fd5b50919050565b60008251612a9e8184602087016122b6565b9190910192915050565b602081526000611bed60208301846122da565b634e487b7160e01b600052601160045260246000fd5b818103818111156105ed576105ed612abb565b600081518084526020808501808196508360051b810191508286016000805b86811015612b62578385038a52825180518087529087019087870190845b81811015612b4d57835160078110612b3b57612b3b612306565b83529289019291890191600101612b21565b50509a87019a95505091850191600101612b03565b509298975050505050505050565b60e081526000612b8360e083018a6122da565b60206001600160a01b03808b16828601526040612ba28187018c61231c565b606086850381880152612bb5858c6122da565b9450608087860381890152612bca868c6122da565b955060a0848b16818a015288870360c08a015286945089518088528688019550868160051b890101878c0160005b83811015612cad57601f198b84030189528151868401612c1985835161267e565b818c0151858d01899052805191829052600582901b8601880191908d01908887019060005b81811015612c6c57609f19898603018352612c5a8585516122da565b9450928f0192918f0191600101612c3e565b50505050898201518582038b870152612c858282612ae4565b928a0151801515878c0152929150612c9a9050565b998b019993505090890190600101612bf8565b505080995050505050505050505098975050505050505050565b600060208284031215612cd957600080fd5b8151611bed816127c6565b604081526000612cf760408301856122da565b90508260208301529392505050565b808201808211156105ed576105ed612abb565b601f821115611bd957600081815260208120601f850160051c81016020861015612d405750805b601f850160051c820191505b81811015612d5f57828155600101612d4c565b505050505050565b815167ffffffffffffffff811115612d8157612d816121a1565b612d9581612d8f8454612a52565b84612d19565b602080601f831160018114612dca5760008415612db25750858301515b600019600386901b1c1916600185901b178555612d5f565b600085815260208120601f198616915b82811015612df957888601518255948401946001909101908401612dda565b5085821015612e175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608081526000612e3a60808301876122da565b90506001600160a01b038086166020840152612e59604084018661231c565b80841660608401525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000808354612e8f81612a52565b60018281168015612ea75760018114612ebc57612eeb565b60ff1984168752821515830287019450612eeb565b8760005260208060002060005b85811015612ee25781548a820152908401908201612ec9565b50505082870194505b50929695505050505050565b600060018201612f0957612f09612abb565b5060010190565b818103612f1b575050565b612f258254612a52565b67ffffffffffffffff811115612f3d57612f3d6121a1565b612f4b81612d8f8454612a52565b6000601f821160018114612f7f5760008315612f675750848201545b600019600385901b1c1916600184901b178455612fe4565b600085815260209020601f19841690600086815260209020845b83811015612fb95782860154825560019586019590910190602001612f99565b5085831015612fd75781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b600083516130138184602088016122b6565b8351908301906130278183602088016122b6565b0194935050505056fea264697066735822122061f8f07054ee3a2d9a71872f7ff8a9dc2f86a362579cf974a5c1acbbce2c412f64736f6c63430008140033","sourceMap":"2711:14214:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2838:40;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;8998:419;;;;;;:::i;:::-;;:::i;:::-;;;4075:14:7;;4068:22;4050:41;;4038:2;4023:18;8998:419:6;3910:187:7;3188:29:6;;;;;-1:-1:-1;;;;;3188:29:6;;;;;;-1:-1:-1;;;;;4266:55:7;;;4248:74;;4236:2;4221:18;3188:29:6;4102:226:7;10410:461:6;;;;;;:::i;:::-;;:::i;10965:94::-;;;:::i;:::-;;;;;;;:::i;5937:335::-;;;;;;:::i;:::-;;:::i;2293:101:0:-;;;:::i;:::-;;1638:85;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;1638:85;;6516:431:6;;;;;;:::i;:::-;;:::i;9675:381::-;;;;;;:::i;:::-;;:::i;11643:121::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8030:709::-;;;;;;:::i;:::-;;:::i;7205:560::-;;;;;;:::i;:::-;;:::i;2963:94::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2963:94:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4736:1007::-;;;;;;:::i;:::-;;:::i;2543:215:0:-;;;;;;:::i;:::-;;:::i;2838:40:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2838:40:6;;;;;;;;;;;-1:-1:-1;;;;;2838:40:6;;;-1:-1:-1;;;2838:40:6;;;;;;-1:-1:-1;2838:40:6;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2838:40:6;;;;;;;;;;;-1:-1:-1;;;;;2838:40:6;;;-1:-1:-1;2838:40:6;:::o;8998:419::-;9079:12;1531:13:0;:11;:13::i;:::-;9149:1:6::1;-1:-1:-1::0;;;;;9106:45:6::1;:6;9113:7;9106:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;9106:31:6::1;:45:::0;9103:107:::1;;9191:7;9173:26;;-1:-1:-1::0;;;9173:26:6::1;;;;;;;;:::i;:::-;;;;;;;;9103:107;9236:47;9245:7;9254:20;9276:6;9236:8;:47::i;:::-;9228:83;;;::::0;-1:-1:-1;;;9228:83:6;;16514:2:7;9228:83:6::1;::::0;::::1;16496:21:7::0;16553:2;16533:18;;;16526:30;16592:24;16572:18;;;16565:52;16634:18;;9228:83:6::1;16312:346:7::0;9228:83:6::1;9347:6;9322;9329:7;9322:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:22:::1;;:31:::0;;;;9368:21:::1;::::0;9373:7;;9368:21:::1;:::i;:::-;;::::0;;;;::::1;::::0;;16809:25:7;;;9368:21:6;::::1;::::0;16797:2:7;16782:18;9368:21:6::1;;;;;;;;-1:-1:-1::0;9406:4:6::1;1554:1:0;8998:419:6::0;;;;:::o;10410:461::-;10519:12;1531:13:0;:11;:13::i;:::-;10577:6:6::1;10551;10558:7;10551:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;10543:77;;;::::0;-1:-1:-1;;;10543:77:6;;17047:2:7;10543:77:6::1;::::0;::::1;17029:21:7::0;;;17066:18;;;17059:30;17125:34;17105:18;;;17098:62;17177:18;;10543:77:6::1;16845:356:7::0;10543:77:6::1;10639:67;10648:7;10657:22;10681:6;10689:16;10639:8;:67::i;:::-;10631:104;;;::::0;-1:-1:-1;;;10631:104:6;;17408:2:7;10631:104:6::1;::::0;::::1;17390:21:7::0;17447:2;17427:18;;;17420:30;17486:26;17466:18;;;17459:54;17530:18;;10631:104:6::1;17206:348:7::0;10631:104:6::1;10772:6;10746;10753:7;10746:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10802:41:6::1;::::0;::::1;::::0;10809:7;;10802:41:::1;:::i;:::-;;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;18073:55:7;;18055:74;;18160:2;18145:18;;18138:34;;;10802:41:6;::::1;::::0;18028:18:7;10802:41:6::1;;;;;;;-1:-1:-1::0;10860:4:6::1;10410:461:::0;;;;;:::o;10965:94::-;11015:15;11049:3;11042:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10965:94;:::o;5937:335::-;6119:16;1531:13:0;:11;:13::i;:::-;6154:4:6::1;:9;6164:12:::0;6178:15;6195:9;6206:7;6215:11;6228:5;6262:1:::1;6235:29;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6235:29:6::1;;;;;;;;;;;;;;;;;6154:111;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6147:118:::0;5937:335;-1:-1:-1;;;;;;;5937:335:6:o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;6516:431:6:-;6583:12;1531:13:0;:11;:13::i;:::-;6653:1:6::1;-1:-1:-1::0;;;;;6610:45:6::1;:6;6617:7;6610:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;6610:31:6::1;:45:::0;6607:108:::1;;6696:7;6678:26;;-1:-1:-1::0;;;6678:26:6::1;;;;;;;;:::i;6607:108::-;6752:1;6727:6;6734:7;6727:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;6724:83;;;6788:7;6776:20;;;;;;;;;;;:::i;6724:83::-;6816:40;6832:6;6839:7;6832:15;;;;;;:::i;:::-;;;;;;;;;;;;;:23;;6816:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:40::i;:::-;6873:6;6880:7;6873:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;::::1;6866:22;6873:15:::0;;6866:22:::1;:::i;:::-;;::::0;::::1;::::0;;-1:-1:-1;;6866:22:6;;;::::1;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;6866:22:6::1;::::0;::::1;::::0;;-1:-1:-1;;6866:22:6::1;::::0;;::::1;;::::0;;::::1;::::0;6904:15:::1;::::0;::::1;::::0;6911:7;;6904:15:::1;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;6936:4:6::1;1554:1:0;6516:431:6::0;;;:::o;9675:381::-;9756:12;1531:13:0;:11;:13::i;:::-;9814:6:6::1;9788;9795:7;9788:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;9780:75;;;::::0;-1:-1:-1;;;9780:75:6;;22663:2:7;9780:75:6::1;::::0;::::1;22645:21:7::0;22702:2;22682:18;;;22675:30;22741:32;22721:18;;;22714:60;22791:18;;9780:75:6::1;22461:354:7::0;9780:75:6::1;9874:47;9883:7;9892:20;9914:6;9874:8;:47::i;:::-;9866:82;;;::::0;-1:-1:-1;;;9866:82:6;;23022:2:7;9866:82:6::1;::::0;::::1;23004:21:7::0;23061:2;23041:18;;;23034:30;23100:24;23080:18;;;23073:52;23142:18;;9866:82:6::1;22820:346:7::0;9866:82:6::1;9985:6;9959;9966:7;9959:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10007:21:6::1;::::0;::::1;::::0;10012:7;;10007:21:::1;:::i;:::-;;::::0;;;;::::1;::::0;;16809:25:7;;;10007:21:6;::::1;::::0;16797:2:7;16782:18;10007:21:6::1;16663:177:7::0;11643:121:6;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11742:6:6;11749:7;11742:15;;;;;;:::i;:::-;;;;;;;;;;;;;11735:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11735:22:6;;;-1:-1:-1;;11735:22:6;;;;-1:-1:-1;;;;;11735:22:6;;;;;;;;;;;-1:-1:-1;;;11735:22:6;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11735:22:6;;;-1:-1:-1;;11735:22:6;;;;-1:-1:-1;;;;;11735:22:6;;;;;;;;;;;;;;;;11643:121;-1:-1:-1;;11643:121:6:o;8030:709::-;8113:12;1531:13:0;:11;:13::i;:::-;8193:1:6::1;-1:-1:-1::0;;;;;8150:45:6::1;:6;8157:7;8150:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;8150:31:6::1;:45:::0;8147:107:::1;;8235:7;8217:26;;-1:-1:-1::0;;;8217:26:6::1;;;;;;;;:::i;8147:107::-;8292:6;8267;8274:7;8267:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:31;8264:108;;;8345:7;8354:6;8321:40;;;;;;;;;;;;:::i;8264:108::-;8382:18;8403:49;8412:7;8421:22;8445:6;8403:8;:49::i;:::-;8382:70;;8466:13;8463:227;;;8606:6;8580;8587:7;8580:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8631:23:6::1;::::0;::::1;::::0;8638:7;;8631:23:::1;:::i;:::-;;::::0;;;;::::1;::::0;;16809:25:7;;;8631:23:6;::::1;::::0;16797:2:7;16782:18;8631:23:6::1;;;;;;;;8675:4;8668:11;;;;;8463:227;8724:7;8707:25;;;;;;;;;;;:::i;7205:560::-:0;7286:12;1531:13:0;:11;:13::i;:::-;7356:1:6::1;-1:-1:-1::0;;;;;7313:45:6::1;:6;7320:7;7313:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;7313:31:6::1;:45:::0;7310:107:::1;;7398:7;7380:26;;-1:-1:-1::0;;;7380:26:6::1;;;;;;;;:::i;7310:107::-;7427:16;7446:47;7455:7;7464:20;7486:6;7446:8;:47::i;:::-;7427:66;;7507:11;7504:214;;;7636:6;7610;7617:7;7610:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;7661:21:6::1;::::0;::::1;::::0;7666:7;;7661:21:::1;:::i;:::-;;::::0;;;;::::1;::::0;;16809:25:7;;;7661:21:6;::::1;::::0;16797:2:7;16782:18;7661:21:6::1;16663:177:7::0;7504:214:6::1;7750:7;7735:23;;;;;;;;;;;:::i;4736:1007::-:0;4962:16;1531:13:0;:11;:13::i;:::-;5036:1:6::1;-1:-1:-1::0;;;;;4993:45:6::1;:6;5000:7;4993:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;4993:31:6::1;:45;4990:110;;5081:7;5061:28;;;;;;;;;;;:::i;4990:110::-;5205:53;5236:7;5245:12;5205:30;:53::i;:::-;5272:18;5291:7;5272:27;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;5300:30:::1;5272:59;::::0;;;;;;;;:69:::1;::::0;::::1;;5269:221;;;5365:49;5374:7;5383:30;5365:8;:49::i;:::-;5357:122;;;::::0;-1:-1:-1;;;5357:122:6;;23799:2:7;5357:122:6::1;::::0;::::1;23781:21:7::0;23838:2;23818:18;;;23811:30;23877:34;23857:18;;;23850:62;23948:30;23928:18;;;23921:58;23996:19;;5357:122:6::1;23597:424:7::0;5357:122:6::1;5518:79;;;;;;;;5524:12;5518:79;;;;5538:15;-1:-1:-1::0;;;;;5518:79:6::1;;;;;5555:9;5518:79;;;;;;;;:::i;:::-;;;;;5566:7;5518:79;;;;5575:11;5518:79;;;;5588:5;-1:-1:-1::0;;;;;5518:79:6::1;;;;;5595:1;5518:79;;::::0;5500:6:::1;5507:7;5500:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:97;;:15;;:97:::1;::::0;:15;:97:::1;:::i;:::-;-1:-1:-1::0;5500:97:6::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;5500:97:6;;::::1;-1:-1:-1::0;;5500:97:6;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;5500:97:6;;-1:-1:-1;;;5500:97:6;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;5500:97:6::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;5500:97:6::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;5500:97:6::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;5500:97:6::1;-1:-1:-1::0;;;;;5500:97:6;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;5612:3:::1;:17:::0;;-1:-1:-1;5612:17:6;::::1;::::0;;-1:-1:-1;5612:17:6;;;;;::::1;;5621:7:::0;5612:17;::::1;:::i;:::-;;5658:7;5653:62;;;;;;:::i;:::-;;;;;;;;;5667:12;5681:15;5698:9;5709:5;5653:62;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;5732:4:6::1;4736:1007:::0;;;;;;;;;:::o;2543:215:0:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:0;::::1;2623:91;;2672:31;::::0;::::1;::::0;;2700:1:::1;2672:31;::::0;::::1;4248:74:7::0;4221:18;;2672:31:0::1;4102:226:7::0;2623:91:0::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;735:10:1;1855:23:0;1851:101;;1901:40;;;;;735:10:1;1901:40:0;;;4248:74:7;4221:18;;1901:40:0;4102:226:7;12997:200:6;13105:12;13136:54;13145:7;13154:15;13171:6;13187:1;13136:8;:54::i;:::-;13129:61;12997:200;-1:-1:-1;;;;12997:200:6:o;13855:876::-;13981:4;14002:18;14021:7;14002:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;14030:15;14002:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;14002:44:6;:54;;;;;13997:98;;-1:-1:-1;14079:5:6;14072:12;;13997:98;14110:6;14105:598;14126:18;14145:7;14126:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;14154:15;14126:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;14126:44:6;:63;;:70;14122:74;;14105:598;;;14217:23;14277:18;14296:7;14277:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;14305:15;14277:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:63;;14341:1;14277:66;;;;;;;;:::i;:::-;;;;;;;;14260:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;14250:95;;;;;;14217:129;;14361:26;14390:137;14410:16;14428:98;14441:18;14460:7;14441:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;14469:15;14441:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:54;;14496:1;14441:57;;;;;;;;:::i;:::-;;;;;;;;14428:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14500:7;14509:8;14519:6;14428:12;:98::i;:::-;14390:19;:137::i;:::-;14361:166;;14543:16;14565:6;14572:7;14565:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:31;;;-1:-1:-1;;;;;14565:31:6;;:51;;14602:13;;14565:51;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14542:74;;;14635:11;14630:63;;14673:5;14666:12;;;;;;;;14630:63;14203:500;;;14198:3;;;;;:::i;:::-;;;;14105:598;;;-1:-1:-1;14720:4:6;;13855:876;-1:-1:-1;;;;;13855:876:6:o;2912:187:0:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;11186:276:6:-;11254:9;11249:207;11273:3;:10;11269:14;;11249:207;;;11308:25;11322:3;11326:1;11322:6;;;;;;;;:::i;:::-;;;;;;;;11308:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11330:2;11308:13;:25::i;:::-;11304:142;;;11362:3;11366:10;;:14;;11379:1;;11366:14;:::i;:::-;11362:19;;;;;;;;:::i;:::-;;;;;;;;11353:3;11357:1;11353:6;;;;;;;;:::i;:::-;;;;;;;;:28;;;;;;:::i;:::-;;11399:3;:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;11249:207;11186:276;:::o;11304:142::-;11285:3;;;;:::i;:::-;;;;11249:207;;;;11186:276;:::o;12008:281::-;12138:6;12134:149;12154:12;:19;12150:1;:23;12134:149;;;12257:12;12270:1;12257:15;;;;;;;;:::i;:::-;;;;;;;12194:18;12213:7;12194:27;;;;;;:::i;:::-;;;;;;;;;;;;;:60;12222:12;12235:1;12222:15;;;;;;;;:::i;:::-;;;;;;;:31;;;12194:60;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;12194:60:6;:78;;;;:60;;-1:-1:-1;;12194:78:6;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;12194:78:6;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12194:78:6;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12194:78:6;;;;;;;;;;;;-1:-1:-1;;12194:78:6;;;;;;;;;;12175:3;;;;:::i;:::-;;;;12134:149;;;;12008:281;;:::o;12516:180::-;12609:12;12640:49;12649:7;12658:15;12675:1;12686;12640:8;:49::i;:::-;12633:56;12516:180;-1:-1:-1;;;12516:180:6:o;15795:1128::-;15926:14;15951:28;15994:9;:16;15982:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15951:60;;16026:6;16021:866;16042:9;:16;16038:1;:20;16021:866;;;16099:14;16083:9;16093:1;16083:12;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;:::i;:::-;;16079:798;;16152:25;;;16171:4;16152:25;;;4248:74:7;4221:18;16152:25:6;;;;;;;;;;;;;16133:13;16147:1;16133:16;;;;;;;;:::i;:::-;;;;;;:44;;;;16079:798;;;16218:15;16202:9;16212:1;16202:12;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;:::i;:::-;;16198:679;;16283:7;16272:19;;;;;;;;:::i;16198:679::-;16332:14;16316:9;16326:1;16316:12;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;:::i;:::-;;16312:565;;16385:18;;;;;;16809:25:7;;;16782:18;16385::6;16663:177:7;16312:565:6;16444:13;16428:9;16438:1;16428:12;;;;;;;;:::i;:::-;;;;;;;:29;;;;;;;;:::i;:::-;;16424:453;;16507:6;16514:7;16507:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:21;;;-1:-1:-1;;;;;16507:21:6;16496:33;;;4248:74:7;4221:18;16496:33:6;4102:226:7;16424:453:6;16570:23;16554:9;16564:1;16554:12;;;;;;;;:::i;:::-;;;;;;;:39;;;;;;;;:::i;:::-;;16550:327;;16643:6;16650:7;16643:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:31;;;-1:-1:-1;;;;;16643:31:6;16632:43;;;4248:74:7;4221:18;16632:43:6;4102:226:7;16550:327:6;16716:16;16700:9;16710:1;16700:12;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;:::i;:::-;;16696:181;;16771:20;;;-1:-1:-1;;;;;4266:55:7;;16771:20:6;;;4248:74:7;4221:18;16771:20:6;4102:226:7;16696:181:6;16830:32;;-1:-1:-1;;;16830:32:6;;30079:2:7;16830:32:6;;;30061:21:7;30118:2;30098:18;;;30091:30;30157:24;30137:18;;;30130:52;30199:18;;16830:32:6;29877:346:7;16696:181:6;16060:3;;;;:::i;:::-;;;;16021:866;;;-1:-1:-1;16903:13:6;15795:1128;-1:-1:-1;;;;;15795:1128:6:o;15001:382::-;15162:34;;;30379:66:7;30367:79;;15162:34:6;;;30355:92:7;15162:34:6;;;;;;;;;30463:11:7;;;;15162:34:6;;;15211:9;15206:141;15230:13;:20;15226:1;:24;15206:141;;;15304:13;15319;15333:1;15319:16;;;;;;;;:::i;:::-;;;;;;;15287:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15271:65;;15252:3;;;;;:::i;:::-;;;;15206:141;;;;15001:382;;;;:::o;2914:182:2:-;2986:4;3034:1;3028:15;3015:1;3009:15;:34;:80;;;;-1:-1:-1;;3070:19:2;;;;;;;3047;;;;;;;;;;:42;;2914:182::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:184:7:-;-1:-1:-1;;;63:1:7;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:253;275:2;269:9;317:4;305:17;;352:18;337:34;;373:22;;;334:62;331:88;;;399:18;;:::i;:::-;435:2;428:22;203:253;:::o;461:275::-;532:2;526:9;597:2;578:13;;-1:-1:-1;;574:27:7;562:40;;632:18;617:34;;653:22;;;614:62;611:88;;;679:18;;:::i;:::-;715:2;708:22;461:275;;-1:-1:-1;461:275:7:o;741:531::-;784:5;837:3;830:4;822:6;818:17;814:27;804:55;;855:1;852;845:12;804:55;891:6;878:20;917:18;913:2;910:26;907:52;;;939:18;;:::i;:::-;983:55;1026:2;1007:13;;-1:-1:-1;;1003:27:7;1032:4;999:38;983:55;:::i;:::-;1063:2;1054:7;1047:19;1109:3;1102:4;1097:2;1089:6;1085:15;1081:26;1078:35;1075:55;;;1126:1;1123;1116:12;1075:55;1191:2;1184:4;1176:6;1172:17;1165:4;1156:7;1152:18;1139:55;1239:1;1214:16;;;1232:4;1210:27;1203:38;;;;1218:7;741:531;-1:-1:-1;;;741:531:7:o;1277:322::-;1346:6;1399:2;1387:9;1378:7;1374:23;1370:32;1367:52;;;1415:1;1412;1405:12;1367:52;1455:9;1442:23;1488:18;1480:6;1477:30;1474:50;;;1520:1;1517;1510:12;1474:50;1543;1585:7;1576:6;1565:9;1561:22;1543:50;:::i;1604:250::-;1689:1;1699:113;1713:6;1710:1;1707:13;1699:113;;;1789:11;;;1783:18;1770:11;;;1763:39;1735:2;1728:10;1699:113;;;-1:-1:-1;;1846:1:7;1828:16;;1821:27;1604:250::o;1859:271::-;1901:3;1939:5;1933:12;1966:6;1961:3;1954:19;1982:76;2051:6;2044:4;2039:3;2035:14;2028:4;2021:5;2017:16;1982:76;:::i;:::-;2112:2;2091:15;-1:-1:-1;;2087:29:7;2078:39;;;;2119:4;2074:50;;1859:271;-1:-1:-1;;1859:271:7:o;2135:184::-;-1:-1:-1;;;2184:1:7;2177:88;2284:4;2281:1;2274:15;2308:4;2305:1;2298:15;2324:140;2405:1;2398:5;2395:12;2385:46;;2411:18;;:::i;:::-;2440;;2324:140::o;2469:945::-;2838:3;2827:9;2820:22;2801:4;2865:46;2906:3;2895:9;2891:19;2883:6;2865:46;:::i;:::-;-1:-1:-1;;;;;3020:2:7;3012:6;3008:15;3003:2;2992:9;2988:18;2981:43;3033:53;3082:2;3071:9;3067:18;3059:6;3033:53;:::i;:::-;3134:9;3126:6;3122:22;3117:2;3106:9;3102:18;3095:50;3168:33;3194:6;3186;3168:33;:::i;:::-;3154:47;;3250:9;3242:6;3238:22;3232:3;3221:9;3217:19;3210:51;3278:33;3304:6;3296;3278:33;:::i;:::-;3348:15;;3342:3;3327:19;;3320:44;-1:-1:-1;;3395:3:7;3380:19;3373:35;3270:41;2469:945;-1:-1:-1;;;;;2469:945:7:o;3419:390::-;3497:6;3505;3558:2;3546:9;3537:7;3533:23;3529:32;3526:52;;;3574:1;3571;3564:12;3526:52;3614:9;3601:23;3647:18;3639:6;3636:30;3633:50;;;3679:1;3676;3669:12;3633:50;3702;3744:7;3735:6;3724:9;3720:22;3702:50;:::i;:::-;3692:60;3799:2;3784:18;;;;3771:32;;-1:-1:-1;;;;3419:390:7:o;4333:196::-;4401:20;;-1:-1:-1;;;;;4450:54:7;;4440:65;;4430:93;;4519:1;4516;4509:12;4534:464;4621:6;4629;4637;4690:2;4678:9;4669:7;4665:23;4661:32;4658:52;;;4706:1;4703;4696:12;4658:52;4746:9;4733:23;4779:18;4771:6;4768:30;4765:50;;;4811:1;4808;4801:12;4765:50;4834;4876:7;4867:6;4856:9;4852:22;4834:50;:::i;:::-;4824:60;;;4903:38;4937:2;4926:9;4922:18;4903:38;:::i;:::-;4893:48;;4988:2;4977:9;4973:18;4960:32;4950:42;;4534:464;;;;;:::o;5003:803::-;5165:4;5194:2;5234;5223:9;5219:18;5264:2;5253:9;5246:21;5287:6;5322;5316:13;5353:6;5345;5338:22;5391:2;5380:9;5376:18;5369:25;;5453:2;5443:6;5440:1;5436:14;5425:9;5421:30;5417:39;5403:53;;5491:2;5483:6;5479:15;5512:1;5522:255;5536:6;5533:1;5530:13;5522:255;;;5629:2;5625:7;5613:9;5605:6;5601:22;5597:36;5592:3;5585:49;5657:40;5690:6;5681;5675:13;5657:40;:::i;:::-;5647:50;-1:-1:-1;5755:12:7;;;;5720:15;;;;5558:1;5551:9;5522:255;;;-1:-1:-1;5794:6:7;;5003:803;-1:-1:-1;;;;;;;5003:803:7:o;5811:150::-;5886:20;;5935:1;5925:12;;5915:40;;5951:1;5948;5941:12;5966:989;6114:6;6122;6130;6138;6146;6154;6207:3;6195:9;6186:7;6182:23;6178:33;6175:53;;;6224:1;6221;6214:12;6175:53;6264:9;6251:23;6293:18;6334:2;6326:6;6323:14;6320:34;;;6350:1;6347;6340:12;6320:34;6373:50;6415:7;6406:6;6395:9;6391:22;6373:50;:::i;:::-;6363:60;;6442:38;6476:2;6465:9;6461:18;6442:38;:::i;:::-;6432:48;;6499:45;6540:2;6529:9;6525:18;6499:45;:::i;:::-;6489:55;;6597:2;6586:9;6582:18;6569:32;6553:48;;6626:2;6616:8;6613:16;6610:36;;;6642:1;6639;6632:12;6610:36;6665:52;6709:7;6698:8;6687:9;6683:24;6665:52;:::i;:::-;6655:62;;6770:3;6759:9;6755:19;6742:33;6726:49;;6800:2;6790:8;6787:16;6784:36;;;6816:1;6813;6806:12;6784:36;;6839:52;6883:7;6872:8;6861:9;6857:24;6839:52;:::i;:::-;6829:62;;;6910:39;6944:3;6933:9;6929:19;6910:39;:::i;:::-;6900:49;;5966:989;;;;;;;;:::o;6960:1193::-;7135:2;7124:9;7117:21;7098:4;7173:6;7167:13;7216:4;7211:2;7200:9;7196:18;7189:32;7244:52;7291:3;7280:9;7276:19;7262:12;7244:52;:::i;:::-;7230:66;;7345:2;7337:6;7333:15;7327:22;-1:-1:-1;;;;;7466:2:7;7450:14;7446:23;7441:2;7430:9;7426:18;7419:51;7519:2;7511:6;7507:15;7501:22;7479:44;;7532:61;7589:2;7578:9;7574:18;7558:14;7532:61;:::i;:::-;7642:2;7634:6;7630:15;7624:22;7602:44;;7669:2;7665:7;7737:2;7725:9;7717:6;7713:22;7709:31;7703:3;7692:9;7688:19;7681:60;7764:41;7798:6;7782:14;7764:41;:::i;:::-;7750:55;;7854:3;7846:6;7842:16;7836:23;7814:45;;7924:2;7912:9;7904:6;7900:22;7896:31;7890:3;7879:9;7875:19;7868:60;;7951:41;7985:6;7969:14;7951:41;:::i;:::-;7937:55;;8058:2;8051:3;8043:6;8039:16;8033:23;8029:32;8023:3;8012:9;8008:19;8001:61;;;8118:3;8110:6;8106:16;8100:23;8093:4;8082:9;8078:20;8071:53;8141:6;8133:14;;;6960:1193;;;;:::o;8158:156::-;8239:20;;8288:1;8278:12;;8268:40;;8304:1;8301;8294:12;8319:429;8417:6;8425;8478:2;8466:9;8457:7;8453:23;8449:32;8446:52;;;8494:1;8491;8484:12;8446:52;8534:9;8521:23;8567:18;8559:6;8556:30;8553:50;;;8599:1;8596;8589:12;8553:50;8622;8664:7;8655:6;8644:9;8640:22;8622:50;:::i;:::-;8612:60;;;8691:51;8738:2;8727:9;8723:18;8691:51;:::i;:::-;8681:61;;8319:429;;;;;:::o;8753:146::-;8840:1;8833:5;8830:12;8820:46;;8846:18;;:::i;8904:301::-;9078:2;9063:18;;9090:50;9067:9;9122:6;9090:50;:::i;:::-;9190:6;9183:14;9176:22;9171:2;9160:9;9156:18;9149:50;8904:301;;;;;:::o;9210:203::-;9290:4;9323:18;9315:6;9312:30;9309:56;;;9345:18;;:::i;:::-;-1:-1:-1;9390:1:7;9386:14;9402:4;9382:25;;9210:203::o;9418:1931::-;9487:5;9540:3;9533:4;9525:6;9521:17;9517:27;9507:55;;9558:1;9555;9548:12;9507:55;9594:6;9581:20;9620:4;9644:80;9660:63;9720:2;9660:63;:::i;:::-;9644:80;:::i;:::-;9758:15;;;9820:1;9860:11;;;9848:24;;9844:33;;;9789:12;;;;9746:3;9889:15;;;9886:35;;;9917:1;9914;9907:12;9886:35;9953:2;9945:6;9941:15;9965:1355;9981:6;9976:3;9973:15;9965:1355;;;10067:3;10054:17;10103:18;10090:11;10087:35;10084:125;;;10163:1;10192:2;10188;10181:14;10084:125;10232:24;;10291:2;10283:11;;10279:21;-1:-1:-1;10269:119:7;;10342:1;10371:2;10367;10360:14;10269:119;10432:2;10428;10424:11;10411:25;10459:2;10487:80;10503:63;10563:2;10503:63;:::i;10487:80::-;10611:17;;;10705:11;;;10697:20;;10693:29;;;10650:14;;;;10738:17;;;10735:107;;;10796:1;10825:2;10821;10814:14;10735:107;10868:11;;;;10892:355;10910:8;10903:5;10900:19;10892:355;;;11004:5;10991:19;10978:32;;11047:1;11040:5;11037:12;11027:129;;11100:1;11134:3;11129;11122:16;11027:129;11173:20;;;10931:14;;;;11219;;;;10892:355;;;11260:18;;-1:-1:-1;;;11298:12:7;;;;-1:-1:-1;9998:12:7;;9965:1355;;;-1:-1:-1;11338:5:7;;9418:1931;-1:-1:-1;;;;;;;9418:1931:7:o;11354:118::-;11440:5;11433:13;11426:21;11419:5;11416:32;11406:60;;11462:1;11459;11452:12;11477:128;11542:20;;11571:28;11542:20;11571:28;:::i;11610:2266::-;11684:5;11737:3;11730:4;11722:6;11718:17;11714:27;11704:55;;11755:1;11752;11745:12;11704:55;11779:98;11795:81;11868:6;11855:20;11795:81;:::i;11779:98::-;11923:20;;11911:33;;;11969:4;11960:14;;;;11899:3;12017:1;12013:28;12001:41;;11997:52;12061:15;;;12058:35;;;12089:1;12086;12079:12;12058:35;12125:4;12117:6;12113:17;12139:1708;12155:6;12150:3;12147:15;12139:1708;;;12221:18;12277:2;12271:3;12258:17;12255:25;12252:45;;;12293:1;12290;12283:12;12252:45;12332:17;;12320:30;;12398:4;12374:12;;;-1:-1:-1;;12370:26:7;12366:37;12363:57;;;12416:1;12413;12406:12;12363:57;12446:22;;:::i;:::-;12495:46;12535:4;12531:2;12527:13;12495:46;:::i;:::-;12488:5;12481:61;12592:2;12588;12584:11;12571:25;12625:2;12615:8;12612:16;12609:36;;;12641:1;12638;12631:12;12609:36;12668:17;;12720:2;12712:11;;12708:21;-1:-1:-1;12698:49:7;;12743:1;12740;12733:12;12698:49;12791:4;12787:2;12783:13;12770:27;12823:80;12839:63;12899:2;12839:63;:::i;12823:80::-;12947:17;;;13047:1;13043:10;;;;13035:19;;13056:2;13031:28;;12997:4;12986:16;;;13075:17;;;13072:37;;;13105:1;13102;13095:12;13072:37;13143:2;13139;13135:11;13159:284;13177:8;13170:5;13167:19;13159:284;;;13274:2;13266:5;13253:19;13250:27;13247:47;;;13290:1;13287;13280:12;13247:47;13325:61;13382:3;13377:2;13368:5;13355:19;13351:2;13347:28;13343:37;13325:61;:::i;:::-;13311:76;;13424:4;13413:16;;;;13198;13159:284;;;-1:-1:-1;13474:4:7;13463:16;;13456:31;-1:-1:-1;;;13537:2:7;13529:11;;13516:25;13557:16;;;13554:36;;;13586:1;13583;13576:12;13554:36;13626:78;13700:3;13693:4;13682:8;13678:2;13674:17;13670:28;13626:78;:::i;:::-;13621:2;13614:5;13610:14;13603:102;;13741:30;13765:4;13761:2;13757:13;13741:30;:::i;:::-;13736:2;13725:14;;13718:54;13785:18;;-1:-1:-1;;13832:4:7;13823:14;;;;12172;12139:1708;;;-1:-1:-1;13865:5:7;;11610:2266;-1:-1:-1;;;;;11610:2266:7:o;13881:1274::-;14101:6;14109;14117;14125;14133;14141;14149;14202:3;14190:9;14181:7;14177:23;14173:33;14170:53;;;14219:1;14216;14209:12;14170:53;14259:9;14246:23;14288:18;14329:2;14321:6;14318:14;14315:34;;;14345:1;14342;14335:12;14315:34;14368:50;14410:7;14401:6;14390:9;14386:22;14368:50;:::i;:::-;14358:60;;14437:38;14471:2;14460:9;14456:18;14437:38;:::i;:::-;14427:48;;14494:45;14535:2;14524:9;14520:18;14494:45;:::i;:::-;14484:55;;14592:2;14581:9;14577:18;14564:32;14548:48;;14621:2;14611:8;14608:16;14605:36;;;14637:1;14634;14627:12;14605:36;14660:52;14704:7;14693:8;14682:9;14678:24;14660:52;:::i;:::-;14650:62;;14765:3;14754:9;14750:19;14737:33;14721:49;;14795:2;14785:8;14782:16;14779:36;;;14811:1;14808;14801:12;14779:36;14834:52;14878:7;14867:8;14856:9;14852:24;14834:52;:::i;:::-;14824:62;;14905:39;14939:3;14928:9;14924:19;14905:39;:::i;:::-;14895:49;;14997:3;14986:9;14982:19;14969:33;14953:49;;15027:2;15017:8;15014:16;15011:36;;;15043:1;15040;15033:12;15011:36;;15066:83;15141:7;15130:8;15119:9;15115:24;15066:83;:::i;:::-;15056:93;;;13881:1274;;;;;;;;;;:::o;15160:186::-;15219:6;15272:2;15260:9;15251:7;15247:23;15243:32;15240:52;;;15288:1;15285;15278:12;15240:52;15311:29;15330:9;15311:29;:::i;15351:437::-;15430:1;15426:12;;;;15473;;;15494:61;;15548:4;15540:6;15536:17;15526:27;;15494:61;15601:2;15593:6;15590:14;15570:18;15567:38;15564:218;;-1:-1:-1;;;15635:1:7;15628:88;15739:4;15736:1;15729:15;15767:4;15764:1;15757:15;15564:218;;15351:437;;;:::o;15793:289::-;15924:3;15962:6;15956:13;15978:66;16037:6;16032:3;16025:4;16017:6;16013:17;15978:66;:::i;:::-;16060:16;;;;;15793:289;-1:-1:-1;;15793:289:7:o;16087:220::-;16236:2;16225:9;16218:21;16199:4;16256:45;16297:2;16286:9;16282:18;16274:6;16256:45;:::i;17559:184::-;-1:-1:-1;;;17608:1:7;17601:88;17708:4;17705:1;17698:15;17732:4;17729:1;17722:15;17748:128;17815:9;;;17836:11;;;17833:37;;;17850:18;;:::i;18183:1176::-;18251:3;18289:5;18283:12;18316:6;18311:3;18304:19;18342:4;18383:2;18378:3;18374:12;18408:11;18435;18428:18;;18485:6;18482:1;18478:14;18471:5;18467:26;18455:38;;18527:2;18520:5;18516:14;18548:1;18569;18579:754;18595:6;18590:3;18587:15;18579:754;;;18660:16;;;18648:29;;18700:13;;18772:9;;18794:22;;;18880:11;;;;18838:13;;;;18915:1;18929:298;18945:8;18940:3;18937:17;18929:298;;;19024:8;19018:15;19067:1;19063:2;19060:9;19050:43;;19073:18;;:::i;:::-;19110:17;;19196;;;;19153:14;;;;18973:1;18964:11;18929:298;;;-1:-1:-1;;19311:12:7;;;;19248:5;-1:-1:-1;;19276:15:7;;;;18621:1;18612:11;18579:754;;;-1:-1:-1;19349:4:7;;18183:1176;-1:-1:-1;;;;;;;;18183:1176:7:o;19364:2842::-;19859:3;19848:9;19841:22;19822:4;19886:46;19927:3;19916:9;19912:19;19904:6;19886:46;:::i;:::-;19951:2;-1:-1:-1;;;;;20062:2:7;20054:6;20050:15;20045:2;20034:9;20030:18;20023:43;20085:2;20096:53;20145:2;20134:9;20130:18;20122:6;20096:53;:::i;:::-;20168:2;20218:9;20210:6;20206:22;20201:2;20190:9;20186:18;20179:50;20252:33;20278:6;20270;20252:33;:::i;:::-;20238:47;;20304:3;20355:9;20347:6;20343:22;20338:2;20327:9;20323:18;20316:50;20389:33;20415:6;20407;20389:33;:::i;:::-;20375:47;;20441:3;20492:2;20484:6;20480:15;20475:2;20464:9;20460:18;20453:43;20545:9;20537:6;20533:22;20527:3;20516:9;20512:19;20505:51;20576:6;20565:17;;20611:6;20605:13;20642:6;20634;20627:22;20677:2;20669:6;20665:15;20658:22;;20736:2;20726:6;20723:1;20719:14;20711:6;20707:27;20703:36;20774:2;20766:6;20762:15;20795:1;20805:1372;20819:6;20816:1;20813:13;20805:1372;;;20909:2;20905:7;20896:6;20888;20884:19;20880:33;20875:3;20868:46;20943:6;20937:13;20989:2;20981:6;20977:15;21005:50;21048:6;21043:2;21037:9;21005:50;:::i;:::-;21094:11;;;21088:18;21126:15;;;21119:27;;;21207:19;;21239:24;;;;21347:1;21343:16;;;21331:29;;21327:38;;;21394:21;;;;21285:15;;;;21439:1;21453:297;21469:8;21464:3;21461:17;21453:297;;;21575:3;21571:8;21562:6;21554;21550:19;21546:34;21539:5;21532:49;21608:42;21643:6;21632:8;21626:15;21608:42;:::i;:::-;21598:52;-1:-1:-1;21679:17:7;;;;21722:14;;;;21497:1;21488:11;21453:297;;;21457:3;;;;21799:2;21795;21791:11;21785:18;21852:6;21844;21840:19;21835:2;21827:6;21823:15;21816:44;21887:67;21947:6;21931:14;21887:67;:::i;:::-;21995:11;;;21989:18;3884:13;;3877:21;22052:15;;;3865:34;21989:18;21873:81;-1:-1:-1;22020:48:7;;-1:-1:-1;3814:91:7;22020:48;22155:12;;;;22091:6;-1:-1:-1;;22120:15:7;;;;20841:1;20834:9;20805:1372;;;20809:3;;22194:6;22186:14;;;;;;;;;;;19364:2842;;;;;;;;;;:::o;22211:245::-;22278:6;22331:2;22319:9;22310:7;22306:23;22302:32;22299:52;;;22347:1;22344;22337:12;22299:52;22379:9;22373:16;22398:28;22420:5;22398:28;:::i;23171:291::-;23348:2;23337:9;23330:21;23311:4;23368:45;23409:2;23398:9;23394:18;23386:6;23368:45;:::i;:::-;23360:53;;23449:6;23444:2;23433:9;23429:18;23422:34;23171:291;;;;;:::o;23467:125::-;23532:9;;;23553:10;;;23550:36;;;23566:18;;:::i;24152:545::-;24254:2;24249:3;24246:11;24243:448;;;24290:1;24315:5;24311:2;24304:17;24360:4;24356:2;24346:19;24430:2;24418:10;24414:19;24411:1;24407:27;24401:4;24397:38;24466:4;24454:10;24451:20;24448:47;;;-1:-1:-1;24489:4:7;24448:47;24544:2;24539:3;24535:12;24532:1;24528:20;24522:4;24518:31;24508:41;;24599:82;24617:2;24610:5;24607:13;24599:82;;;24662:17;;;24643:1;24632:13;24599:82;;;24603:3;;;24152:545;;;:::o;24873:1352::-;24999:3;24993:10;25026:18;25018:6;25015:30;25012:56;;;25048:18;;:::i;:::-;25077:97;25167:6;25127:38;25159:4;25153:11;25127:38;:::i;:::-;25121:4;25077:97;:::i;:::-;25229:4;;25293:2;25282:14;;25310:1;25305:663;;;;26012:1;26029:6;26026:89;;;-1:-1:-1;26081:19:7;;;26075:26;26026:89;-1:-1:-1;;24830:1:7;24826:11;;;24822:24;24818:29;24808:40;24854:1;24850:11;;;24805:57;26128:81;;25275:944;;25305:663;24099:1;24092:14;;;24136:4;24123:18;;-1:-1:-1;;25341:20:7;;;25459:236;25473:7;25470:1;25467:14;25459:236;;;25562:19;;;25556:26;25541:42;;25654:27;;;;25622:1;25610:14;;;;25489:19;;25459:236;;;25463:3;25723:6;25714:7;25711:19;25708:201;;;25784:19;;;25778:26;-1:-1:-1;;25867:1:7;25863:14;;;25879:3;25859:24;25855:37;25851:42;25836:58;25821:74;;25708:201;-1:-1:-1;;;;;25955:1:7;25939:14;;;25935:22;25922:36;;-1:-1:-1;24873:1352:7:o;26230:545::-;26475:3;26464:9;26457:22;26438:4;26496:46;26537:3;26526:9;26522:19;26514:6;26496:46;:::i;:::-;26488:54;;-1:-1:-1;;;;;26651:2:7;26643:6;26639:15;26634:2;26623:9;26619:18;26612:43;26664:53;26713:2;26702:9;26698:18;26690:6;26664:53;:::i;:::-;26765:2;26757:6;26753:15;26748:2;26737:9;26733:18;26726:43;;26230:545;;;;;;;:::o;26780:184::-;-1:-1:-1;;;26829:1:7;26822:88;26929:4;26926:1;26919:15;26953:4;26950:1;26943:15;26969:842;27097:3;27126:1;27159:6;27153:13;27189:36;27215:9;27189:36;:::i;:::-;27244:1;27261:18;;;27288:133;;;;27435:1;27430:356;;;;27254:532;;27288:133;-1:-1:-1;;27321:24:7;;27309:37;;27394:14;;27387:22;27375:35;;27366:45;;;-1:-1:-1;27288:133:7;;27430:356;27461:6;27458:1;27451:17;27491:4;27536:2;27533:1;27523:16;27561:1;27575:165;27589:6;27586:1;27583:13;27575:165;;;27667:14;;27654:11;;;27647:35;27710:16;;;;27604:10;;27575:165;;;27579:3;;;27769:6;27764:3;27760:16;27753:23;;27254:532;-1:-1:-1;27802:3:7;;26969:842;-1:-1:-1;;;;;;26969:842:7:o;28108:135::-;28147:3;28168:17;;;28165:43;;28188:18;;:::i;:::-;-1:-1:-1;28235:1:7;28224:13;;28108:135::o;28248:1435::-;28367:3;28361:4;28358:13;28355:26;;28374:5;;28248:1435::o;28355:26::-;28404:37;28436:3;28430:10;28404:37;:::i;:::-;28464:18;28456:6;28453:30;28450:56;;;28486:18;;:::i;:::-;28515:97;28605:6;28565:38;28597:4;28591:11;28565:38;:::i;28515:97::-;28638:1;28666:2;28658:6;28655:14;28683:1;28678:748;;;;29470:1;29487:6;29484:89;;;-1:-1:-1;29539:19:7;;;29533:26;29484:89;-1:-1:-1;;24830:1:7;24826:11;;;24822:24;24818:29;24808:40;24854:1;24850:11;;;24805:57;29586:81;;28648:1029;;28678:748;24099:1;24092:14;;;24136:4;24123:18;;-1:-1:-1;;28714:20:7;;;24099:1;24092:14;;;24136:4;24123:18;;28878:9;28900:251;28914:7;28911:1;28908:14;28900:251;;;28996:21;;;28990:28;28975:44;;29046:1;29119:18;;;;29074:15;;;;28937:4;28930:12;28900:251;;;28904:3;29179:6;29170:7;29167:19;29164:203;;;29240:21;;;29234:28;-1:-1:-1;;29325:1:7;29321:14;;;29337:3;29317:24;29313:37;29309:42;29294:58;29279:74;;29164:203;;;;29413:1;29404:6;29401:1;29397:14;29393:22;29387:4;29380:36;28648:1029;;;;28248:1435;;:::o;29688:184::-;-1:-1:-1;;;29737:1:7;29730:88;29837:4;29834:1;29827:15;29861:4;29858:1;29851:15;30485:492;30660:3;30698:6;30692:13;30714:66;30773:6;30768:3;30761:4;30753:6;30749:17;30714:66;:::i;:::-;30843:13;;30802:16;;;;30865:70;30843:13;30802:16;30912:4;30900:17;;30865:70;:::i;:::-;30951:20;;30485:492;-1:-1:-1;;;;30485:492:7:o","linkReferences":{}},"methodIdentifiers":{"assign(string,address,uint256)":"4534ba17","bridge_address()":"1255c189","burn(string,uint256)":"b48272cc","getAllAssetsIDs()":"5137b8a7","getToken(string)":"c1733f68","lock(string,uint256)":"e1efb596","mint(string,uint256)":"056b01ce","owner()":"8da5cb5b","renounceOwnership()":"715018a6","tokens(string)":"04c2320b","tokensInteractions(string,uint8)":"ea8f547f","transferOwnership(address)":"f2fde38b","unlock(string,uint256)":"d9cf884c","unwrap(string)":"a1bc17c5","wrap(string,address,uint8,string,string,address)":"6a0876e0","wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])":"f272660b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsuficientAmountLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenAlreadyWrapped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotUnlocked\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver_account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Assign\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Unlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"receiver_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"assign\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"getToken\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Token\",\"name\":\"token\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"tokens\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"enum InteractionType\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"tokensInteractions\",\"outputs\":[{\"internalType\":\"enum InteractionType\",\"name\":\"interactionType\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"wrapSuccess\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum InteractionType\",\"name\":\"interactionType\",\"type\":\"uint8\"},{\"internalType\":\"string[]\",\"name\":\"functionsSignature\",\"type\":\"string[]\"},{\"internalType\":\"enum VarType[][]\",\"name\":\"variables\",\"type\":\"uint8[][]\"},{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"}],\"internalType\":\"struct InteractionSignature[]\",\"name\":\"interactions\",\"type\":\"tuple[]\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"wrapSuccess\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"assign(string,address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be assigned.\",\"receiver_account\":\"The address of the receiver account.\",\"tokenId\":\"The unique identifier of the token.\"}},\"burn(string,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be burned.\",\"tokenId\":\"The unique identifier of the token.\"}},\"constructor\":{\"params\":{\"_bridge_address\":\"The address of the bridge contract. This needs to be changed, maybe the owner should not be a bridge but other account.\"}},\"getAllAssetsIDs()\":{\"returns\":{\"_0\":\"An array of token IDs.\"}},\"getToken(string)\":{\"params\":{\"tokenId\":\"The unique identifier of the token.\"},\"returns\":{\"token\":\"the token with the given token ID.\"}},\"lock(string,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be locked.\",\"tokenId\":\"The unique identifier of the token.\"}},\"mint(string,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be minted.\",\"tokenId\":\"The unique identifier of the token.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unlock(string,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be unlocked.\",\"tokenId\":\"The unique identifier of the token.\"}},\"unwrap(string)\":{\"params\":{\"tokenId\":\"The unique identifier of the token.\"}},\"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])\":{\"params\":{\"contractAddress\":\"The address of the token contract.\",\"interactions\":\"The interactions to be used for the token.\",\"owner\":\"The owner of the token.\",\"tokenId\":\"The unique identifier of the token.\",\"tokenType\":\"The type of the token.\"}}},\"title\":\"SATPWrapper This contract serves as a wrapper for the Secure Asset Transfer Protocol (SATP) using the Hermes plugin. It provides functionalities to interact with the SATP protocol within the Cactus framework. This contract provides a semantic layer to facilitate interactions with other contracts.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"assign(string,address,uint256)\":{\"notice\":\"Assigns a given amount of tokens with the given token ID to a receiver account. This method calls the assign function of the token contract.\"},\"bridge_address()\":{\"notice\":\"The address of the bridge contract. TODO: Change this to the Token Struct\"},\"burn(string,uint256)\":{\"notice\":\"Burns a given amount of tokens with the given token ID. This method calls the burn function of the token contract.\"},\"constructor\":{\"notice\":\"Constructor for the SATPWrapperContract.\"},\"getAllAssetsIDs()\":{\"notice\":\"Gets all the token IDs.\"},\"getToken(string)\":{\"notice\":\"Gets a token with the given token ID.\"},\"lock(string,uint256)\":{\"notice\":\"Locks a given amount of tokens with the given token ID. This method calls the lock function of the token contract.\"},\"mint(string,uint256)\":{\"notice\":\"Mints a given amount of tokens with the given token ID. This method calls the mint function of the token contract.\"},\"tokens(string)\":{\"notice\":\"Maping of token IDs to Token structs.\"},\"tokensInteractions(string,uint8)\":{\"notice\":\"Mapping of token IDs to InteractionSignature structs.\"},\"unlock(string,uint256)\":{\"notice\":\"Unlocks a given amount of tokens with the given token ID. This method calls the unlock function of the token contract.\"},\"unwrap(string)\":{\"notice\":\"Unwraps a token with the given token ID. This method deletes the token from the mapping and the array of token IDs. (Should they be deleted from the array?)\"},\"wrap(string,address,uint8,string,string,address)\":{\"notice\":\"Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. TODO: Implement that functionality for standard tokens. \"},\"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])\":{\"notice\":\"Wraps a token with the given parameters. Given interactions will call a method that creates the ontology of the token so the other methods (eg. lock, unlock, mint, burn, assign) can interact with the token. This interactions should be given by the bridge and be througly tested and checked before being used, as they can be used to call any function in the token contract.\"}},\"notice\":\"Ensure that the contract is deployed and configured correctly before interacting with it.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/main/solidity/contracts/SATPWrapperContract.sol\":\"SATPWrapperContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/main/solidity/contracts/SATPWrapperContract.sol\":{\"keccak256\":\"0x98c34a72b3ea7502b8c23d59379efbb38391e4da891941fead39025272f037d2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9502f5d2d18c28b85e7f69b385197990d82d81161e9d0e827356f6b09b0b95a9\",\"dweb:/ipfs/QmQZuxgyPZnXRA4d47Z6LnPta2XcaxsnfoJtzRdge4XmDg\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_bridge_address","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"InsuficientAmountLocked"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenAlreadyWrapped"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenLocked"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotAvailable"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotLocked"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotUnlocked"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"address","name":"receiver_account","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Assign","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Lock","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Unlock","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true}],"type":"event","name":"Unwrap","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"string","name":"contractName","type":"string","indexed":false},{"internalType":"address","name":"contractAddress","type":"address","indexed":false},{"internalType":"enum TokenType","name":"tokenType","type":"uint8","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false}],"type":"event","name":"Wrap","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"address","name":"receiver_account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"assign","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge_address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"struct Token","name":"token","type":"tuple","components":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"tokens","outputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"enum InteractionType","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"tokensInteractions","outputs":[{"internalType":"enum InteractionType","name":"interactionType","type":"uint8"},{"internalType":"bool","name":"available","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"unwrap","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"bool","name":"wrapSuccess","type":"bool"}]},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct InteractionSignature[]","name":"interactions","type":"tuple[]","components":[{"internalType":"enum InteractionType","name":"interactionType","type":"uint8"},{"internalType":"string[]","name":"functionsSignature","type":"string[]"},{"internalType":"enum VarType[][]","name":"variables","type":"uint8[][]"},{"internalType":"bool","name":"available","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"bool","name":"wrapSuccess","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"assign(string,address,uint256)":{"params":{"amount":"The amount of tokens to be assigned.","receiver_account":"The address of the receiver account.","tokenId":"The unique identifier of the token."}},"burn(string,uint256)":{"params":{"amount":"The amount of tokens to be burned.","tokenId":"The unique identifier of the token."}},"constructor":{"params":{"_bridge_address":"The address of the bridge contract. This needs to be changed, maybe the owner should not be a bridge but other account."}},"getAllAssetsIDs()":{"returns":{"_0":"An array of token IDs."}},"getToken(string)":{"params":{"tokenId":"The unique identifier of the token."},"returns":{"token":"the token with the given token ID."}},"lock(string,uint256)":{"params":{"amount":"The amount of tokens to be locked.","tokenId":"The unique identifier of the token."}},"mint(string,uint256)":{"params":{"amount":"The amount of tokens to be minted.","tokenId":"The unique identifier of the token."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unlock(string,uint256)":{"params":{"amount":"The amount of tokens to be unlocked.","tokenId":"The unique identifier of the token."}},"unwrap(string)":{"params":{"tokenId":"The unique identifier of the token."}},"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])":{"params":{"contractAddress":"The address of the token contract.","interactions":"The interactions to be used for the token.","owner":"The owner of the token.","tokenId":"The unique identifier of the token.","tokenType":"The type of the token."}}},"version":1},"userdoc":{"kind":"user","methods":{"assign(string,address,uint256)":{"notice":"Assigns a given amount of tokens with the given token ID to a receiver account. This method calls the assign function of the token contract."},"bridge_address()":{"notice":"The address of the bridge contract. TODO: Change this to the Token Struct"},"burn(string,uint256)":{"notice":"Burns a given amount of tokens with the given token ID. This method calls the burn function of the token contract."},"constructor":{"notice":"Constructor for the SATPWrapperContract."},"getAllAssetsIDs()":{"notice":"Gets all the token IDs."},"getToken(string)":{"notice":"Gets a token with the given token ID."},"lock(string,uint256)":{"notice":"Locks a given amount of tokens with the given token ID. This method calls the lock function of the token contract."},"mint(string,uint256)":{"notice":"Mints a given amount of tokens with the given token ID. This method calls the mint function of the token contract."},"tokens(string)":{"notice":"Maping of token IDs to Token structs."},"tokensInteractions(string,uint8)":{"notice":"Mapping of token IDs to InteractionSignature structs."},"unlock(string,uint256)":{"notice":"Unlocks a given amount of tokens with the given token ID. This method calls the unlock function of the token contract."},"unwrap(string)":{"notice":"Unwraps a token with the given token ID. This method deletes the token from the mapping and the array of token IDs. (Should they be deleted from the array?)"},"wrap(string,address,uint8,string,string,address)":{"notice":"Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. TODO: Implement that functionality for standard tokens. "},"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])":{"notice":"Wraps a token with the given parameters. Given interactions will call a method that creates the ontology of the token so the other methods (eg. lock, unlock, mint, burn, assign) can interact with the token. This interactions should be given by the bridge and be througly tested and checked before being used, as they can be used to call any function in the token contract."}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/main/solidity/contracts/SATPWrapperContract.sol":"SATPWrapperContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/main/solidity/contracts/SATPWrapperContract.sol":{"keccak256":"0x98c34a72b3ea7502b8c23d59379efbb38391e4da891941fead39025272f037d2","urls":["bzz-raw://9502f5d2d18c28b85e7f69b385197990d82d81161e9d0e827356f6b09b0b95a9","dweb:/ipfs/QmQZuxgyPZnXRA4d47Z6LnPta2XcaxsnfoJtzRdge4XmDg"],"license":"GPL-3.0"}},"version":1},"id":6} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_bridge_address","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"NFT_IDs","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"assign","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"receiver_account","type":"address","internalType":"address"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"bridge_address","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"getToken","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"token","type":"tuple","internalType":"struct Token","components":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}]}],"stateMutability":"view"},{"type":"function","name":"getToken","inputs":[{"name":"tokenId","type":"string","internalType":"string"}],"outputs":[{"name":"token","type":"tuple","internalType":"struct Token","components":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}]}],"stateMutability":"view"},{"type":"function","name":"lock","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokens","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}],"stateMutability":"view"},{"type":"function","name":"tokensInteractions","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint8","internalType":"enum InteractionType"}],"outputs":[{"name":"interactionType","type":"uint8","internalType":"enum InteractionType"},{"name":"available","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"unwrap","inputs":[{"name":"tokenId","type":"string","internalType":"string"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"interactions","type":"tuple[]","internalType":"struct InteractionSignature[]","components":[{"name":"interactionType","type":"uint8","internalType":"enum InteractionType"},{"name":"functionsSignature","type":"string[]","internalType":"string[]"},{"name":"variables","type":"uint8[][]","internalType":"enum AssetParameterIdentifier[][]"},{"name":"available","type":"bool","internalType":"bool"}]},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}],"outputs":[{"name":"wrapSuccess","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}],"outputs":[{"name":"wrapSuccess","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approve","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"spender","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Assign","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"receiver_account","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false},{"type":"event","name":"Lock","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unlock","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unwrap","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Wrap","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"contractName","type":"string","indexed":false,"internalType":"string"},{"name":"contractAddress","type":"address","indexed":false,"internalType":"address"},{"name":"tokenType","type":"uint8","indexed":false,"internalType":"enum TokenType"},{"name":"owner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InsuficientAmountLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"TokenAlreadyWrapped","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotAvailable","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotSupported","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b50604051620046fa380380620046fa8339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600580546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b6145d280620001286000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063715018a6116100cd578063d9cf884c11610081578063e1efb59611610066578063e1efb59614610350578063ea8f547f14610363578063f2fde38b146103ba57600080fd5b8063d9cf884c1461032a578063dbf156391461033d57600080fd5b8063a1bc17c5116100b2578063a1bc17c5146102f1578063b48272cc14610304578063c1733f681461031757600080fd5b8063715018a6146102d65780638da5cb5b146102e057600080fd5b806319d09bc911610124578063433f60ac11610109578063433f60ac1461029b5780634534ba17146102ae5780635137b8a7146102c157600080fd5b806319d09bc91461023d578063324980b51461027b57600080fd5b806304c2320b14610156578063056b01ce146101865780631255c189146101a9578063150b7a02146101d4575b600080fd5b61016961016436600461370f565b6103cd565b60405161017d9897969594939291906137ce565b60405180910390f35b610199610194366004613853565b6105d1565b604051901515815260200161017d565b6005546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b61020c6101e23660046138af565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017d565b61019961024b366004613853565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b61028e610289366004613853565b61092b565b60405161017d919061394a565b6101996102a9366004613cf0565b61114d565b6101996102bc366004613de0565b6114c0565b6102c961191b565b60405161017d9190613e8c565b6102de6119f4565b005b6000546001600160a01b03166101bc565b6101996102ff36600461370f565b611a08565b610199610312366004613853565b611c59565b61028e61032536600461370f565b61209c565b610199610338366004613853565b6120eb565b61019961034b366004613e9f565b612568565b61019961035e366004613853565b612650565b6103ac610371366004613f6a565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161017d929190613fc8565b6102de6103c8366004613fe5565b612985565b80516020818301810180516001825292820191909301209152805481906103f390614000565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90614000565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161049f90614000565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90614000565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509080600301805461052d90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461055990614000565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050506004830154600584015460069094015492936001600160a01b039091169290915060ff1688565b60006105db6129dc565b60006001600160a01b03166001846040516105f6919061403a565b908152604051908190036020019020600101546001600160a01b03160361063b578260405163c0bab25f60e01b81526004016106329190614056565b60405180910390fd5b6000821161068b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b600060018460405161069d919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156106d1576106d1613794565b03610757576106e284600085612a22565b61072e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b8260018560405161073f919061403a565b908152604051908190036020019020600501556108d6565b600281600281111561076b5761076b613794565b036108bb57600384604051610780919061403a565b90815260408051602092819003830190206000868152925290205460ff16156107eb5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220616c7265616479206578697374736044820152606401610632565b6107f784600085612a22565b6108435760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051610854919061403a565b90815260200160405180910390206005016000828254610874919061407f565b92505081905550600160038560405161088d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556108d6565b8360405163c16fc3ad60e01b81526004016106329190614056565b836040516108e4919061403a565b604051908190038120848252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a260019150505b92915050565b61096f60408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b6000600184604051610981919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156109b5576109b5613794565b03610c3b576001846040516109ca919061403a565b9081526020016040518091039020604051806101000160405290816000820180546109f490614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090614000565b8015610a6d5780601f10610a4257610100808354040283529160200191610a6d565b820191906000526020600020905b815481529060010190602001808311610a5057829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166002811115610aaa57610aaa613794565b6002811115610abb57610abb613794565b8152602001600282018054610acf90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90614000565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b50505050508152602001600382018054610b6190614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90614000565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260058201546040820152600682015460609091019060ff166003811115610c1e57610c1e613794565b6003811115610c2f57610c2f613794565b81525050915050610925565b6002816002811115610c4f57610c4f613794565b0361114657600384604051610c64919061403a565b90815260408051602092819003830190206000868152925290205460ff1615610ef757604051806101000160405280600186604051610ca3919061403a565b9081526040519081900360200190208054610cbd90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990614000565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050508152602001600186604051610d50919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051610d93919061403a565b9081526040519081900360200190206001015460ff600160a01b909104166002811115610dc257610dc2613794565b8152602001858152602001600186604051610ddd919061403a565b90815260200160405180910390206003018054610df990614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2590614000565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b50505050508152602001600186604051610e8c919061403a565b9081526040805160209281900383019020600401546001600160a01b031683529082018690528051910190600190610ec590889061403a565b9081526040519081900360200190206006015460ff166003811115610eec57610eec613794565b815250915050610925565b604051806101000160405280600186604051610f13919061403a565b9081526040519081900360200190208054610f2d90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990614000565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b50505050508152602001600186604051610fc0919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051611003919061403a565b9081526040519081900360200190206001015460ff600160a01b90910416600281111561103257611032613794565b815260200185815260200160018660405161104d919061403a565b9081526020016040518091039020600301805461106990614000565b80601f016020809104026020016040519081016040528092919081815260200182805461109590614000565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081526020016001866040516110fc919061403a565b908152602001604051809103902060040160009054906101000a90046001600160a01b03166001600160a01b0316815260200160008152602001600186604051610ec5919061403a565b5092915050565b60006111576129dc565b60006001600160a01b0316600187604051611172919061403a565b908152604051908190036020019020600101546001600160a01b0316146111c757856040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016106329190614056565b6111d18684612a39565b6002866040516111e1919061403a565b9081526040805160209281900383019020600360008181529190935220015460ff161561128557611213866003612b59565b6112855760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e000000006064820152608401610632565b6040518061010001604052808a8152602001896001600160a01b031681526020018860028111156112b8576112b8613794565b8152602001878152602001868152602001856001600160a01b03168152602001600081526020018360038111156112f1576112f1613794565b815250600187604051611304919061403a565b9081526040519081900360200190208151819061132190826140e0565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600281111561138a5761138a613794565b0217905550606082015160028201906113a390826140e0565b50608082015160038201906113b890826140e0565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c0820151600582015560e082015160068201805460ff1916600183600381111561141957611419613794565b021790555050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905061145d87826140e0565b508560405161146c919061403a565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8a8a8a886040516114a994939291906141a0565b60405180910390a250600198975050505050505050565b60006114ca6129dc565b60006001600160a01b03166001856040516114e5919061403a565b908152604051908190036020019020600101546001600160a01b031603611521578360405163c0bab25f60e01b81526004016106329190614056565b600082116115715760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600185604051611583919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156115b7576115b7613794565b036116c257826001866040516115cd919061403a565b908152602001604051809103902060050154101561162d5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b65646044820152606401610632565b61163a8560028587612b6f565b6116865760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c656400000000000000006044820152606401610632565b82600186604051611697919061403a565b908152602001604051809103902060050160008282546116b791906141e4565b909155506118b99050565b60028160028111156116d6576116d6613794565b0361189e5760006001866040516116ed919061403a565b9081526020016040518091039020600501541161174c5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b65646044820152606401610632565b60038560405161175c919061403a565b908152604080519182900360209081019092206000868152925290205460ff1615156001146117cd5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b6117da8560028587612b6f565b6118265760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018086604051611837919061403a565b9081526020016040518091039020600501600082825461185791906141e4565b925050819055506000600386604051611870919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556118b9565b8460405163c16fc3ad60e01b81526004016106329190614056565b846040516118c7919061403a565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a2506001949350505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156119eb57838290600052602060002001805461195e90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461198a90614000565b80156119d75780601f106119ac576101008083540402835291602001916119d7565b820191906000526020600020905b8154815290600101906020018083116119ba57829003601f168201915b50505050508152602001906001019061193f565b50505050905090565b6119fc6129dc565b611a066000612e8b565b565b6000611a126129dc565b60006001600160a01b0316600183604051611a2d919061403a565b908152604051908190036020019020600101546001600160a01b031603611a69578160405163c0bab25f60e01b81526004016106329190614056565b6000600183604051611a7b919061403a565b9081526020016040518091039020600501541115611ac757816040517fb7d2c10a0000000000000000000000000000000000000000000000000000000081526004016106329190614056565b611b79600183604051611ada919061403a565b90815260200160405180910390206002018054611af690614000565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290614000565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050612ee8565b600182604051611b89919061403a565b9081526040519081900360200190206000611ba48282613422565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055611bd2600283016000613422565b611be0600383016000613422565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820155600601805460ff19169055604051611c2090839061403a565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000611c636129dc565b60006001600160a01b0316600184604051611c7e919061403a565b908152604051908190036020019020600101546001600160a01b031603611cba578260405163c0bab25f60e01b81526004016106329190614056565b60008211611d0a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051611d1c919061403a565b90815260405190819003602001902060019081015460ff600160a01b909104169150816002811115611d5057611d50613794565b03611e5a5782600185604051611d66919061403a565b9081526020016040518091039020600501541015611dc65760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b656400006044820152606401610632565b611dd284600185612a22565b611e1e5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b82600185604051611e2f919061403a565b90815260200160405180910390206005016000828254611e4f91906141e4565b909155506120579050565b6002816002811115611e6e57611e6e613794565b036108bb576000600185604051611e85919061403a565b90815260200160405180910390206005015411611f0a5760405162461bcd60e51b815260206004820152602360248201527f547279696e6720746f206275726e20616e20756e6163636f756e74656420417360448201527f73657400000000000000000000000000000000000000000000000000000000006064820152608401610632565b600384604051611f1a919061403a565b908152604080519182900360209081019092206000868152925290205460ff161515600114611f8b5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b611f9784600185612a22565b611fe35760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051611ff4919061403a565b9081526020016040518091039020600501600082825461201491906141e4565b92505081905550600060038560405161202d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612065919061403a565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee9990602001610917565b6120e060408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b61092582600061092b565b60006120f56129dc565b60006001600160a01b0316600184604051612110919061403a565b908152604051908190036020019020600101546001600160a01b03160361214c578260405163c0bab25f60e01b81526004016106329190614056565b6000821161219c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b60006001846040516121ae919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156121e2576121e2613794565b0361230057826001856040516121f8919061403a565b90815260200160405180910390206005015410156122465783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016106329291906141f7565b61225284600585612a22565b6122c45760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610632565b826001856040516122d5919061403a565b908152602001604051809103902060050160008282546122f591906141e4565b909155506125239050565b600281600281111561231457612314613794565b036108bb57600384604051612329919061403a565b908152604080519182900360209081019092206000868152925290205460ff16151560011461239a5760405162461bcd60e51b815260206004820152601060248201527f546f6b656e204e6f74204c6f636b6564000000000000000000000000000000006044820152606401610632565b60006001856040516123ac919061403a565b908152602001604051809103902060050154116124315760405162461bcd60e51b815260206004820152603360248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206163636f756e74656420666f72000000000000000000000000006064820152608401610632565b61243d84600585612a22565b6124af5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610632565b600180856040516124c0919061403a565b908152602001604051809103902060050160008282546124e091906141e4565b9250508190555060006003856040516124f9919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612531919061403a565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001610917565b60006125726129dc565b3063433f60ac89898989898960006040519080825280602002602001820160405280156125dc57816020015b6125c96040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161259e5790505b508a6040518963ffffffff1660e01b8152600401612601989796959493929190614219565b6020604051808303816000875af1158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906143ba565b98975050505050505050565b600061265a6129dc565b60006001600160a01b0316600184604051612675919061403a565b908152604051908190036020019020600101546001600160a01b0316036126b1578260405163c0bab25f60e01b81526004016106329190614056565b600082116127015760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051612713919061403a565b90815260405190819003602001902060019081015460ff600160a01b90910416915081600281111561274757612747613794565b036127e05761275884600485612a22565b6127a45760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b826001856040516127b5919061403a565b908152602001604051809103902060050160008282546127d5919061407f565b909155506129409050565b60028160028111156127f4576127f4613794565b036108bb57600384604051612809919061403a565b90815260408051602092819003830190206000868152925290205460ff16156128745760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20416c7265616479204c6f636b65640000000000000000000000006044820152606401610632565b61288084600485612a22565b6128cc5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b600180856040516128dd919061403a565b908152602001604051809103902060050160008282546128fd919061407f565b925050819055506001600385604051612916919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b8360405161294e919061403a565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001610917565b61298d6129dc565b6001600160a01b0381166129d0576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610632565b6129d981612e8b565b50565b6000546001600160a01b03163314611a06576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610632565b6000612a318484846000612b6f565b949350505050565b60005b8151811015612b5457818181518110612a5757612a576143d7565b6020026020010151600284604051612a6f919061403a565b90815260200160405180910390206000848481518110612a9157612a916143d7565b6020026020010151600001516006811115612aae57612aae613794565b6006811115612abf57612abf613794565b8152602081019190915260400160002081518154829060ff19166001836006811115612aed57612aed613794565b02179055506020828101518051612b0a926001850192019061345c565b5060408201518051612b269160028401916020909101906134b2565b50606091909101516003909101805460ff191691151591909117905580612b4c816143ed565b915050612a3c565b505050565b6000612b688383600080612b6f565b9392505050565b6000600285604051612b81919061403a565b90815260200160405180910390206000856006811115612ba357612ba3613794565b6006811115612bb457612bb4613794565b815260208101919091526040016000206003015460ff16612bd757506000612a31565b60005b600286604051612bea919061403a565b90815260200160405180910390206000866006811115612c0c57612c0c613794565b6006811115612c1d57612c1d613794565b8152602081019190915260400160002060010154811015612e7f576000600287604051612c4a919061403a565b90815260200160405180910390206000876006811115612c6c57612c6c613794565b6006811115612c7d57612c7d613794565b81526020019081526020016000206001018281548110612c9f57612c9f6143d7565b90600052602060002001604051602001612cb99190614406565b6040516020818303038152906040528051906020012090506000612dd582612dd060028b604051612cea919061403a565b908152602001604051809103902060008b6006811115612d0c57612d0c613794565b6006811115612d1d57612d1d613794565b81526020019081526020016000206002018681548110612d3f57612d3f6143d7565b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015612dc357602002820191906000526020600020906000905b82829054906101000a900460ff166007811115612da157612da1613794565b815260206001928301818104948501949093039092029101808411612d825790505b50505050508b898b613046565b613363565b90506000600189604051612de9919061403a565b908152604051908190036020018120600101546001600160a01b031690612e1190849061403a565b6000604051808303816000865af19150503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5050905080612e69576000945050505050612a31565b5050508080612e77906143ed565b915050612bda565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60045481101561304257612fa460048281548110612f0b57612f0b6143d7565b906000526020600020018054612f2090614000565b80601f0160208091040260200160405190810160405280929190818152602001828054612f4c90614000565b8015612f995780601f10612f6e57610100808354040283529160200191612f99565b820191906000526020600020905b815481529060010190602001808311612f7c57829003601f168201915b5050505050836133fd565b156130305760048054612fb9906001906141e4565b81548110612fc957612fc96143d7565b9060005260206000200160048281548110612fe657612fe66143d7565b906000526020600020019081612ffc919061447c565b50600480548061300e5761300e614557565b60019003818190600052602060002001600061302a9190613422565b90555050565b8061303a816143ed565b915050612eeb565b5050565b60606000855167ffffffffffffffff8111156130645761306461362f565b60405190808252806020026020018201604052801561309757816020015b60608152602001906001900390816130825790505b50905060005b86518110156133595760058782815181106130ba576130ba6143d7565b602002602001015160078111156130d3576130d3613794565b036131155760408051306020820152015b604051602081830303815290604052828281518110613105576131056143d7565b6020026020010181905250613347565b6002878281518110613129576131296143d7565b6020026020010151600781111561314257613142613794565b0361315857856040516020016130e49190614056565b600487828151811061316c5761316c6143d7565b6020026020010151600781111561318557613185613794565b0361319b576040805160208101869052016130e4565b60038782815181106131af576131af6143d7565b602002602001015160078111156131c8576131c8613794565b03613206576001866040516131dd919061403a565b908152604080519182900360209081018320600401546001600160a01b031690830152016130e4565b600087828151811061321a5761321a6143d7565b6020026020010151600781111561323357613233613794565b0361327157600186604051613248919061403a565b908152604080519182900360209081018320600101546001600160a01b031690830152016130e4565b6006878281518110613285576132856143d7565b6020026020010151600781111561329e5761329e613794565b036132bc57604080516001600160a01b0387166020820152016130e4565b60078782815181106132d0576132d06143d7565b602002602001015160078111156132e9576132e9613794565b036132ff576040805160208101869052016130e4565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f72746564000000000000000000006044820152606401610632565b80613351816143ed565b91505061309d565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561114657818382815181106133c0576133c06143d7565b60200260200101516040516020016133d992919061456d565b604051602081830303815290604052915080806133f5906143ed565b9150506133a4565b600081518351148015612b685750508051602091820120825192909101919091201490565b50805461342e90614000565b6000825580601f1061343e575050565b601f0160209004906000526020600020908101906129d9919061350b565b8280548282559060005260206000209081019282156134a2579160200282015b828111156134a2578251829061349290826140e0565b509160200191906001019061347c565b506134ae929150613520565b5090565b8280548282559060005260206000209081019282156134ff579160200282015b828111156134ff57825180516134ef91849160209091019061353d565b50916020019190600101906134d2565b506134ae9291506135ed565b5b808211156134ae576000815560010161350c565b808211156134ae5760006135348282613422565b50600101613520565b82805482825590600052602060002090601f016020900481019282156135e15791602002820160005b838211156135b257835183826101000a81548160ff0219169083600781111561359157613591613794565b02179055509260200192600101602081600001049283019260010302613566565b80156135df5782816101000a81549060ff02191690556001016020816000010492830192600103026135b2565b505b506134ae92915061350b565b808211156134ae576000613601828261360a565b506001016135ed565b50805460008255601f0160209004906000526020600020908101906129d9919061350b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156136685761366861362f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136975761369761362f565b604052919050565b600082601f8301126136b057600080fd5b813567ffffffffffffffff8111156136ca576136ca61362f565b6136dd601f8201601f191660200161366e565b8181528460208386010111156136f257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561372157600080fd5b813567ffffffffffffffff81111561373857600080fd5b612a318482850161369f565b60005b8381101561375f578181015183820152602001613747565b50506000910152565b60008151808452613780816020860160208601613744565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106137ba576137ba613794565b9052565b600481106137ba576137ba613794565b60006101008083526137e28184018c613768565b90506001600160a01b03808b166020850152613801604085018b6137aa565b8382036060850152613813828a613768565b915083820360808501526138278289613768565b925080871660a085015250508360c083015261384660e08301846137be565b9998505050505050505050565b6000806040838503121561386657600080fd5b823567ffffffffffffffff81111561387d57600080fd5b6138898582860161369f565b95602094909401359450505050565b80356001600160a01b0381168114611c5457600080fd5b6000806000806000608086880312156138c757600080fd5b6138d086613898565b94506138de60208701613898565b935060408601359250606086013567ffffffffffffffff8082111561390257600080fd5b818801915088601f83011261391657600080fd5b81358181111561392557600080fd5b89602082850101111561393757600080fd5b9699959850939650602001949392505050565b6020815260008251610100806020850152613969610120850183613768565b9150602085015161398560408601826001600160a01b03169052565b50604085015161399860608601826137aa565b506060850151601f19808685030160808701526139b58483613768565b935060808701519150808685030160a0870152506139d38382613768565b92505060a08501516139f060c08601826001600160a01b03169052565b5060c085015160e085015260e0850151613a0c828601826137be565b5090949350505050565b803560038110611c5457600080fd5b600067ffffffffffffffff821115613a3f57613a3f61362f565b5060051b60200190565b803560078110611c5457600080fd5b600082601f830112613a6957600080fd5b81356020613a7e613a7983613a25565b61366e565b828152600592831b8501820192828201919087851115613a9d57600080fd5b8387015b85811015613b4257803567ffffffffffffffff811115613ac15760008081fd5b8801603f81018a13613ad35760008081fd5b858101356040613ae5613a7983613a25565b82815291851b8301810191888101908d841115613b025760008081fd5b938201935b83851015613b31578435925060088310613b215760008081fd5b8282529389019390890190613b07565b885250505093850193508401613aa1565b5090979650505050505050565b80151581146129d957600080fd5b8035611c5481613b4f565b600082601f830112613b7957600080fd5b613b86613a798335613a25565b82358082526020808301929160051b85010185811115613ba557600080fd5b602085015b81811015613cd65767ffffffffffffffff8082351115613bc957600080fd5b813587016080818a03601f19011215613be157600080fd5b613be9613645565b613bf560208301613a49565b8152604082013583811115613c0957600080fd5b8201603f81018b13613c1a57600080fd5b6020810135613c2b613a7982613a25565b81815260059190911b82016040019060208101908d831115613c4c57600080fd5b604084015b83811015613c85578781351115613c6757600080fd5b613c778f6040833588010161369f565b835260209283019201613c51565b506020850152505050606082013583811115613ca057600080fd5b613caf8b602083860101613a58565b604083015250613cc160808301613b5d565b60608201528652505060209384019301613baa565b509095945050505050565b803560048110611c5457600080fd5b600080600080600080600080610100898b031215613d0d57600080fd5b883567ffffffffffffffff80821115613d2557600080fd5b613d318c838d0161369f565b9950613d3f60208c01613898565b9850613d4d60408c01613a16565b975060608b0135915080821115613d6357600080fd5b613d6f8c838d0161369f565b965060808b0135915080821115613d8557600080fd5b613d918c838d0161369f565b9550613d9f60a08c01613898565b945060c08b0135915080821115613db557600080fd5b50613dc28b828c01613b68565b925050613dd160e08a01613ce1565b90509295985092959890939650565b600080600060608486031215613df557600080fd5b833567ffffffffffffffff811115613e0c57600080fd5b613e188682870161369f565b935050613e2760208501613898565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015613e7f578284038952613e6d848351613768565b98850198935090840190600101613e55565b5091979650505050505050565b602081526000612b686020830184613e37565b600080600080600080600060e0888a031215613eba57600080fd5b873567ffffffffffffffff80821115613ed257600080fd5b613ede8b838c0161369f565b9850613eec60208b01613898565b9750613efa60408b01613a16565b965060608a0135915080821115613f1057600080fd5b613f1c8b838c0161369f565b955060808a0135915080821115613f3257600080fd5b50613f3f8a828b0161369f565b935050613f4e60a08901613898565b9150613f5c60c08901613ce1565b905092959891949750929550565b60008060408385031215613f7d57600080fd5b823567ffffffffffffffff811115613f9457600080fd5b613fa08582860161369f565b925050613faf60208401613a49565b90509250929050565b600781106137ba576137ba613794565b60408101613fd68285613fb8565b82151560208301529392505050565b600060208284031215613ff757600080fd5b612b6882613898565b600181811c9082168061401457607f821691505b60208210810361403457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161404c818460208701613744565b9190910192915050565b602081526000612b686020830184613768565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092557610925614069565b601f821115612b5457600081815260208120601f850160051c810160208610156140b95750805b601f850160051c820191505b818110156140d8578281556001016140c5565b505050505050565b815167ffffffffffffffff8111156140fa576140fa61362f565b61410e816141088454614000565b84614092565b602080601f831160018114614143576000841561412b5750858301515b600019600386901b1c1916600185901b1785556140d8565b600085815260208120601f198616915b8281101561417257888601518255948401946001909101908401614153565b50858210156141905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006141b36080830187613768565b90506001600160a01b0380861660208401526141d260408401866137aa565b80841660608401525095945050505050565b8181038181111561092557610925614069565b60408152600061420a6040830185613768565b90508260208301529392505050565b6101008152600061422e61010083018b613768565b6001600160a01b03808b16602085015261424b604085018b6137aa565b838203606085015261425d828a613768565b915083820360808501526142718289613768565b915080871660a08501525082810360c084015280855180835260208301915060208160051b8401016020880160005b838110156143a457601f198087850301865282516142bf858251613fb8565b6020810151608060208701526142d86080870182613e37565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561436d57858203880184528451805180845260209182019184019060005b818110156143555783516008811061434157614341613794565b835260209384019390920191600101614327565b50506020968701969590950194925050600101614305565b506060860151965061438360608b018815159052565b809950505050505050506020820191506020850194506001810190506142a0565b50508094505050505061384660e08301846137be565b6000602082840312156143cc57600080fd5b8151612b6881613b4f565b634e487b7160e01b600052603260045260246000fd5b6000600182016143ff576143ff614069565b5060010190565b600080835461441481614000565b6001828116801561442c576001811461444157614470565b60ff1984168752821515830287019450614470565b8760005260208060002060005b858110156144675781548a82015290840190820161444e565b50505082870194505b50929695505050505050565b818103614487575050565b6144918254614000565b67ffffffffffffffff8111156144a9576144a961362f565b6144b7816141088454614000565b6000601f8211600181146144eb57600083156144d35750848201545b600019600385901b1c1916600184901b178455614550565b600085815260209020601f19841690600086815260209020845b838110156145255782860154825560019586019590910190602001614505565b50858310156145435781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b6000835161457f818460208801613744565b835190830190614593818360208801613744565b0194935050505056fea2646970667358221220cc545097d62ab752192a515a53206f325e79a54a4fe781e2769cb76ecb844be064736f6c63430008140033","sourceMap":"3424:22129:7:-:0;;;4951:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4997:15;-1:-1:-1;;;;;1273:26:0;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:0;;1350:1;1322:31;;;455:51:8;428:18;;1322:31:0;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;5024:14:7::1;:41:::0;;-1:-1:-1;;;;;;5024:41:7::1;-1:-1:-1::0;;;;;5024:41:7;;;::::1;::::0;;;::::1;::::0;;3424:22129;;2912:187:0;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:8:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:8;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:8:o;309:203::-;3424:22129:7;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101515760003560e01c8063715018a6116100cd578063d9cf884c11610081578063e1efb59611610066578063e1efb59614610350578063ea8f547f14610363578063f2fde38b146103ba57600080fd5b8063d9cf884c1461032a578063dbf156391461033d57600080fd5b8063a1bc17c5116100b2578063a1bc17c5146102f1578063b48272cc14610304578063c1733f681461031757600080fd5b8063715018a6146102d65780638da5cb5b146102e057600080fd5b806319d09bc911610124578063433f60ac11610109578063433f60ac1461029b5780634534ba17146102ae5780635137b8a7146102c157600080fd5b806319d09bc91461023d578063324980b51461027b57600080fd5b806304c2320b14610156578063056b01ce146101865780631255c189146101a9578063150b7a02146101d4575b600080fd5b61016961016436600461370f565b6103cd565b60405161017d9897969594939291906137ce565b60405180910390f35b610199610194366004613853565b6105d1565b604051901515815260200161017d565b6005546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b61020c6101e23660046138af565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017d565b61019961024b366004613853565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b61028e610289366004613853565b61092b565b60405161017d919061394a565b6101996102a9366004613cf0565b61114d565b6101996102bc366004613de0565b6114c0565b6102c961191b565b60405161017d9190613e8c565b6102de6119f4565b005b6000546001600160a01b03166101bc565b6101996102ff36600461370f565b611a08565b610199610312366004613853565b611c59565b61028e61032536600461370f565b61209c565b610199610338366004613853565b6120eb565b61019961034b366004613e9f565b612568565b61019961035e366004613853565b612650565b6103ac610371366004613f6a565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161017d929190613fc8565b6102de6103c8366004613fe5565b612985565b80516020818301810180516001825292820191909301209152805481906103f390614000565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90614000565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161049f90614000565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90614000565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509080600301805461052d90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461055990614000565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050506004830154600584015460069094015492936001600160a01b039091169290915060ff1688565b60006105db6129dc565b60006001600160a01b03166001846040516105f6919061403a565b908152604051908190036020019020600101546001600160a01b03160361063b578260405163c0bab25f60e01b81526004016106329190614056565b60405180910390fd5b6000821161068b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b600060018460405161069d919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156106d1576106d1613794565b03610757576106e284600085612a22565b61072e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b8260018560405161073f919061403a565b908152604051908190036020019020600501556108d6565b600281600281111561076b5761076b613794565b036108bb57600384604051610780919061403a565b90815260408051602092819003830190206000868152925290205460ff16156107eb5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220616c7265616479206578697374736044820152606401610632565b6107f784600085612a22565b6108435760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051610854919061403a565b90815260200160405180910390206005016000828254610874919061407f565b92505081905550600160038560405161088d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556108d6565b8360405163c16fc3ad60e01b81526004016106329190614056565b836040516108e4919061403a565b604051908190038120848252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a260019150505b92915050565b61096f60408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b6000600184604051610981919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156109b5576109b5613794565b03610c3b576001846040516109ca919061403a565b9081526020016040518091039020604051806101000160405290816000820180546109f490614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090614000565b8015610a6d5780601f10610a4257610100808354040283529160200191610a6d565b820191906000526020600020905b815481529060010190602001808311610a5057829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166002811115610aaa57610aaa613794565b6002811115610abb57610abb613794565b8152602001600282018054610acf90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90614000565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b50505050508152602001600382018054610b6190614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90614000565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260058201546040820152600682015460609091019060ff166003811115610c1e57610c1e613794565b6003811115610c2f57610c2f613794565b81525050915050610925565b6002816002811115610c4f57610c4f613794565b0361114657600384604051610c64919061403a565b90815260408051602092819003830190206000868152925290205460ff1615610ef757604051806101000160405280600186604051610ca3919061403a565b9081526040519081900360200190208054610cbd90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990614000565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050508152602001600186604051610d50919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051610d93919061403a565b9081526040519081900360200190206001015460ff600160a01b909104166002811115610dc257610dc2613794565b8152602001858152602001600186604051610ddd919061403a565b90815260200160405180910390206003018054610df990614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2590614000565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b50505050508152602001600186604051610e8c919061403a565b9081526040805160209281900383019020600401546001600160a01b031683529082018690528051910190600190610ec590889061403a565b9081526040519081900360200190206006015460ff166003811115610eec57610eec613794565b815250915050610925565b604051806101000160405280600186604051610f13919061403a565b9081526040519081900360200190208054610f2d90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990614000565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b50505050508152602001600186604051610fc0919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051611003919061403a565b9081526040519081900360200190206001015460ff600160a01b90910416600281111561103257611032613794565b815260200185815260200160018660405161104d919061403a565b9081526020016040518091039020600301805461106990614000565b80601f016020809104026020016040519081016040528092919081815260200182805461109590614000565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081526020016001866040516110fc919061403a565b908152602001604051809103902060040160009054906101000a90046001600160a01b03166001600160a01b0316815260200160008152602001600186604051610ec5919061403a565b5092915050565b60006111576129dc565b60006001600160a01b0316600187604051611172919061403a565b908152604051908190036020019020600101546001600160a01b0316146111c757856040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016106329190614056565b6111d18684612a39565b6002866040516111e1919061403a565b9081526040805160209281900383019020600360008181529190935220015460ff161561128557611213866003612b59565b6112855760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e000000006064820152608401610632565b6040518061010001604052808a8152602001896001600160a01b031681526020018860028111156112b8576112b8613794565b8152602001878152602001868152602001856001600160a01b03168152602001600081526020018360038111156112f1576112f1613794565b815250600187604051611304919061403a565b9081526040519081900360200190208151819061132190826140e0565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600281111561138a5761138a613794565b0217905550606082015160028201906113a390826140e0565b50608082015160038201906113b890826140e0565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c0820151600582015560e082015160068201805460ff1916600183600381111561141957611419613794565b021790555050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905061145d87826140e0565b508560405161146c919061403a565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8a8a8a886040516114a994939291906141a0565b60405180910390a250600198975050505050505050565b60006114ca6129dc565b60006001600160a01b03166001856040516114e5919061403a565b908152604051908190036020019020600101546001600160a01b031603611521578360405163c0bab25f60e01b81526004016106329190614056565b600082116115715760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600185604051611583919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156115b7576115b7613794565b036116c257826001866040516115cd919061403a565b908152602001604051809103902060050154101561162d5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b65646044820152606401610632565b61163a8560028587612b6f565b6116865760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c656400000000000000006044820152606401610632565b82600186604051611697919061403a565b908152602001604051809103902060050160008282546116b791906141e4565b909155506118b99050565b60028160028111156116d6576116d6613794565b0361189e5760006001866040516116ed919061403a565b9081526020016040518091039020600501541161174c5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b65646044820152606401610632565b60038560405161175c919061403a565b908152604080519182900360209081019092206000868152925290205460ff1615156001146117cd5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b6117da8560028587612b6f565b6118265760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018086604051611837919061403a565b9081526020016040518091039020600501600082825461185791906141e4565b925050819055506000600386604051611870919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556118b9565b8460405163c16fc3ad60e01b81526004016106329190614056565b846040516118c7919061403a565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a2506001949350505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156119eb57838290600052602060002001805461195e90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461198a90614000565b80156119d75780601f106119ac576101008083540402835291602001916119d7565b820191906000526020600020905b8154815290600101906020018083116119ba57829003601f168201915b50505050508152602001906001019061193f565b50505050905090565b6119fc6129dc565b611a066000612e8b565b565b6000611a126129dc565b60006001600160a01b0316600183604051611a2d919061403a565b908152604051908190036020019020600101546001600160a01b031603611a69578160405163c0bab25f60e01b81526004016106329190614056565b6000600183604051611a7b919061403a565b9081526020016040518091039020600501541115611ac757816040517fb7d2c10a0000000000000000000000000000000000000000000000000000000081526004016106329190614056565b611b79600183604051611ada919061403a565b90815260200160405180910390206002018054611af690614000565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290614000565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050612ee8565b600182604051611b89919061403a565b9081526040519081900360200190206000611ba48282613422565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055611bd2600283016000613422565b611be0600383016000613422565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820155600601805460ff19169055604051611c2090839061403a565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000611c636129dc565b60006001600160a01b0316600184604051611c7e919061403a565b908152604051908190036020019020600101546001600160a01b031603611cba578260405163c0bab25f60e01b81526004016106329190614056565b60008211611d0a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051611d1c919061403a565b90815260405190819003602001902060019081015460ff600160a01b909104169150816002811115611d5057611d50613794565b03611e5a5782600185604051611d66919061403a565b9081526020016040518091039020600501541015611dc65760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b656400006044820152606401610632565b611dd284600185612a22565b611e1e5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b82600185604051611e2f919061403a565b90815260200160405180910390206005016000828254611e4f91906141e4565b909155506120579050565b6002816002811115611e6e57611e6e613794565b036108bb576000600185604051611e85919061403a565b90815260200160405180910390206005015411611f0a5760405162461bcd60e51b815260206004820152602360248201527f547279696e6720746f206275726e20616e20756e6163636f756e74656420417360448201527f73657400000000000000000000000000000000000000000000000000000000006064820152608401610632565b600384604051611f1a919061403a565b908152604080519182900360209081019092206000868152925290205460ff161515600114611f8b5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b611f9784600185612a22565b611fe35760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051611ff4919061403a565b9081526020016040518091039020600501600082825461201491906141e4565b92505081905550600060038560405161202d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612065919061403a565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee9990602001610917565b6120e060408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b61092582600061092b565b60006120f56129dc565b60006001600160a01b0316600184604051612110919061403a565b908152604051908190036020019020600101546001600160a01b03160361214c578260405163c0bab25f60e01b81526004016106329190614056565b6000821161219c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b60006001846040516121ae919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156121e2576121e2613794565b0361230057826001856040516121f8919061403a565b90815260200160405180910390206005015410156122465783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016106329291906141f7565b61225284600585612a22565b6122c45760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610632565b826001856040516122d5919061403a565b908152602001604051809103902060050160008282546122f591906141e4565b909155506125239050565b600281600281111561231457612314613794565b036108bb57600384604051612329919061403a565b908152604080519182900360209081019092206000868152925290205460ff16151560011461239a5760405162461bcd60e51b815260206004820152601060248201527f546f6b656e204e6f74204c6f636b6564000000000000000000000000000000006044820152606401610632565b60006001856040516123ac919061403a565b908152602001604051809103902060050154116124315760405162461bcd60e51b815260206004820152603360248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206163636f756e74656420666f72000000000000000000000000006064820152608401610632565b61243d84600585612a22565b6124af5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610632565b600180856040516124c0919061403a565b908152602001604051809103902060050160008282546124e091906141e4565b9250508190555060006003856040516124f9919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612531919061403a565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001610917565b60006125726129dc565b3063433f60ac89898989898960006040519080825280602002602001820160405280156125dc57816020015b6125c96040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161259e5790505b508a6040518963ffffffff1660e01b8152600401612601989796959493929190614219565b6020604051808303816000875af1158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906143ba565b98975050505050505050565b600061265a6129dc565b60006001600160a01b0316600184604051612675919061403a565b908152604051908190036020019020600101546001600160a01b0316036126b1578260405163c0bab25f60e01b81526004016106329190614056565b600082116127015760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051612713919061403a565b90815260405190819003602001902060019081015460ff600160a01b90910416915081600281111561274757612747613794565b036127e05761275884600485612a22565b6127a45760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b826001856040516127b5919061403a565b908152602001604051809103902060050160008282546127d5919061407f565b909155506129409050565b60028160028111156127f4576127f4613794565b036108bb57600384604051612809919061403a565b90815260408051602092819003830190206000868152925290205460ff16156128745760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20416c7265616479204c6f636b65640000000000000000000000006044820152606401610632565b61288084600485612a22565b6128cc5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b600180856040516128dd919061403a565b908152602001604051809103902060050160008282546128fd919061407f565b925050819055506001600385604051612916919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b8360405161294e919061403a565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001610917565b61298d6129dc565b6001600160a01b0381166129d0576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610632565b6129d981612e8b565b50565b6000546001600160a01b03163314611a06576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610632565b6000612a318484846000612b6f565b949350505050565b60005b8151811015612b5457818181518110612a5757612a576143d7565b6020026020010151600284604051612a6f919061403a565b90815260200160405180910390206000848481518110612a9157612a916143d7565b6020026020010151600001516006811115612aae57612aae613794565b6006811115612abf57612abf613794565b8152602081019190915260400160002081518154829060ff19166001836006811115612aed57612aed613794565b02179055506020828101518051612b0a926001850192019061345c565b5060408201518051612b269160028401916020909101906134b2565b50606091909101516003909101805460ff191691151591909117905580612b4c816143ed565b915050612a3c565b505050565b6000612b688383600080612b6f565b9392505050565b6000600285604051612b81919061403a565b90815260200160405180910390206000856006811115612ba357612ba3613794565b6006811115612bb457612bb4613794565b815260208101919091526040016000206003015460ff16612bd757506000612a31565b60005b600286604051612bea919061403a565b90815260200160405180910390206000866006811115612c0c57612c0c613794565b6006811115612c1d57612c1d613794565b8152602081019190915260400160002060010154811015612e7f576000600287604051612c4a919061403a565b90815260200160405180910390206000876006811115612c6c57612c6c613794565b6006811115612c7d57612c7d613794565b81526020019081526020016000206001018281548110612c9f57612c9f6143d7565b90600052602060002001604051602001612cb99190614406565b6040516020818303038152906040528051906020012090506000612dd582612dd060028b604051612cea919061403a565b908152602001604051809103902060008b6006811115612d0c57612d0c613794565b6006811115612d1d57612d1d613794565b81526020019081526020016000206002018681548110612d3f57612d3f6143d7565b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015612dc357602002820191906000526020600020906000905b82829054906101000a900460ff166007811115612da157612da1613794565b815260206001928301818104948501949093039092029101808411612d825790505b50505050508b898b613046565b613363565b90506000600189604051612de9919061403a565b908152604051908190036020018120600101546001600160a01b031690612e1190849061403a565b6000604051808303816000865af19150503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5050905080612e69576000945050505050612a31565b5050508080612e77906143ed565b915050612bda565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60045481101561304257612fa460048281548110612f0b57612f0b6143d7565b906000526020600020018054612f2090614000565b80601f0160208091040260200160405190810160405280929190818152602001828054612f4c90614000565b8015612f995780601f10612f6e57610100808354040283529160200191612f99565b820191906000526020600020905b815481529060010190602001808311612f7c57829003601f168201915b5050505050836133fd565b156130305760048054612fb9906001906141e4565b81548110612fc957612fc96143d7565b9060005260206000200160048281548110612fe657612fe66143d7565b906000526020600020019081612ffc919061447c565b50600480548061300e5761300e614557565b60019003818190600052602060002001600061302a9190613422565b90555050565b8061303a816143ed565b915050612eeb565b5050565b60606000855167ffffffffffffffff8111156130645761306461362f565b60405190808252806020026020018201604052801561309757816020015b60608152602001906001900390816130825790505b50905060005b86518110156133595760058782815181106130ba576130ba6143d7565b602002602001015160078111156130d3576130d3613794565b036131155760408051306020820152015b604051602081830303815290604052828281518110613105576131056143d7565b6020026020010181905250613347565b6002878281518110613129576131296143d7565b6020026020010151600781111561314257613142613794565b0361315857856040516020016130e49190614056565b600487828151811061316c5761316c6143d7565b6020026020010151600781111561318557613185613794565b0361319b576040805160208101869052016130e4565b60038782815181106131af576131af6143d7565b602002602001015160078111156131c8576131c8613794565b03613206576001866040516131dd919061403a565b908152604080519182900360209081018320600401546001600160a01b031690830152016130e4565b600087828151811061321a5761321a6143d7565b6020026020010151600781111561323357613233613794565b0361327157600186604051613248919061403a565b908152604080519182900360209081018320600101546001600160a01b031690830152016130e4565b6006878281518110613285576132856143d7565b6020026020010151600781111561329e5761329e613794565b036132bc57604080516001600160a01b0387166020820152016130e4565b60078782815181106132d0576132d06143d7565b602002602001015160078111156132e9576132e9613794565b036132ff576040805160208101869052016130e4565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f72746564000000000000000000006044820152606401610632565b80613351816143ed565b91505061309d565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561114657818382815181106133c0576133c06143d7565b60200260200101516040516020016133d992919061456d565b604051602081830303815290604052915080806133f5906143ed565b9150506133a4565b600081518351148015612b685750508051602091820120825192909101919091201490565b50805461342e90614000565b6000825580601f1061343e575050565b601f0160209004906000526020600020908101906129d9919061350b565b8280548282559060005260206000209081019282156134a2579160200282015b828111156134a2578251829061349290826140e0565b509160200191906001019061347c565b506134ae929150613520565b5090565b8280548282559060005260206000209081019282156134ff579160200282015b828111156134ff57825180516134ef91849160209091019061353d565b50916020019190600101906134d2565b506134ae9291506135ed565b5b808211156134ae576000815560010161350c565b808211156134ae5760006135348282613422565b50600101613520565b82805482825590600052602060002090601f016020900481019282156135e15791602002820160005b838211156135b257835183826101000a81548160ff0219169083600781111561359157613591613794565b02179055509260200192600101602081600001049283019260010302613566565b80156135df5782816101000a81549060ff02191690556001016020816000010492830192600103026135b2565b505b506134ae92915061350b565b808211156134ae576000613601828261360a565b506001016135ed565b50805460008255601f0160209004906000526020600020908101906129d9919061350b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156136685761366861362f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136975761369761362f565b604052919050565b600082601f8301126136b057600080fd5b813567ffffffffffffffff8111156136ca576136ca61362f565b6136dd601f8201601f191660200161366e565b8181528460208386010111156136f257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561372157600080fd5b813567ffffffffffffffff81111561373857600080fd5b612a318482850161369f565b60005b8381101561375f578181015183820152602001613747565b50506000910152565b60008151808452613780816020860160208601613744565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106137ba576137ba613794565b9052565b600481106137ba576137ba613794565b60006101008083526137e28184018c613768565b90506001600160a01b03808b166020850152613801604085018b6137aa565b8382036060850152613813828a613768565b915083820360808501526138278289613768565b925080871660a085015250508360c083015261384660e08301846137be565b9998505050505050505050565b6000806040838503121561386657600080fd5b823567ffffffffffffffff81111561387d57600080fd5b6138898582860161369f565b95602094909401359450505050565b80356001600160a01b0381168114611c5457600080fd5b6000806000806000608086880312156138c757600080fd5b6138d086613898565b94506138de60208701613898565b935060408601359250606086013567ffffffffffffffff8082111561390257600080fd5b818801915088601f83011261391657600080fd5b81358181111561392557600080fd5b89602082850101111561393757600080fd5b9699959850939650602001949392505050565b6020815260008251610100806020850152613969610120850183613768565b9150602085015161398560408601826001600160a01b03169052565b50604085015161399860608601826137aa565b506060850151601f19808685030160808701526139b58483613768565b935060808701519150808685030160a0870152506139d38382613768565b92505060a08501516139f060c08601826001600160a01b03169052565b5060c085015160e085015260e0850151613a0c828601826137be565b5090949350505050565b803560038110611c5457600080fd5b600067ffffffffffffffff821115613a3f57613a3f61362f565b5060051b60200190565b803560078110611c5457600080fd5b600082601f830112613a6957600080fd5b81356020613a7e613a7983613a25565b61366e565b828152600592831b8501820192828201919087851115613a9d57600080fd5b8387015b85811015613b4257803567ffffffffffffffff811115613ac15760008081fd5b8801603f81018a13613ad35760008081fd5b858101356040613ae5613a7983613a25565b82815291851b8301810191888101908d841115613b025760008081fd5b938201935b83851015613b31578435925060088310613b215760008081fd5b8282529389019390890190613b07565b885250505093850193508401613aa1565b5090979650505050505050565b80151581146129d957600080fd5b8035611c5481613b4f565b600082601f830112613b7957600080fd5b613b86613a798335613a25565b82358082526020808301929160051b85010185811115613ba557600080fd5b602085015b81811015613cd65767ffffffffffffffff8082351115613bc957600080fd5b813587016080818a03601f19011215613be157600080fd5b613be9613645565b613bf560208301613a49565b8152604082013583811115613c0957600080fd5b8201603f81018b13613c1a57600080fd5b6020810135613c2b613a7982613a25565b81815260059190911b82016040019060208101908d831115613c4c57600080fd5b604084015b83811015613c85578781351115613c6757600080fd5b613c778f6040833588010161369f565b835260209283019201613c51565b506020850152505050606082013583811115613ca057600080fd5b613caf8b602083860101613a58565b604083015250613cc160808301613b5d565b60608201528652505060209384019301613baa565b509095945050505050565b803560048110611c5457600080fd5b600080600080600080600080610100898b031215613d0d57600080fd5b883567ffffffffffffffff80821115613d2557600080fd5b613d318c838d0161369f565b9950613d3f60208c01613898565b9850613d4d60408c01613a16565b975060608b0135915080821115613d6357600080fd5b613d6f8c838d0161369f565b965060808b0135915080821115613d8557600080fd5b613d918c838d0161369f565b9550613d9f60a08c01613898565b945060c08b0135915080821115613db557600080fd5b50613dc28b828c01613b68565b925050613dd160e08a01613ce1565b90509295985092959890939650565b600080600060608486031215613df557600080fd5b833567ffffffffffffffff811115613e0c57600080fd5b613e188682870161369f565b935050613e2760208501613898565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015613e7f578284038952613e6d848351613768565b98850198935090840190600101613e55565b5091979650505050505050565b602081526000612b686020830184613e37565b600080600080600080600060e0888a031215613eba57600080fd5b873567ffffffffffffffff80821115613ed257600080fd5b613ede8b838c0161369f565b9850613eec60208b01613898565b9750613efa60408b01613a16565b965060608a0135915080821115613f1057600080fd5b613f1c8b838c0161369f565b955060808a0135915080821115613f3257600080fd5b50613f3f8a828b0161369f565b935050613f4e60a08901613898565b9150613f5c60c08901613ce1565b905092959891949750929550565b60008060408385031215613f7d57600080fd5b823567ffffffffffffffff811115613f9457600080fd5b613fa08582860161369f565b925050613faf60208401613a49565b90509250929050565b600781106137ba576137ba613794565b60408101613fd68285613fb8565b82151560208301529392505050565b600060208284031215613ff757600080fd5b612b6882613898565b600181811c9082168061401457607f821691505b60208210810361403457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161404c818460208701613744565b9190910192915050565b602081526000612b686020830184613768565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092557610925614069565b601f821115612b5457600081815260208120601f850160051c810160208610156140b95750805b601f850160051c820191505b818110156140d8578281556001016140c5565b505050505050565b815167ffffffffffffffff8111156140fa576140fa61362f565b61410e816141088454614000565b84614092565b602080601f831160018114614143576000841561412b5750858301515b600019600386901b1c1916600185901b1785556140d8565b600085815260208120601f198616915b8281101561417257888601518255948401946001909101908401614153565b50858210156141905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006141b36080830187613768565b90506001600160a01b0380861660208401526141d260408401866137aa565b80841660608401525095945050505050565b8181038181111561092557610925614069565b60408152600061420a6040830185613768565b90508260208301529392505050565b6101008152600061422e61010083018b613768565b6001600160a01b03808b16602085015261424b604085018b6137aa565b838203606085015261425d828a613768565b915083820360808501526142718289613768565b915080871660a08501525082810360c084015280855180835260208301915060208160051b8401016020880160005b838110156143a457601f198087850301865282516142bf858251613fb8565b6020810151608060208701526142d86080870182613e37565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561436d57858203880184528451805180845260209182019184019060005b818110156143555783516008811061434157614341613794565b835260209384019390920191600101614327565b50506020968701969590950194925050600101614305565b506060860151965061438360608b018815159052565b809950505050505050506020820191506020850194506001810190506142a0565b50508094505050505061384660e08301846137be565b6000602082840312156143cc57600080fd5b8151612b6881613b4f565b634e487b7160e01b600052603260045260246000fd5b6000600182016143ff576143ff614069565b5060010190565b600080835461441481614000565b6001828116801561442c576001811461444157614470565b60ff1984168752821515830287019450614470565b8760005260208060002060005b858110156144675781548a82015290840190820161444e565b50505082870194505b50929695505050505050565b818103614487575050565b6144918254614000565b67ffffffffffffffff8111156144a9576144a961362f565b6144b7816141088454614000565b6000601f8211600181146144eb57600083156144d35750848201545b600019600385901b1c1916600184901b178455614550565b600085815260209020601f19841690600086815260209020845b838110156145255782860154825560019586019590910190602001614505565b50858310156145435781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b6000835161457f818460208801613744565b835190830190614593818360208801613744565b0194935050505056fea2646970667358221220cc545097d62ab752192a515a53206f325e79a54a4fe781e2769cb76ecb844be064736f6c63430008140033","sourceMap":"3424:22129:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3568:40;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;11514:1068;;;;;;:::i;:::-;;:::i;:::-;;;4496:14:8;;4489:22;4471:41;;4459:2;4444:18;11514:1068:7;4331:187:8;4149:29:7;;;;;-1:-1:-1;;;;;4149:29:7;;;;;;-1:-1:-1;;;;;4687:55:8;;;4669:74;;4657:2;4642:18;4149:29:7;4523:226:8;16157:163:7;;;;;;:::i;:::-;16283:30;16157:163;;;;;;;;;;;5942:66:8;5930:79;;;5912:98;;5900:2;5885:18;16157:163:7;5768:248:8;3959:59:7;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3959:59:7;;;;;;;;;;;17881:2076;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5773:1059::-;;;;;;:::i;:::-;;:::i;14620:1340::-;;;;;;:::i;:::-;;:::i;16412:94::-;;;:::i;:::-;;;;;;;:::i;2293:101:0:-;;;:::i;:::-;;1638:85;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;1638:85;;7658:445:7;;;;;;:::i;:::-;;:::i;12922:1255::-;;;;;;:::i;:::-;;:::i;17221:126::-;;;;;;:::i;:::-;;:::i;9837:1336::-;;;;;;:::i;:::-;;:::i;7026:388::-;;;;;;:::i;:::-;;:::i;8444:1044::-;;;;;;:::i;:::-;;:::i;3693:94::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3693:94:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2543:215:0:-;;;;;;:::i;:::-;;:::i;3568:40:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3568:40:7;;;;;;;;;;;-1:-1:-1;;;;;3568:40:7;;;-1:-1:-1;;;3568:40:7;;;;;;-1:-1:-1;3568:40:7;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3568:40:7;;;;;;;;;;;;;;;-1:-1:-1;;;;;3568:40:7;;;;;;-1:-1:-1;3568:40:7;;;:::o;11514:1068::-;11603:12;1531:13:0;:11;:13::i;:::-;11673:1:7::1;-1:-1:-1::0;;;;;11630:45:7::1;:6;11637:7;11630:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;11630:31:7::1;:45:::0;11627:107:::1;;11715:7;11697:26;;-1:-1:-1::0;;;11697:26:7::1;;;;;;;;:::i;:::-;;;;;;;;11627:107;11768:1;11751:14;:18;11743:54;;;::::0;-1:-1:-1;;;11743:54:7;;18658:2:8;11743:54:7::1;::::0;::::1;18640:21:8::0;18697:2;18677:18;;;18670:30;18736:25;18716:18;;;18709:53;18779:18;;11743:54:7::1;18456:347:8::0;11743:54:7::1;11808:12;11823:6;11830:7;11823:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;11823:25:7;;::::1;;::::0;-1:-1:-1;11862:2:7::1;:36;;;;;;;;:::i;:::-;::::0;11858:652:::1;;11922:55;11931:7;11940:20;11962:14;11922:8;:55::i;:::-;11914:91;;;::::0;-1:-1:-1;;;11914:91:7;;19010:2:8;11914:91:7::1;::::0;::::1;18992:21:8::0;19049:2;19029:18;;;19022:30;19088:24;19068:18;;;19061:52;19130:18;;11914:91:7::1;18808:346:8::0;11914:91:7::1;12044:14;12019:6;12026:7;12019:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:22:::1;;:39:::0;11858:652:::1;;;12093:33;12087:2;:39;;;;;;;;:::i;:::-;::::0;12083:427:::1;;12150:7;12158;12150:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;;::::1;;:41;12142:86;;;::::0;-1:-1:-1;;;12142:86:7;;19361:2:8;12142:86:7::1;::::0;::::1;19343:21:8::0;;;19380:18;;;19373:30;19439:34;19419:18;;;19412:62;19491:18;;12142:86:7::1;19159:356:8::0;12142:86:7::1;12250:55;12259:7;12268:20;12290:14;12250:8;:55::i;:::-;12242:91;;;::::0;-1:-1:-1;;;12242:91:7;;19010:2:8;12242:91:7::1;::::0;::::1;18992:21:8::0;19049:2;19029:18;;;19022:30;19088:24;19068:18;;;19061:52;19130:18;;12242:91:7::1;18808:346:8::0;12242:91:7::1;12373:1;12347:6:::0;12354:7:::1;12347:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;12423:4;12388:7;12396;12388:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:39;;-1:-1:-1;;12388:39:7::1;::::0;::::1;;::::0;;;::::1;::::0;;12083:427:::1;;;12491:7;12473:26;;-1:-1:-1::0;;;12473:26:7::1;;;;;;;;:::i;12083:427::-;12530:7;12525:29;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;19985:25:8;;;12525:29:7;::::1;::::0;19973:2:8;19958:18;12525:29:7::1;;;;;;;;12571:4;12564:11;;;1554:1:0;11514:1068:7::0;;;;:::o;17881:2076::-;17967:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17967:18:7;17997:12;18012:6;18019:7;18012:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:25;;;;;;-1:-1:-1;;;18012:25:7;;;;;-1:-1:-1;18272:2:7;:36;;;;;;;;:::i;:::-;;18268:1683;;18331:6;18338:7;18331:15;;;;;;:::i;:::-;;;;;;;;;;;;;18324:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18324:22:7;;;-1:-1:-1;;18324:22:7;;;;-1:-1:-1;;;;;18324:22:7;;;;;;;;;;;-1:-1:-1;;;18324:22:7;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18324:22:7;;;-1:-1:-1;;18324:22:7;;;;-1:-1:-1;;;;;18324:22:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;18268:1683;18930:33;18924:2;:39;;;;;;;;:::i;:::-;;18920:1031;;19398:7;19406;19398:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:32;;;;;;;;;;;19395:534;;;19457:206;;;;;;;;19463:6;19470:7;19463:15;;;;;;:::i;:::-;;;;;;;;;;;;;;19457:206;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19493:6;19500:7;19493:15;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;-1:-1:-1;;;;;19493:31:7;-1:-1:-1;;;;;19457:206:7;;;;;19526:6;19533:7;19526:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:25;;;;-1:-1:-1;;;19526:25:7;;;;19457:206;;;;;;;;:::i;:::-;;;;;19553:7;19457:206;;;;19562:6;19569:7;19562:15;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;19457:206;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19591:6;19598:7;19591:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:21;;;-1:-1:-1;;;;;19591:21:7;19457:206;;;;;;;;19630:15;;19457:206;;;19591:21;;19630:15;;19637:7;;19630:15;:::i;:::-;;;;;;;;;;;;;;:32;;;;;19457:206;;;;;;;;:::i;:::-;;;;19450:213;;;;;19395:534;19721:193;;;;;;;;19727:6;19734:7;19727:15;;;;;;:::i;:::-;;;;;;;;;;;;;;19721:193;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19757:6;19764:7;19757:15;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;-1:-1:-1;;;;;19757:31:7;-1:-1:-1;;;;;19721:193:7;;;;;19790:6;19797:7;19790:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:25;;;;-1:-1:-1;;;19790:25:7;;;;19721:193;;;;;;;;:::i;:::-;;;;;19817:7;19721:193;;;;19826:6;19833:7;19826:15;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;19721:193;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19855:6;19862:7;19855:15;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;-1:-1:-1;;;;;19855:21:7;-1:-1:-1;;;;;19721:193:7;;;;;19878:1;19721:193;;;;19881:6;19888:7;19881:15;;;;;;:::i;19395:534::-;17987:1970;17881:2076;;;;:::o;5773:1059::-;6033:16;1531:13:0;:11;:13::i;:::-;6107:1:7::1;-1:-1:-1::0;;;;;6064:45:7::1;:6;6071:7;6064:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;6064:31:7::1;:45;6061:110;;6152:7;6132:28;;;;;;;;;;;:::i;6061:110::-;6276:53;6307:7;6316:12;6276:30;:53::i;:::-;6343:18;6362:7;6343:27;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;6371:30:::1;6343:59;::::0;;;;;;;;:69:::1;::::0;::::1;;6340:221;;;6436:49;6445:7;6454:30;6436:8;:49::i;:::-;6428:122;;;::::0;-1:-1:-1;;;6428:122:7;;20223:2:8;6428:122:7::1;::::0;::::1;20205:21:8::0;20262:2;20242:18;;;20235:30;20301:34;20281:18;;;20274:62;20372:30;20352:18;;;20345:58;20420:19;;6428:122:7::1;20021:424:8::0;6428:122:7::1;6589:97;;;;;;;;6595:12;6589:97;;;;6609:15;-1:-1:-1::0;;;;;6589:97:7::1;;;;;6626:9;6589:97;;;;;;;;:::i;:::-;;;;;6637:7;6589:97;;;;6646:11;6589:97;;;;6659:5;-1:-1:-1::0;;;;;6589:97:7::1;;;;;6666:1;6589:97;;;;6669:16;6589:97;;;;;;;;:::i;:::-;;;::::0;6571:6:::1;6578:7;6571:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:115;;:15;;:115:::1;::::0;:15;:115:::1;:::i;:::-;-1:-1:-1::0;6571:115:7::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;6571:115:7;;::::1;-1:-1:-1::0;;6571:115:7;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;6571:115:7;;-1:-1:-1;;;6571:115:7;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;6571:115:7::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;6571:115:7::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;6571:115:7::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;6571:115:7::1;-1:-1:-1::0;;;;;6571:115:7;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;6571:115:7::1;-1:-1:-1::0;6571:115:7;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;;6701:3:7::1;:17:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;6701:17:7;;;;;::::1;::::0;-1:-1:-1;6701:17:7::1;6710:7:::0;6701:17;::::1;:::i;:::-;;6747:7;6742:62;;;;;;:::i;:::-;;;;;;;;;6756:12;6770:15;6787:9;6798:5;6742:62;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6821:4:7::1;5773:1059:::0;;;;;;;;;;:::o;14620:1340::-;14737:12;1531:13:0;:11;:13::i;:::-;14807:1:7::1;-1:-1:-1::0;;;;;14764:45:7::1;:6;14771:7;14764:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;14764:31:7::1;:45:::0;14761:107:::1;;14849:7;14831:26;;-1:-1:-1::0;;;14831:26:7::1;;;;;;;;:::i;14761:107::-;14902:1;14885:14;:18;14877:54;;;::::0;-1:-1:-1;;;14877:54:7;;18658:2:8;14877:54:7::1;::::0;::::1;18640:21:8::0;18697:2;18677:18;;;18670:30;18736:25;18716:18;;;18709:53;18779:18;;14877:54:7::1;18456:347:8::0;14877:54:7::1;14942:12;14957:6;14964:7;14957:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;14957:25:7;;::::1;;::::0;-1:-1:-1;14996:2:7::1;:36;;;;;;;;:::i;:::-;::::0;14992:877:::1;;15082:14;15056:6;15063:7;15056:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;15048:85;;;::::0;-1:-1:-1;;;15048:85:7;;23406:2:8;15048:85:7::1;::::0;::::1;23388:21:8::0;;;23425:18;;;23418:30;23484:34;23464:18;;;23457:62;23536:18;;15048:85:7::1;23204:356:8::0;15048:85:7::1;15155:75;15164:7;15173:22;15197:14;15213:16;15155:8;:75::i;:::-;15147:112;;;::::0;-1:-1:-1;;;15147:112:7;;23767:2:8;15147:112:7::1;::::0;::::1;23749:21:8::0;23806:2;23786:18;;;23779:30;23845:26;23825:18;;;23818:54;23889:18;;15147:112:7::1;23565:348:8::0;15147:112:7::1;15299:14;15273:6;15280:7;15273:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;14992:877:7::1;::::0;-1:-1:-1;14992:877:7::1;;15348:33;15342:2;:39;;;;;;;;:::i;:::-;::::0;15338:531:::1;;15430:1;15405:6;15412:7;15405:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;15397:71;;;::::0;-1:-1:-1;;;15397:71:7;;24253:2:8;15397:71:7::1;::::0;::::1;24235:21:8::0;;;24272:18;;;24265:30;24331:34;24311:18;;;24304:62;24383:18;;15397:71:7::1;24051:356:8::0;15397:71:7::1;15490:7;15498;15490:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;;:32:::1;::::0;;;;;;;;::::1;;:40;;:32:::0;:40:::1;15482:85;;;::::0;-1:-1:-1;;;15482:85:7;;24614:2:8;15482:85:7::1;::::0;::::1;24596:21:8::0;;;24633:18;;;24626:30;24692:34;24672:18;;;24665:62;24744:18;;15482:85:7::1;24412:356:8::0;15482:85:7::1;15589:75;15598:7;15607:22;15631:14;15647:16;15589:8;:75::i;:::-;15581:110;;;::::0;-1:-1:-1;;;15581:110:7;;24975:2:8;15581:110:7::1;::::0;::::1;24957:21:8::0;25014:2;24994:18;;;24987:30;25053:24;25033:18;;;25026:52;25095:18;;15581:110:7::1;24773:346:8::0;15581:110:7::1;15731:1;15705:6:::0;15712:7:::1;15705:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;15781:5;15746:7;15754;15746:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:40;;-1:-1:-1;;15746:40:7::1;::::0;::::1;;::::0;;;::::1;::::0;;15338:531:::1;;;15850:7;15832:26;;-1:-1:-1::0;;;15832:26:7::1;;;;;;;;:::i;15338:531::-;15890:7;15883:49;;;;;;:::i;:::-;;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;25316:55:8;;25298:74;;25403:2;25388:18;;25381:34;;;15883:49:7;::::1;::::0;25271:18:8;15883:49:7::1;;;;;;;-1:-1:-1::0;15949:4:7::1;::::0;14620:1340;-1:-1:-1;;;;14620:1340:7:o;16412:94::-;16462:15;16496:3;16489:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16412:94;:::o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;7658:445:7:-;7725:12;1531:13:0;:11;:13::i;:::-;7795:1:7::1;-1:-1:-1::0;;;;;7752:45:7::1;:6;7759:7;7752:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;7752:31:7::1;:45:::0;7749:108:::1;;7838:7;7820:26;;-1:-1:-1::0;;;7820:26:7::1;;;;;;;;:::i;7749:108::-;7894:1;7869:6;7876:7;7869:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;7866:83;;;7930:7;7918:20;;;;;;;;;;;:::i;7866:83::-;7972:40;7988:6;7995:7;7988:15;;;;;;:::i;:::-;;;;;;;;;;;;;:23;;7972:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:40::i;:::-;8029:6;8036:7;8029:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;::::1;8022:22;8029:15:::0;;8022:22:::1;:::i;:::-;;::::0;::::1;::::0;;-1:-1:-1;;8022:22:7;;;::::1;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;8022:22:7::1;::::0;::::1;::::0;;-1:-1:-1;;8022:22:7::1;::::0;;::::1;;::::0;::::1;::::0;::::1;;::::0;;-1:-1:-1;;8022:22:7::1;::::0;;8060:15:::1;::::0;::::1;::::0;8067:7;;8060:15:::1;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;8092:4:7::1;1554:1:0;7658:445:7::0;;;:::o;12922:1255::-;13011:12;1531:13:0;:11;:13::i;:::-;13081:1:7::1;-1:-1:-1::0;;;;;13038:45:7::1;:6;13045:7;13038:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;13038:31:7::1;:45:::0;13035:107:::1;;13123:7;13105:26;;-1:-1:-1::0;;;13105:26:7::1;;;;;;;;:::i;13035:107::-;13176:1;13159:14;:18;13151:54;;;::::0;-1:-1:-1;;;13151:54:7;;18658:2:8;13151:54:7::1;::::0;::::1;18640:21:8::0;18697:2;18677:18;;;18670:30;18736:25;18716:18;;;18709:53;18779:18;;13151:54:7::1;18456:347:8::0;13151:54:7::1;13216:12;13231:6;13238:7;13231:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;13231:25:7;;::::1;;::::0;-1:-1:-1;13270:2:7::1;:36;;;;;;;;:::i;:::-;::::0;13266:839:::1;;13356:14;13330:6;13337:7;13330:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;13322:83;;;::::0;-1:-1:-1;;;13322:83:7;;25628:2:8;13322:83:7::1;::::0;::::1;25610:21:8::0;25667:2;25647:18;;;25640:30;25706:32;25686:18;;;25679:60;25756:18;;13322:83:7::1;25426:354:8::0;13322:83:7::1;13427:55;13436:7;13445:20;13467:14;13427:8;:55::i;:::-;13419:90;;;::::0;-1:-1:-1;;;13419:90:7;;25987:2:8;13419:90:7::1;::::0;::::1;25969:21:8::0;26026:2;26006:18;;;25999:30;26065:24;26045:18;;;26038:52;26107:18;;13419:90:7::1;25785:346:8::0;13419:90:7::1;13549:14;13523:6;13530:7;13523:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;13266:839:7::1;::::0;-1:-1:-1;13266:839:7::1;;13598:33;13592:2;:39;;;;;;;;:::i;:::-;::::0;13588:517:::1;;13680:1;13655:6;13662:7;13655:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;13647:74;;;::::0;-1:-1:-1;;;13647:74:7;;26338:2:8;13647:74:7::1;::::0;::::1;26320:21:8::0;26377:2;26357:18;;;26350:30;26416:34;26396:18;;;26389:62;26487:5;26467:18;;;26460:33;26510:19;;13647:74:7::1;26136:399:8::0;13647:74:7::1;13743:7;13751;13743:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;;:32:::1;::::0;;;;;;;;::::1;;:40;;:32:::0;:40:::1;13735:85;;;::::0;-1:-1:-1;;;13735:85:7;;24614:2:8;13735:85:7::1;::::0;::::1;24596:21:8::0;;;24633:18;;;24626:30;24692:34;24672:18;;;24665:62;24744:18;;13735:85:7::1;24412:356:8::0;13735:85:7::1;13842:55;13851:7;13860:20;13882:14;13842:8;:55::i;:::-;13834:90;;;::::0;-1:-1:-1;;;13834:90:7;;25987:2:8;13834:90:7::1;::::0;::::1;25969:21:8::0;26026:2;26006:18;;;25999:30;26065:24;26045:18;;;26038:52;26107:18;;13834:90:7::1;25785:346:8::0;13834:90:7::1;13964:1;13938:6:::0;13945:7:::1;13938:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;14014:5;13979:7;13987;13979:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:40;;-1:-1:-1;;13979:40:7::1;::::0;::::1;;::::0;;;::::1;::::0;;13588:517:::1;14125:7;14120:29;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;19985:25:8;;;14120:29:7;::::1;::::0;19973:2:8;19958:18;14120:29:7::1;19839:177:8::0;17221:126:7;17283:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17283:18:7;17320:20;17329:7;17338:1;17320:8;:20::i;9837:1336::-;9928:12;1531:13:0;:11;:13::i;:::-;9999:1:7::1;-1:-1:-1::0;;;;;9956:45:7::1;:6;9963:7;9956:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;9956:31:7::1;:45:::0;9952:108:::1;;10041:7;10023:26;;-1:-1:-1::0;;;10023:26:7::1;;;;;;;;:::i;9952:108::-;10094:1;10077:14;:18;10069:54;;;::::0;-1:-1:-1;;;10069:54:7;;18658:2:8;10069:54:7::1;::::0;::::1;18640:21:8::0;18697:2;18677:18;;;18670:30;18736:25;18716:18;;;18709:53;18779:18;;10069:54:7::1;18456:347:8::0;10069:54:7::1;10134:12;10149:6;10156:7;10149:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;10149:25:7;;::::1;;::::0;-1:-1:-1;10188:2:7::1;:36;;;;;;;;:::i;:::-;::::0;10184:915:::1;;10268:14;10243:6;10250:7;10243:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:39;10240:132;;;10333:7;10342:14;10309:48;;;;;;;;;;;;:::i;10240:132::-;10393:57;10402:7;10411:22;10435:14;10393:8;:57::i;:::-;10385:103;;;::::0;-1:-1:-1;;;10385:103:7;;27038:2:8;10385:103:7::1;::::0;::::1;27020:21:8::0;27077:2;27057:18;;;27050:30;27116:34;27096:18;;;27089:62;27187:3;27167:18;;;27160:31;27208:19;;10385:103:7::1;26836:397:8::0;10385:103:7::1;10528:14;10502:6;10509:7;10502:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;10184:915:7::1;::::0;-1:-1:-1;10184:915:7::1;;10577:33;10571:2;:39;;;;;;;;:::i;:::-;::::0;10567:532:::1;;10634:7;10642;10634:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;;:32:::1;::::0;;;;;;;;::::1;;:40;;:32:::0;:40:::1;10626:69;;;::::0;-1:-1:-1;;;10626:69:7;;27440:2:8;10626:69:7::1;::::0;::::1;27422:21:8::0;27479:2;27459:18;;;27452:30;27518:18;27498;;;27491:46;27554:18;;10626:69:7::1;27238:340:8::0;10626:69:7::1;10742:1;10717:6;10724:7;10717:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;10709:90;;;::::0;-1:-1:-1;;;10709:90:7;;27785:2:8;10709:90:7::1;::::0;::::1;27767:21:8::0;27824:2;27804:18;;;27797:30;27863:34;27843:18;;;27836:62;27934:21;27914:18;;;27907:49;27973:19;;10709:90:7::1;27583:415:8::0;10709:90:7::1;10821:57;10830:7;10839:22;10863:14;10821:8;:57::i;:::-;10813:107;;;::::0;-1:-1:-1;;;10813:107:7;;28205:2:8;10813:107:7::1;::::0;::::1;28187:21:8::0;28244:2;28224:18;;;28217:30;28283:34;28263:18;;;28256:62;28354:7;28334:18;;;28327:35;28379:19;;10813:107:7::1;28003:401:8::0;10813:107:7::1;10960:1;10934:6:::0;10941:7:::1;10934:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;11010:5;10975:7;10983;10975:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:40;;-1:-1:-1;;10975:40:7::1;::::0;::::1;;::::0;;;::::1;::::0;;10567:532:::1;11121:7;11114:31;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;19985:25:8;;;11114:31:7;::::1;::::0;19973:2:8;19958:18;11114:31:7::1;19839:177:8::0;7026:388:7;7243:16;1531:13:0;:11;:13::i;:::-;7278:4:7::1;:9;7288:12:::0;7302:15;7319:9;7330:7;7339:11;7352:5;7386:1:::1;7359:29;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7359:29:7::1;;;;;;;;;;;;;;;;;7390:16;7278:129;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7271:136:::0;7026:388;-1:-1:-1;;;;;;;;7026:388:7:o;8444:1044::-;8533:12;1531:13:0;:11;:13::i;:::-;8603:1:7::1;-1:-1:-1::0;;;;;8560:45:7::1;:6;8567:7;8560:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;8560:31:7::1;:45:::0;8557:107:::1;;8645:7;8627:26;;-1:-1:-1::0;;;8627:26:7::1;;;;;;;;:::i;8557:107::-;8698:1;8681:14;:18;8673:54;;;::::0;-1:-1:-1;;;8673:54:7;;18658:2:8;8673:54:7::1;::::0;::::1;18640:21:8::0;18697:2;18677:18;;;18670:30;18736:25;18716:18;;;18709:53;18779:18;;8673:54:7::1;18456:347:8::0;8673:54:7::1;8738:12;8753:6;8760:7;8753:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;8753:25:7;;::::1;;::::0;-1:-1:-1;8792:2:7::1;:36;;;;;;;;:::i;:::-;::::0;8788:629:::1;;8852:55;8861:7;8870:20;8892:14;8852:8;:55::i;:::-;8844:85;;;::::0;-1:-1:-1;;;8844:85:7;;32275:2:8;8844:85:7::1;::::0;::::1;32257:21:8::0;32314:2;32294:18;;;32287:30;32353:19;32333:18;;;32326:47;32390:18;;8844:85:7::1;32073:341:8::0;8844:85:7::1;8969:14;8943:6;8950:7;8943:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;8788:629:7::1;::::0;-1:-1:-1;8788:629:7::1;;9018:33;9012:2;:39;;;;;;;;:::i;:::-;::::0;9008:409:::1;;9075:7;9083;9075:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;;::::1;;:41;9067:74;;;::::0;-1:-1:-1;;;9067:74:7;;32621:2:8;9067:74:7::1;::::0;::::1;32603:21:8::0;32660:2;32640:18;;;32633:30;32699:22;32679:18;;;32672:50;32739:18;;9067:74:7::1;32419:344:8::0;9067:74:7::1;9163:55;9172:7;9181:20;9203:14;9163:8;:55::i;:::-;9155:85;;;::::0;-1:-1:-1;;;9155:85:7;;32275:2:8;9155:85:7::1;::::0;::::1;32257:21:8::0;32314:2;32294:18;;;32287:30;32353:19;32333:18;;;32326:47;32390:18;;9155:85:7::1;32073:341:8::0;9155:85:7::1;9280:1;9254:6:::0;9261:7:::1;9254:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;9330:4;9295:7;9303;9295:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:39;;-1:-1:-1;;9295:39:7::1;::::0;::::1;;::::0;;;::::1;::::0;;9008:409:::1;9436:7;9431:29;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;19985:25:8;;;9431:29:7;::::1;::::0;19973:2:8;19958:18;9431:29:7::1;19839:177:8::0;2543:215:0;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:0;::::1;2623:91;;2672:31;::::0;::::1;::::0;;2700:1:::1;2672:31;::::0;::::1;4669:74:8::0;4642:18;;2672:31:0::1;4523:226:8::0;2623:91:0::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;735:10:2;1855:23:0;1851:101;;1901:40;;;;;735:10:2;1901:40:0;;;4669:74:8;4642:18;;1901:40:0;4523:226:8;21229:216:7;21345:12;21376:62;21385:7;21394:15;21411:14;21435:1;21376:8;:62::i;:::-;21369:69;21229:216;-1:-1:-1;;;;21229:216:7:o;20201:281::-;20331:6;20327:149;20347:12;:19;20343:1;:23;20327:149;;;20450:12;20463:1;20450:15;;;;;;;;:::i;:::-;;;;;;;20387:18;20406:7;20387:27;;;;;;:::i;:::-;;;;;;;;;;;;;:60;20415:12;20428:1;20415:15;;;;;;;;:::i;:::-;;;;;;;:31;;;20387:60;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;20387:60:7;:78;;;;:60;;-1:-1:-1;;20387:78:7;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;20387:78:7;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20387:78:7;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20387:78:7;;;;;;;;;;;;-1:-1:-1;;20387:78:7;;;;;;;;;;20368:3;;;;:::i;:::-;;;;20327:149;;;;20201:281;;:::o;20709:180::-;20802:12;20833:49;20842:7;20851:15;20868:1;20879;20833:8;:49::i;:::-;20826:56;20709:180;-1:-1:-1;;;20709:180:7:o;22129:911::-;22263:4;22284:18;22303:7;22284:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;22312:15;22284:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;22284:44:7;:54;;;;;22279:98;;-1:-1:-1;22361:5:7;22354:12;;22279:98;22392:6;22387:625;22408:18;22427:7;22408:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;22436:15;22408:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;22408:44:7;:63;;:70;22404:74;;22387:625;;;22499:23;22559:18;22578:7;22559:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;22587:15;22559:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:63;;22623:1;22559:66;;;;;;;;:::i;:::-;;;;;;;;22542:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;22532:95;;;;;;22499:129;;22643:26;22672:164;22692:16;22710:125;22742:18;22761:7;22742:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;22770:15;22742:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:54;;22797:1;22742:57;;;;;;;;:::i;:::-;;;;;;;;22710:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22801:7;22810:8;22820:14;22710:31;:125::i;:::-;22672:19;:164::i;:::-;22643:193;;22852:16;22874:6;22881:7;22874:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:31;;;-1:-1:-1;;;;;22874:31:7;;:51;;22911:13;;22874:51;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22851:74;;;22944:11;22939:63;;22982:5;22975:12;;;;;;;;22939:63;22485:527;;;22480:3;;;;;:::i;:::-;;;;22387:625;;;-1:-1:-1;23029:4:7;;22129:911;-1:-1:-1;;;;;22129:911:7:o;2912:187:0:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;16633:276:7:-;16701:9;16696:207;16720:3;:10;16716:14;;16696:207;;;16755:25;16769:3;16773:1;16769:6;;;;;;;;:::i;:::-;;;;;;;;16755:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16777:2;16755:13;:25::i;:::-;16751:142;;;16809:3;16813:10;;:14;;16826:1;;16813:14;:::i;:::-;16809:19;;;;;;;;:::i;:::-;;;;;;;;16800:3;16804:1;16800:6;;;;;;;;:::i;:::-;;;;;;;;:28;;;;;;:::i;:::-;;16846:3;:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;16696:207;16633:276;:::o;16751:142::-;16732:3;;;;:::i;:::-;;;;16696:207;;;;16633:276;:::o;24121:1430::-;24296:14;24321:28;24364:9;:16;24352:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24321:60;;24396:6;24391:1124;24412:9;:16;24408:1;:20;24391:1124;;;24469:31;24453:9;24463:1;24453:12;;;;;;;;:::i;:::-;;;;;;;:47;;;;;;;;:::i;:::-;;24449:1056;;24539:25;;;24558:4;24539:25;;;4669:74:8;4642:18;24539:25:7;;;;;;;;;;;;;24520:13;24534:1;24520:16;;;;;;;;:::i;:::-;;;;;;:44;;;;24449:1056;;;24605:32;24589:9;24599:1;24589:12;;;;;;;;:::i;:::-;;;;;;;:48;;;;;;;;:::i;:::-;;24585:920;;24687:7;24676:19;;;;;;;;:::i;24585:920::-;24736:31;24720:9;24730:1;24720:12;;;;;;;;:::i;:::-;;;;;;;:47;;;;;;;;:::i;:::-;;24716:789;;24806:26;;;;;;19985:25:8;;;19958:18;24806:26:7;19839:177:8;24716:789:7;24873:30;24857:9;24867:1;24857:12;;;;;;;;:::i;:::-;;;;;;;:46;;;;;;;;:::i;:::-;;24853:652;;24953:6;24960:7;24953:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:21;;;-1:-1:-1;;;;;24953:21:7;24942:33;;;4669:74:8;4642:18;24942:33:7;4523:226:8;24853:652:7;25016:40;25000:9;25010:1;25000:12;;;;;;;;:::i;:::-;;;;;;;:56;;;;;;;;:::i;:::-;;24996:509;;25106:6;25113:7;25106:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:31;;;-1:-1:-1;;;;;25106:31:7;25095:43;;;4669:74:8;4642:18;25095:43:7;4523:226:8;24996:509:7;25179:33;25163:9;25173:1;25163:12;;;;;;;;:::i;:::-;;;;;;;:49;;;;;;;;:::i;:::-;;25159:346;;25251:20;;;-1:-1:-1;;;;;4687:55:8;;25251:20:7;;;4669:74:8;4642:18;25251:20:7;4523:226:8;25159:346:7;25312:42;25296:9;25306:1;25296:12;;;;;;;;:::i;:::-;;;;;;;:58;;;;;;;;:::i;:::-;;25292:213;;25393:26;;;;;;19985:25:8;;;19958:18;25393:26:7;19839:177:8;25292:213:7;25458:32;;-1:-1:-1;;;25458:32:7;;36067:2:8;25458:32:7;;;36049:21:8;36106:2;36086:18;;;36079:30;36145:24;36125:18;;;36118:52;36187:18;;25458:32:7;35865:346:8;25292:213:7;24430:3;;;;:::i;:::-;;;;24391:1124;;;-1:-1:-1;25531:13:7;24121:1430;-1:-1:-1;;;;;24121:1430:7:o;23310:382::-;23471:34;;;36367:66:8;36355:79;;23471:34:7;;;36343:92:8;23471:34:7;;;;;;;;;36451:11:8;;;;23471:34:7;;;23520:9;23515:141;23539:13;:20;23535:1;:24;23515:141;;;23613:13;23628;23642:1;23628:16;;;;;;;;:::i;:::-;;;;;;;23596:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23580:65;;23561:3;;;;;:::i;:::-;;;;23515:141;;2914:182:3;2986:4;3034:1;3028:15;3015:1;3009:15;:34;:80;;;;-1:-1:-1;;3070:19:3;;;;;;;3047;;;;;;;;;;:42;;2914:182::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:184:8:-;-1:-1:-1;;;63:1:8;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:253;275:2;269:9;317:4;305:17;;352:18;337:34;;373:22;;;334:62;331:88;;;399:18;;:::i;:::-;435:2;428:22;203:253;:::o;461:275::-;532:2;526:9;597:2;578:13;;-1:-1:-1;;574:27:8;562:40;;632:18;617:34;;653:22;;;614:62;611:88;;;679:18;;:::i;:::-;715:2;708:22;461:275;;-1:-1:-1;461:275:8:o;741:531::-;784:5;837:3;830:4;822:6;818:17;814:27;804:55;;855:1;852;845:12;804:55;891:6;878:20;917:18;913:2;910:26;907:52;;;939:18;;:::i;:::-;983:55;1026:2;1007:13;;-1:-1:-1;;1003:27:8;1032:4;999:38;983:55;:::i;:::-;1063:2;1054:7;1047:19;1109:3;1102:4;1097:2;1089:6;1085:15;1081:26;1078:35;1075:55;;;1126:1;1123;1116:12;1075:55;1191:2;1184:4;1176:6;1172:17;1165:4;1156:7;1152:18;1139:55;1239:1;1214:16;;;1232:4;1210:27;1203:38;;;;1218:7;741:531;-1:-1:-1;;;741:531:8:o;1277:322::-;1346:6;1399:2;1387:9;1378:7;1374:23;1370:32;1367:52;;;1415:1;1412;1405:12;1367:52;1455:9;1442:23;1488:18;1480:6;1477:30;1474:50;;;1520:1;1517;1510:12;1474:50;1543;1585:7;1576:6;1565:9;1561:22;1543:50;:::i;1604:250::-;1689:1;1699:113;1713:6;1710:1;1707:13;1699:113;;;1789:11;;;1783:18;1770:11;;;1763:39;1735:2;1728:10;1699:113;;;-1:-1:-1;;1846:1:8;1828:16;;1821:27;1604:250::o;1859:271::-;1901:3;1939:5;1933:12;1966:6;1961:3;1954:19;1982:76;2051:6;2044:4;2039:3;2035:14;2028:4;2021:5;2017:16;1982:76;:::i;:::-;2112:2;2091:15;-1:-1:-1;;2087:29:8;2078:39;;;;2119:4;2074:50;;1859:271;-1:-1:-1;;1859:271:8:o;2267:184::-;-1:-1:-1;;;2316:1:8;2309:88;2416:4;2413:1;2406:15;2440:4;2437:1;2430:15;2456:140;2537:1;2530:5;2527:12;2517:46;;2543:18;;:::i;:::-;2572;;2456:140::o;2601:147::-;2689:1;2682:5;2679:12;2669:46;;2695:18;;:::i;2753:1082::-;3132:4;3161:3;3191:2;3180:9;3173:21;3217:45;3258:2;3247:9;3243:18;3235:6;3217:45;:::i;:::-;3203:59;;-1:-1:-1;;;;;3371:2:8;3363:6;3359:15;3354:2;3343:9;3339:18;3332:43;3384:53;3433:2;3422:9;3418:18;3410:6;3384:53;:::i;:::-;3485:9;3477:6;3473:22;3468:2;3457:9;3453:18;3446:50;3519:33;3545:6;3537;3519:33;:::i;:::-;3505:47;;3601:9;3593:6;3589:22;3583:3;3572:9;3568:19;3561:51;3629:33;3655:6;3647;3629:33;:::i;:::-;3621:41;;3711:2;3703:6;3699:15;3693:3;3682:9;3678:19;3671:44;;;3752:6;3746:3;3735:9;3731:19;3724:35;3768:61;3824:3;3813:9;3809:19;3801:6;3768:61;:::i;:::-;2753:1082;;;;;;;;;;;:::o;3840:390::-;3918:6;3926;3979:2;3967:9;3958:7;3954:23;3950:32;3947:52;;;3995:1;3992;3985:12;3947:52;4035:9;4022:23;4068:18;4060:6;4057:30;4054:50;;;4100:1;4097;4090:12;4054:50;4123;4165:7;4156:6;4145:9;4141:22;4123:50;:::i;:::-;4113:60;4220:2;4205:18;;;;4192:32;;-1:-1:-1;;;;3840:390:8:o;4754:196::-;4822:20;;-1:-1:-1;;;;;4871:54:8;;4861:65;;4851:93;;4940:1;4937;4930:12;4955:808;5052:6;5060;5068;5076;5084;5137:3;5125:9;5116:7;5112:23;5108:33;5105:53;;;5154:1;5151;5144:12;5105:53;5177:29;5196:9;5177:29;:::i;:::-;5167:39;;5225:38;5259:2;5248:9;5244:18;5225:38;:::i;:::-;5215:48;;5310:2;5299:9;5295:18;5282:32;5272:42;;5365:2;5354:9;5350:18;5337:32;5388:18;5429:2;5421:6;5418:14;5415:34;;;5445:1;5442;5435:12;5415:34;5483:6;5472:9;5468:22;5458:32;;5528:7;5521:4;5517:2;5513:13;5509:27;5499:55;;5550:1;5547;5540:12;5499:55;5590:2;5577:16;5616:2;5608:6;5605:14;5602:34;;;5632:1;5629;5622:12;5602:34;5677:7;5672:2;5663:6;5659:2;5655:15;5651:24;5648:37;5645:57;;;5698:1;5695;5688:12;5645:57;4955:808;;;;-1:-1:-1;4955:808:8;;-1:-1:-1;5729:2:8;5721:11;;5751:6;4955:808;-1:-1:-1;;;4955:808:8:o;6021:1336::-;6196:2;6185:9;6178:21;6159:4;6234:6;6228:13;6260:6;6302:2;6297;6286:9;6282:18;6275:30;6328:52;6375:3;6364:9;6360:19;6346:12;6328:52;:::i;:::-;6314:66;;6429:2;6421:6;6417:15;6411:22;6442:54;6492:2;6481:9;6477:18;6461:14;-1:-1:-1;;;;;2201:54:8;2189:67;;2135:127;6442:54;;6545:2;6537:6;6533:15;6527:22;6558:61;6615:2;6604:9;6600:18;6584:14;6558:61;:::i;:::-;;6668:2;6660:6;6656:15;6650:22;6695:2;6691:7;6763:2;6751:9;6743:6;6739:22;6735:31;6729:3;6718:9;6714:19;6707:60;6790:41;6824:6;6808:14;6790:41;:::i;:::-;6776:55;;6880:3;6872:6;6868:16;6862:23;6840:45;;6950:2;6938:9;6930:6;6926:22;6922:31;6916:3;6905:9;6901:19;6894:60;;6977:41;7011:6;6995:14;6977:41;:::i;:::-;6963:55;;;7067:3;7059:6;7055:16;7049:23;7081:55;7131:3;7120:9;7116:19;7100:14;-1:-1:-1;;;;;2201:54:8;2189:67;;2135:127;7081:55;;7191:3;7183:6;7179:16;7173:23;7167:3;7156:9;7152:19;7145:52;7246:3;7238:6;7234:16;7228:23;7260:68;7324:2;7313:9;7309:18;7293:14;7260:68;:::i;:::-;-1:-1:-1;7345:6:8;;6021:1336;-1:-1:-1;;;;6021:1336:8:o;7362:150::-;7437:20;;7486:1;7476:12;;7466:40;;7502:1;7499;7492:12;7517:203;7597:4;7630:18;7622:6;7619:30;7616:56;;;7652:18;;:::i;:::-;-1:-1:-1;7697:1:8;7693:14;7709:4;7689:25;;7517:203::o;7725:156::-;7806:20;;7855:1;7845:12;;7835:40;;7871:1;7868;7861:12;7886:1948;7972:5;8025:3;8018:4;8010:6;8006:17;8002:27;7992:55;;8043:1;8040;8033:12;7992:55;8079:6;8066:20;8105:4;8129:80;8145:63;8205:2;8145:63;:::i;:::-;8129:80;:::i;:::-;8243:15;;;8305:1;8345:11;;;8333:24;;8329:33;;;8274:12;;;;8231:3;8374:15;;;8371:35;;;8402:1;8399;8392:12;8371:35;8438:2;8430:6;8426:15;8450:1355;8466:6;8461:3;8458:15;8450:1355;;;8552:3;8539:17;8588:18;8575:11;8572:35;8569:125;;;8648:1;8677:2;8673;8666:14;8569:125;8717:24;;8776:2;8768:11;;8764:21;-1:-1:-1;8754:119:8;;8827:1;8856:2;8852;8845:14;8754:119;8917:2;8913;8909:11;8896:25;8944:2;8972:80;8988:63;9048:2;8988:63;:::i;8972:80::-;9096:17;;;9190:11;;;9182:20;;9178:29;;;9135:14;;;;9223:17;;;9220:107;;;9281:1;9310:2;9306;9299:14;9220:107;9353:11;;;;9377:355;9395:8;9388:5;9385:19;9377:355;;;9489:5;9476:19;9463:32;;9532:1;9525:5;9522:12;9512:129;;9585:1;9619:3;9614;9607:16;9512:129;9658:20;;;9416:14;;;;9704;;;;9377:355;;;9745:18;;-1:-1:-1;;;9783:12:8;;;;-1:-1:-1;8483:12:8;;8450:1355;;;-1:-1:-1;9823:5:8;;7886:1948;-1:-1:-1;;;;;;;7886:1948:8:o;9839:118::-;9925:5;9918:13;9911:21;9904:5;9901:32;9891:60;;9947:1;9944;9937:12;9962:128;10027:20;;10056:28;10027:20;10056:28;:::i;10095:2283::-;10169:5;10222:3;10215:4;10207:6;10203:17;10199:27;10189:55;;10240:1;10237;10230:12;10189:55;10264:98;10280:81;10353:6;10340:20;10280:81;:::i;10264:98::-;10408:20;;10396:33;;;10454:4;10445:14;;;;10384:3;10502:1;10498:28;10486:41;;10482:52;10546:15;;;10543:35;;;10574:1;10571;10564:12;10543:35;10610:4;10602:6;10598:17;10624:1725;10640:6;10635:3;10632:15;10624:1725;;;10706:18;10762:2;10756:3;10743:17;10740:25;10737:45;;;10778:1;10775;10768:12;10737:45;10817:17;;10805:30;;10883:4;10859:12;;;-1:-1:-1;;10855:26:8;10851:37;10848:57;;;10901:1;10898;10891:12;10848:57;10931:22;;:::i;:::-;10980:46;11020:4;11016:2;11012:13;10980:46;:::i;:::-;10973:5;10966:61;11077:2;11073;11069:11;11056:25;11110:2;11100:8;11097:16;11094:36;;;11126:1;11123;11116:12;11094:36;11153:17;;11205:2;11197:11;;11193:21;-1:-1:-1;11183:49:8;;11228:1;11225;11218:12;11183:49;11276:4;11272:2;11268:13;11255:27;11308:80;11324:63;11384:2;11324:63;:::i;11308:80::-;11432:17;;;11532:1;11528:10;;;;11520:19;;11541:2;11516:28;;11482:4;11471:16;;;11560:17;;;11557:37;;;11590:1;11587;11580:12;11557:37;11628:2;11624;11620:11;11644:284;11662:8;11655:5;11652:19;11644:284;;;11759:2;11751:5;11738:19;11735:27;11732:47;;;11775:1;11772;11765:12;11732:47;11810:61;11867:3;11862:2;11853:5;11840:19;11836:2;11832:28;11828:37;11810:61;:::i;:::-;11796:76;;11909:4;11898:16;;;;11683;11644:284;;;-1:-1:-1;11959:4:8;11948:16;;11941:31;-1:-1:-1;;;12022:2:8;12014:11;;12001:25;12042:16;;;12039:36;;;12071:1;12068;12061:12;12039:36;12111:95;12202:3;12195:4;12184:8;12180:2;12176:17;12172:28;12111:95;:::i;:::-;12106:2;12099:5;12095:14;12088:119;;12243:30;12267:4;12263:2;12259:13;12243:30;:::i;:::-;12238:2;12227:14;;12220:54;12287:18;;-1:-1:-1;;12334:4:8;12325:14;;;;10657;10624:1725;;;-1:-1:-1;12367:5:8;;10095:2283;-1:-1:-1;;;;;10095:2283:8:o;12383:157::-;12465:20;;12514:1;12504:12;;12494:40;;12530:1;12527;12520:12;12545:1384;12795:6;12803;12811;12819;12827;12835;12843;12851;12904:3;12892:9;12883:7;12879:23;12875:33;12872:53;;;12921:1;12918;12911:12;12872:53;12961:9;12948:23;12990:18;13031:2;13023:6;13020:14;13017:34;;;13047:1;13044;13037:12;13017:34;13070:50;13112:7;13103:6;13092:9;13088:22;13070:50;:::i;:::-;13060:60;;13139:38;13173:2;13162:9;13158:18;13139:38;:::i;:::-;13129:48;;13196:45;13237:2;13226:9;13222:18;13196:45;:::i;:::-;13186:55;;13294:2;13283:9;13279:18;13266:32;13250:48;;13323:2;13313:8;13310:16;13307:36;;;13339:1;13336;13329:12;13307:36;13362:52;13406:7;13395:8;13384:9;13380:24;13362:52;:::i;:::-;13352:62;;13467:3;13456:9;13452:19;13439:33;13423:49;;13497:2;13487:8;13484:16;13481:36;;;13513:1;13510;13503:12;13481:36;13536:52;13580:7;13569:8;13558:9;13554:24;13536:52;:::i;:::-;13526:62;;13607:39;13641:3;13630:9;13626:19;13607:39;:::i;:::-;13597:49;;13699:3;13688:9;13684:19;13671:33;13655:49;;13729:2;13719:8;13716:16;13713:36;;;13745:1;13742;13735:12;13713:36;;13768:83;13843:7;13832:8;13821:9;13817:24;13768:83;:::i;:::-;13758:93;;;13870:53;13918:3;13907:9;13903:19;13870:53;:::i;:::-;13860:63;;12545:1384;;;;;;;;;;;:::o;13934:464::-;14021:6;14029;14037;14090:2;14078:9;14069:7;14065:23;14061:32;14058:52;;;14106:1;14103;14096:12;14058:52;14146:9;14133:23;14179:18;14171:6;14168:30;14165:50;;;14211:1;14208;14201:12;14165:50;14234;14276:7;14267:6;14256:9;14252:22;14234:50;:::i;:::-;14224:60;;;14303:38;14337:2;14326:9;14322:18;14303:38;:::i;:::-;14293:48;;14388:2;14377:9;14373:18;14360:32;14350:42;;13934:464;;;;;:::o;14403:616::-;14455:3;14493:5;14487:12;14520:6;14515:3;14508:19;14546:4;14587:2;14582:3;14578:12;14612:11;14639;14632:18;;14689:6;14686:1;14682:14;14675:5;14671:26;14659:38;;14731:2;14724:5;14720:14;14752:1;14762:231;14776:6;14773:1;14770:13;14762:231;;;14847:5;14841:4;14837:16;14832:3;14825:29;14875:38;14908:4;14899:6;14893:13;14875:38;:::i;:::-;14971:12;;;;14867:46;-1:-1:-1;14936:15:8;;;;14798:1;14791:9;14762:231;;;-1:-1:-1;15009:4:8;;14403:616;-1:-1:-1;;;;;;;14403:616:8:o;15024:280::-;15223:2;15212:9;15205:21;15186:4;15243:55;15294:2;15283:9;15279:18;15271:6;15243:55;:::i;15309:1099::-;15487:6;15495;15503;15511;15519;15527;15535;15588:3;15576:9;15567:7;15563:23;15559:33;15556:53;;;15605:1;15602;15595:12;15556:53;15645:9;15632:23;15674:18;15715:2;15707:6;15704:14;15701:34;;;15731:1;15728;15721:12;15701:34;15754:50;15796:7;15787:6;15776:9;15772:22;15754:50;:::i;:::-;15744:60;;15823:38;15857:2;15846:9;15842:18;15823:38;:::i;:::-;15813:48;;15880:45;15921:2;15910:9;15906:18;15880:45;:::i;:::-;15870:55;;15978:2;15967:9;15963:18;15950:32;15934:48;;16007:2;15997:8;15994:16;15991:36;;;16023:1;16020;16013:12;15991:36;16046:52;16090:7;16079:8;16068:9;16064:24;16046:52;:::i;:::-;16036:62;;16151:3;16140:9;16136:19;16123:33;16107:49;;16181:2;16171:8;16168:16;16165:36;;;16197:1;16194;16187:12;16165:36;;16220:52;16264:7;16253:8;16242:9;16238:24;16220:52;:::i;:::-;16210:62;;;16291:39;16325:3;16314:9;16310:19;16291:39;:::i;:::-;16281:49;;16349:53;16397:3;16386:9;16382:19;16349:53;:::i;:::-;16339:63;;15309:1099;;;;;;;;;;:::o;16413:429::-;16511:6;16519;16572:2;16560:9;16551:7;16547:23;16543:32;16540:52;;;16588:1;16585;16578:12;16540:52;16628:9;16615:23;16661:18;16653:6;16650:30;16647:50;;;16693:1;16690;16683:12;16647:50;16716;16758:7;16749:6;16738:9;16734:22;16716:50;:::i;:::-;16706:60;;;16785:51;16832:2;16821:9;16817:18;16785:51;:::i;:::-;16775:61;;16413:429;;;;;:::o;16847:146::-;16934:1;16927:5;16924:12;16914:46;;16940:18;;:::i;16998:301::-;17172:2;17157:18;;17184:50;17161:9;17216:6;17184:50;:::i;:::-;17284:6;17277:14;17270:22;17265:2;17254:9;17250:18;17243:50;16998:301;;;;;:::o;17304:186::-;17363:6;17416:2;17404:9;17395:7;17391:23;17387:32;17384:52;;;17432:1;17429;17422:12;17384:52;17455:29;17474:9;17455:29;:::i;17495:437::-;17574:1;17570:12;;;;17617;;;17638:61;;17692:4;17684:6;17680:17;17670:27;;17638:61;17745:2;17737:6;17734:14;17714:18;17711:38;17708:218;;-1:-1:-1;;;17779:1:8;17772:88;17883:4;17880:1;17873:15;17911:4;17908:1;17901:15;17708:218;;17495:437;;;:::o;17937:289::-;18068:3;18106:6;18100:13;18122:66;18181:6;18176:3;18169:4;18161:6;18157:17;18122:66;:::i;:::-;18204:16;;;;;17937:289;-1:-1:-1;;17937:289:8:o;18231:220::-;18380:2;18369:9;18362:21;18343:4;18400:45;18441:2;18430:9;18426:18;18418:6;18400:45;:::i;19520:184::-;-1:-1:-1;;;19569:1:8;19562:88;19669:4;19666:1;19659:15;19693:4;19690:1;19683:15;19709:125;19774:9;;;19795:10;;;19792:36;;;19808:18;;:::i;20576:545::-;20678:2;20673:3;20670:11;20667:448;;;20714:1;20739:5;20735:2;20728:17;20784:4;20780:2;20770:19;20854:2;20842:10;20838:19;20835:1;20831:27;20825:4;20821:38;20890:4;20878:10;20875:20;20872:47;;;-1:-1:-1;20913:4:8;20872:47;20968:2;20963:3;20959:12;20956:1;20952:20;20946:4;20942:31;20932:41;;21023:82;21041:2;21034:5;21031:13;21023:82;;;21086:17;;;21067:1;21056:13;21023:82;;;21027:3;;;20576:545;;;:::o;21297:1352::-;21423:3;21417:10;21450:18;21442:6;21439:30;21436:56;;;21472:18;;:::i;:::-;21501:97;21591:6;21551:38;21583:4;21577:11;21551:38;:::i;:::-;21545:4;21501:97;:::i;:::-;21653:4;;21717:2;21706:14;;21734:1;21729:663;;;;22436:1;22453:6;22450:89;;;-1:-1:-1;22505:19:8;;;22499:26;22450:89;-1:-1:-1;;21254:1:8;21250:11;;;21246:24;21242:29;21232:40;21278:1;21274:11;;;21229:57;22552:81;;21699:944;;21729:663;20523:1;20516:14;;;20560:4;20547:18;;-1:-1:-1;;21765:20:8;;;21883:236;21897:7;21894:1;21891:14;21883:236;;;21986:19;;;21980:26;21965:42;;22078:27;;;;22046:1;22034:14;;;;21913:19;;21883:236;;;21887:3;22147:6;22138:7;22135:19;22132:201;;;22208:19;;;22202:26;-1:-1:-1;;22291:1:8;22287:14;;;22303:3;22283:24;22279:37;22275:42;22260:58;22245:74;;22132:201;-1:-1:-1;;;;;22379:1:8;22363:14;;;22359:22;22346:36;;-1:-1:-1;21297:1352:8:o;22654:545::-;22899:3;22888:9;22881:22;22862:4;22920:46;22961:3;22950:9;22946:19;22938:6;22920:46;:::i;:::-;22912:54;;-1:-1:-1;;;;;23075:2:8;23067:6;23063:15;23058:2;23047:9;23043:18;23036:43;23088:53;23137:2;23126:9;23122:18;23114:6;23088:53;:::i;:::-;23189:2;23181:6;23177:15;23172:2;23161:9;23157:18;23150:43;;22654:545;;;;;;;:::o;23918:128::-;23985:9;;;24006:11;;;24003:37;;;24020:18;;:::i;26540:291::-;26717:2;26706:9;26699:21;26680:4;26737:45;26778:2;26767:9;26763:18;26755:6;26737:45;:::i;:::-;26729:53;;26818:6;26813:2;26802:9;26798:18;26791:34;26540:291;;;;;:::o;28409:3409::-;28951:3;28940:9;28933:22;28914:4;28978:46;29019:3;29008:9;29004:19;28996:6;28978:46;:::i;:::-;-1:-1:-1;;;;;29133:2:8;29125:6;29121:15;29116:2;29105:9;29101:18;29094:43;29146:53;29195:2;29184:9;29180:18;29172:6;29146:53;:::i;:::-;29247:9;29239:6;29235:22;29230:2;29219:9;29215:18;29208:50;29281:33;29307:6;29299;29281:33;:::i;:::-;29267:47;;29363:9;29355:6;29351:22;29345:3;29334:9;29330:19;29323:51;29397:33;29423:6;29415;29397:33;:::i;:::-;29383:47;;29479:2;29471:6;29467:15;29461:3;29450:9;29446:19;29439:44;;29532:9;29524:6;29520:22;29514:3;29503:9;29499:19;29492:51;29563:6;29598;29592:13;29629:6;29621;29614:22;29664:2;29656:6;29652:15;29645:22;;29723:2;29713:6;29710:1;29706:14;29698:6;29694:27;29690:36;29761:2;29753:6;29749:15;29782:1;29792:1927;29806:6;29803:1;29800:13;29792:1927;;;29869:2;29865:7;29922:2;29913:6;29905;29901:19;29897:28;29892:3;29885:41;29955:6;29949:13;29975:50;30018:6;30013:2;30007:9;29975:50;:::i;:::-;30072:2;30068;30064:11;30058:18;30113:3;30108:2;30100:6;30096:15;30089:28;30144:59;30198:3;30190:6;30186:16;30172:12;30144:59;:::i;:::-;30130:73;;30252:2;30248;30244:11;30238:18;30305:6;30297;30293:19;30288:2;30280:6;30276:15;30269:44;30339:6;30380:14;30374:21;30423:8;30415:6;30408:24;30466:2;30458:6;30454:15;30445:24;;30531:2;30519:8;30516:1;30512:16;30504:6;30500:29;30496:38;30583:2;30567:14;30563:23;30547:39;;30610:1;30624:872;30640:8;30635:3;30632:17;30624:872;;;30721:19;;;30717:28;;30703:43;;30773:15;;30857:9;;30883:24;;;30945:2;30981:11;;;;30933:15;;;31020:1;31038:326;31054:8;31049:3;31046:17;31038:326;;;31141:8;31135:15;31188:1;31184:2;31181:9;31171:43;;31194:18;;:::i;:::-;31235:17;;31293:2;31329:17;;;;31282:14;;;;31082:1;31073:11;31038:326;;;-1:-1:-1;;31439:2:8;31425:17;;;;31468:14;;;;;31391:5;-1:-1:-1;;30668:1:8;30659:11;30624:872;;;30628:3;31545:2;31541;31537:11;31531:18;31509:40;;31562:48;31606:2;31598:6;31594:15;31578:14;4305:13;4298:21;4286:34;;4235:91;31562:48;31633:6;31623:16;;;;;;;;;31674:2;31666:6;31662:15;31652:25;;31706:2;31701:3;31697:12;31690:19;;29828:1;29825;29821:9;29816:14;;29792:1927;;;29796:3;;31736:6;31728:14;;;;;;31751:61;31807:3;31796:9;31792:19;31784:6;31751:61;:::i;31823:245::-;31890:6;31943:2;31931:9;31922:7;31918:23;31914:32;31911:52;;;31959:1;31956;31949:12;31911:52;31991:9;31985:16;32010:28;32032:5;32010:28;:::i;32768:184::-;-1:-1:-1;;;32817:1:8;32810:88;32917:4;32914:1;32907:15;32941:4;32938:1;32931:15;32957:135;32996:3;33017:17;;;33014:43;;33037:18;;:::i;:::-;-1:-1:-1;33084:1:8;33073:13;;32957:135::o;33097:842::-;33225:3;33254:1;33287:6;33281:13;33317:36;33343:9;33317:36;:::i;:::-;33372:1;33389:18;;;33416:133;;;;33563:1;33558:356;;;;33382:532;;33416:133;-1:-1:-1;;33449:24:8;;33437:37;;33522:14;;33515:22;33503:35;;33494:45;;;-1:-1:-1;33416:133:8;;33558:356;33589:6;33586:1;33579:17;33619:4;33664:2;33661:1;33651:16;33689:1;33703:165;33717:6;33714:1;33711:13;33703:165;;;33795:14;;33782:11;;;33775:35;33838:16;;;;33732:10;;33703:165;;;33707:3;;;33897:6;33892:3;33888:16;33881:23;;33382:532;-1:-1:-1;33930:3:8;;33097:842;-1:-1:-1;;;;;;33097:842:8:o;34236:1435::-;34355:3;34349:4;34346:13;34343:26;;34362:5;;34236:1435::o;34343:26::-;34392:37;34424:3;34418:10;34392:37;:::i;:::-;34452:18;34444:6;34441:30;34438:56;;;34474:18;;:::i;:::-;34503:97;34593:6;34553:38;34585:4;34579:11;34553:38;:::i;34503:97::-;34626:1;34654:2;34646:6;34643:14;34671:1;34666:748;;;;35458:1;35475:6;35472:89;;;-1:-1:-1;35527:19:8;;;35521:26;35472:89;-1:-1:-1;;21254:1:8;21250:11;;;21246:24;21242:29;21232:40;21278:1;21274:11;;;21229:57;35574:81;;34636:1029;;34666:748;20523:1;20516:14;;;20560:4;20547:18;;-1:-1:-1;;34702:20:8;;;20523:1;20516:14;;;20560:4;20547:18;;34866:9;34888:251;34902:7;34899:1;34896:14;34888:251;;;34984:21;;;34978:28;34963:44;;35034:1;35107:18;;;;35062:15;;;;34925:4;34918:12;34888:251;;;34892:3;35167:6;35158:7;35155:19;35152:203;;;35228:21;;;35222:28;-1:-1:-1;;35313:1:8;35309:14;;;35325:3;35305:24;35301:37;35297:42;35282:58;35267:74;;35152:203;;;;35401:1;35392:6;35389:1;35385:14;35381:22;35375:4;35368:36;34636:1029;;;;34236:1435;;:::o;35676:184::-;-1:-1:-1;;;35725:1:8;35718:88;35825:4;35822:1;35815:15;35849:4;35846:1;35839:15;36473:492;36648:3;36686:6;36680:13;36702:66;36761:6;36756:3;36749:4;36741:6;36737:17;36702:66;:::i;:::-;36831:13;;36790:16;;;;36853:70;36831:13;36790:16;36900:4;36888:17;;36853:70;:::i;:::-;36939:20;;36473:492;-1:-1:-1;;;;36473:492:8:o","linkReferences":{}},"methodIdentifiers":{"NFT_IDs(string,uint256)":"19d09bc9","assign(string,address,uint256)":"4534ba17","bridge_address()":"1255c189","burn(string,uint256)":"b48272cc","getAllAssetsIDs()":"5137b8a7","getToken(string)":"c1733f68","getToken(string,uint256)":"324980b5","lock(string,uint256)":"e1efb596","mint(string,uint256)":"056b01ce","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","renounceOwnership()":"715018a6","tokens(string)":"04c2320b","tokensInteractions(string,uint8)":"ea8f547f","transferOwnership(address)":"f2fde38b","unlock(string,uint256)":"d9cf884c","unwrap(string)":"a1bc17c5","wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)":"433f60ac","wrap(string,address,uint8,string,string,address,uint8)":"dbf15639"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsuficientAmountLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenAlreadyWrapped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotSupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approve\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver_account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Assign\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Unlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"NFT_IDs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"receiver_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"assign\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"internalType\":\"struct Token\",\"name\":\"token\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"getToken\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"internalType\":\"struct Token\",\"name\":\"token\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"tokens\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"enum InteractionType\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"tokensInteractions\",\"outputs\":[{\"internalType\":\"enum InteractionType\",\"name\":\"interactionType\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum InteractionType\",\"name\":\"interactionType\",\"type\":\"uint8\"},{\"internalType\":\"string[]\",\"name\":\"functionsSignature\",\"type\":\"string[]\"},{\"internalType\":\"enum AssetParameterIdentifier[][]\",\"name\":\"variables\",\"type\":\"uint8[][]\"},{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"}],\"internalType\":\"struct InteractionSignature[]\",\"name\":\"interactions\",\"type\":\"tuple[]\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"wrapSuccess\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"wrapSuccess\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"assign(string,address,uint256)\":{\"params\":{\"assetAttribute\":\"The amount of tokens to be assigned, for fungible tokens, or the uniqueDescriptor of the token to be assigned, for non-fungible tokens.\",\"receiver_account\":\"The address of the receiver account.\",\"tokenId\":\"The unique identifier of the token.\"}},\"burn(string,uint256)\":{\"params\":{\"assetAttribute\":\"The amount of tokens to be burned, for fungible tokens, or the uniqueDescriptor of the token to burn, for non fungible tokens.\",\"tokenId\":\"The unique identifier of the token.\"}},\"constructor\":{\"params\":{\"_bridge_address\":\"The address of the bridge contract. This needs to be changed, maybe the owner should not be a bridge but other account.\"}},\"getAllAssetsIDs()\":{\"returns\":{\"_0\":\"An array of token IDs.\"}},\"getToken(string)\":{\"params\":{\"tokenId\":\"The unique identifier of the token.\"},\"returns\":{\"token\":\"the token with the given token ID.\"}},\"getToken(string,uint256)\":{\"params\":{\"assetAttribute\":\"The asset attribute of the token.\",\"tokenId\":\"The unique identifier of the token.\"},\"returns\":{\"token\":\"the token with the given token ID and asset attribute.\"}},\"lock(string,uint256)\":{\"params\":{\"assetAttribute\":\"The attribute related to the asset to be locked. An amount for fungible tokens, or a unique descriptor for non-fungible tokens.\",\"tokenId\":\"The unique identifier of the token.\"}},\"mint(string,uint256)\":{\"params\":{\"assetAttribute\":\"The amount of tokens to be minted, for fungible tokens, or the uniqueDescriptor of the token to mint, for non fungible tokens.\",\"tokenId\":\"The unique identifier of the token.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"returns\":{\"_0\":\"success A boolean indicating if the account has the bridge role.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unlock(string,uint256)\":{\"params\":{\"assetAttribute\":\"The amount of tokens to be unlocked, for fungible tokens, or the uniqueDescriptor of the token to unlock, for non fungible tokens.\",\"tokenId\":\"The unique identifier of the token.\"}},\"unwrap(string)\":{\"params\":{\"tokenId\":\"The unique identifier of the token.\"}},\"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)\":{\"params\":{\"contractAddress\":\"The address of the token contract.\",\"interactions\":\"The interactions to be used for the token.\",\"owner\":\"The owner of the token.\",\"tokenId\":\"The unique identifier of the token.\",\"tokenType\":\"The type of the token.\"}}},\"title\":\"SATPWrapper This contract serves as a wrapper for the Secure Asset Transfer Protocol (SATP) using the Hermes plugin. It provides functionalities to interact with the SATP protocol within the Cactus framework. This contract provides a semantic layer to facilitate interactions with other contracts.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"NFT_IDs(string,uint256)\":{\"notice\":\"Mapping of the NFT unique descriptors that are in the possetion of the wrapper contract, for each registered tokenId and respective contract.\"},\"assign(string,address,uint256)\":{\"notice\":\"Assigns tokens with the given token ID to a receiver account. This method calls the assign function of the token contract.\"},\"bridge_address()\":{\"notice\":\"The address of the bridge contract. TODO: Change this to the Token Struct\"},\"burn(string,uint256)\":{\"notice\":\"Burns tokens with the given token ID. This method calls the burn function of the token contract.\"},\"constructor\":{\"notice\":\"Constructor for the SATPWrapperContract.\"},\"getAllAssetsIDs()\":{\"notice\":\"Gets all the token IDs.\"},\"getToken(string)\":{\"notice\":\"Overload of the getToken function, used when getting fungible tokens, providing a neutral unique descriptor that is required when getting a non fungible token. \"},\"getToken(string,uint256)\":{\"notice\":\"Gets a token with the given token ID. Since a tokenId can be associated to multiple non fungible tokens, it is required to also provide the asset attribute of the wanted non fungible token. If the provided tokenId is not for a non fungible token, the assetAttribute parameter will be ignored.\"},\"lock(string,uint256)\":{\"notice\":\"Locks tokens with the given token ID. This method calls the lock function of the token contract.\"},\"mint(string,uint256)\":{\"notice\":\"Mints tokens with the given token ID. This method calls the mint function of the token contract.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"REQUIRED by OpenZeppelin: Supports the use of safe functions for ERC721 tokens.\"},\"tokens(string)\":{\"notice\":\"Maping of token IDs to Token structs.\"},\"tokensInteractions(string,uint8)\":{\"notice\":\"Mapping of token IDs to InteractionSignature structs.\"},\"unlock(string,uint256)\":{\"notice\":\"Unlocks tokens with the given token ID. This method calls the unlock function of the token contract.\"},\"unwrap(string)\":{\"notice\":\"Unwraps a token with the given token ID. This method deletes the token from the mapping and the array of token IDs. (Should they be deleted from the array?)\"},\"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)\":{\"notice\":\"Wraps a token with the given parameters. Given interactions will call a method that creates the ontology of the token so the other methods (eg. lock, unlock, mint, burn, assign) can interact with the token. This interactions should be given by the bridge and be througly tested and checked before being used, as they can be used to call any function in the token contract.\"},\"wrap(string,address,uint8,string,string,address,uint8)\":{\"notice\":\"Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. TODO: Implement that functionality for standard tokens. \"}},\"notice\":\"Ensure that the contract is deployed and configured correctly before interacting with it.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/main/solidity/contracts/SATPWrapperContract.sol\":\"SATPWrapperContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/main/solidity/contracts/SATPWrapperContract.sol\":{\"keccak256\":\"0x65cab15235cdf814b1de5400eeda71323237bb9fa112ce3b86e3467d77164e02\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e7572319e4fa727319a25afcb940b38c43ab327fc17ec07121f96b8b2eaa7663\",\"dweb:/ipfs/QmSydVQUZKR6LLGzt9Q3K5QHiV5Be8QL8JXBRVxEReeqJZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_bridge_address","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"InsuficientAmountLocked"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenAlreadyWrapped"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenLocked"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotAvailable"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotSupported"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approve","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"address","name":"receiver_account","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Assign","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Lock","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Unlock","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true}],"type":"event","name":"Unwrap","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"string","name":"contractName","type":"string","indexed":false},{"internalType":"address","name":"contractAddress","type":"address","indexed":false},{"internalType":"enum TokenType","name":"tokenType","type":"uint8","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false}],"type":"event","name":"Wrap","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"NFT_IDs","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"address","name":"receiver_account","type":"address"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"assign","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge_address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"struct Token","name":"token","type":"tuple","components":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}]}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"struct Token","name":"token","type":"tuple","components":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}]}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"tokens","outputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"enum InteractionType","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"tokensInteractions","outputs":[{"internalType":"enum InteractionType","name":"interactionType","type":"uint8"},{"internalType":"bool","name":"available","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"unwrap","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct InteractionSignature[]","name":"interactions","type":"tuple[]","components":[{"internalType":"enum InteractionType","name":"interactionType","type":"uint8"},{"internalType":"string[]","name":"functionsSignature","type":"string[]"},{"internalType":"enum AssetParameterIdentifier[][]","name":"variables","type":"uint8[][]"},{"internalType":"bool","name":"available","type":"bool"}]},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"bool","name":"wrapSuccess","type":"bool"}]},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"bool","name":"wrapSuccess","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"assign(string,address,uint256)":{"params":{"assetAttribute":"The amount of tokens to be assigned, for fungible tokens, or the uniqueDescriptor of the token to be assigned, for non-fungible tokens.","receiver_account":"The address of the receiver account.","tokenId":"The unique identifier of the token."}},"burn(string,uint256)":{"params":{"assetAttribute":"The amount of tokens to be burned, for fungible tokens, or the uniqueDescriptor of the token to burn, for non fungible tokens.","tokenId":"The unique identifier of the token."}},"constructor":{"params":{"_bridge_address":"The address of the bridge contract. This needs to be changed, maybe the owner should not be a bridge but other account."}},"getAllAssetsIDs()":{"returns":{"_0":"An array of token IDs."}},"getToken(string)":{"params":{"tokenId":"The unique identifier of the token."},"returns":{"token":"the token with the given token ID."}},"getToken(string,uint256)":{"params":{"assetAttribute":"The asset attribute of the token.","tokenId":"The unique identifier of the token."},"returns":{"token":"the token with the given token ID and asset attribute."}},"lock(string,uint256)":{"params":{"assetAttribute":"The attribute related to the asset to be locked. An amount for fungible tokens, or a unique descriptor for non-fungible tokens.","tokenId":"The unique identifier of the token."}},"mint(string,uint256)":{"params":{"assetAttribute":"The amount of tokens to be minted, for fungible tokens, or the uniqueDescriptor of the token to mint, for non fungible tokens.","tokenId":"The unique identifier of the token."}},"onERC721Received(address,address,uint256,bytes)":{"returns":{"_0":"success A boolean indicating if the account has the bridge role."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unlock(string,uint256)":{"params":{"assetAttribute":"The amount of tokens to be unlocked, for fungible tokens, or the uniqueDescriptor of the token to unlock, for non fungible tokens.","tokenId":"The unique identifier of the token."}},"unwrap(string)":{"params":{"tokenId":"The unique identifier of the token."}},"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)":{"params":{"contractAddress":"The address of the token contract.","interactions":"The interactions to be used for the token.","owner":"The owner of the token.","tokenId":"The unique identifier of the token.","tokenType":"The type of the token."}}},"version":1},"userdoc":{"kind":"user","methods":{"NFT_IDs(string,uint256)":{"notice":"Mapping of the NFT unique descriptors that are in the possetion of the wrapper contract, for each registered tokenId and respective contract."},"assign(string,address,uint256)":{"notice":"Assigns tokens with the given token ID to a receiver account. This method calls the assign function of the token contract."},"bridge_address()":{"notice":"The address of the bridge contract. TODO: Change this to the Token Struct"},"burn(string,uint256)":{"notice":"Burns tokens with the given token ID. This method calls the burn function of the token contract."},"constructor":{"notice":"Constructor for the SATPWrapperContract."},"getAllAssetsIDs()":{"notice":"Gets all the token IDs."},"getToken(string)":{"notice":"Overload of the getToken function, used when getting fungible tokens, providing a neutral unique descriptor that is required when getting a non fungible token. "},"getToken(string,uint256)":{"notice":"Gets a token with the given token ID. Since a tokenId can be associated to multiple non fungible tokens, it is required to also provide the asset attribute of the wanted non fungible token. If the provided tokenId is not for a non fungible token, the assetAttribute parameter will be ignored."},"lock(string,uint256)":{"notice":"Locks tokens with the given token ID. This method calls the lock function of the token contract."},"mint(string,uint256)":{"notice":"Mints tokens with the given token ID. This method calls the mint function of the token contract."},"onERC721Received(address,address,uint256,bytes)":{"notice":"REQUIRED by OpenZeppelin: Supports the use of safe functions for ERC721 tokens."},"tokens(string)":{"notice":"Maping of token IDs to Token structs."},"tokensInteractions(string,uint8)":{"notice":"Mapping of token IDs to InteractionSignature structs."},"unlock(string,uint256)":{"notice":"Unlocks tokens with the given token ID. This method calls the unlock function of the token contract."},"unwrap(string)":{"notice":"Unwraps a token with the given token ID. This method deletes the token from the mapping and the array of token IDs. (Should they be deleted from the array?)"},"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)":{"notice":"Wraps a token with the given parameters. Given interactions will call a method that creates the ontology of the token so the other methods (eg. lock, unlock, mint, burn, assign) can interact with the token. This interactions should be given by the bridge and be througly tested and checked before being used, as they can be used to call any function in the token contract."},"wrap(string,address,uint8,string,string,address,uint8)":{"notice":"Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. TODO: Implement that functionality for standard tokens. "}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/main/solidity/contracts/SATPWrapperContract.sol":"SATPWrapperContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/main/solidity/contracts/SATPWrapperContract.sol":{"keccak256":"0x65cab15235cdf814b1de5400eeda71323237bb9fa112ce3b86e3467d77164e02","urls":["bzz-raw://e7572319e4fa727319a25afcb940b38c43ab327fc17ec07121f96b8b2eaa7663","dweb:/ipfs/QmSydVQUZKR6LLGzt9Q3K5QHiV5Be8QL8JXBRVxEReeqJZ"],"license":"GPL-3.0"}},"version":1},"id":7} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/SignedMath.sol/SignedMath.json b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/SignedMath.sol/SignedMath.json index d0d8c4aa50..0f4eccf4c8 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/SignedMath.sol/SignedMath.json +++ b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/SignedMath.sol/SignedMath.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4de6fb2d533bb06e56d3510eb05927f430373f7243a2a33a8335c56c79e03364736f6c63430008140033","sourceMap":"216:1047:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:4;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4de6fb2d533bb06e56d3510eb05927f430373f7243a2a33a8335c56c79e03364736f6c63430008140033","sourceMap":"216:1047:4:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":"SignedMath"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":4} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4de6fb2d533bb06e56d3510eb05927f430373f7243a2a33a8335c56c79e03364736f6c63430008140033","sourceMap":"216:1047:5:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:5;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4de6fb2d533bb06e56d3510eb05927f430373f7243a2a33a8335c56c79e03364736f6c63430008140033","sourceMap":"216:1047:5:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":"SignedMath"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":5} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Strings.sol/Strings.json b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Strings.sol/Strings.json index 051701d9eb..9c7a7ce2a0 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Strings.sol/Strings.json +++ b/packages/cactus-plugin-satp-hermes/src/main/solidity/generated/Strings.sol/Strings.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d300ad7478d98c336b12b3ca7d9bd882faab0ed2b012ecb3c9f348272036eccb64736f6c63430008140033","sourceMap":"251:2847:2:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:2;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d300ad7478d98c336b12b3ca7d9bd882faab0ed2b012ecb3c9f348272036eccb64736f6c63430008140033","sourceMap":"251:2847:2:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/Strings.sol":"Strings"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":2} \ No newline at end of file +{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d300ad7478d98c336b12b3ca7d9bd882faab0ed2b012ecb3c9f348272036eccb64736f6c63430008140033","sourceMap":"251:2847:3:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:3;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d300ad7478d98c336b12b3ca7d9bd882faab0ed2b012ecb3c9f348272036eccb64736f6c63430008140033","sourceMap":"251:2847:3:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/Strings.sol":"Strings"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/errors/satp-service-errors.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/errors/satp-service-errors.ts index 67a4a72947..8255307f53 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/errors/satp-service-errors.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/errors/satp-service-errors.ts @@ -369,6 +369,17 @@ export class LedgerAssetError extends SATPInternalError { } } +export class BadAssetBuildError extends SATPInternalError { + constructor(tag: string, cause?: string | Error | null) { + super( + `${tag}, asset build is missing crucial elements`, + cause ?? null, + 400, + ); + this.errorType = SATPErrorType.MISSING_PARAMETER; + } +} + export class NetworkIdError extends SATPInternalError { constructor(tag: string, type: string, cause?: string | Error | null) { super(`${tag}, ${type} networkId missing or missmatch`, cause ?? null, 400); @@ -402,6 +413,12 @@ export class AmountMissingError extends SATPInternalError { this.errorType = SATPErrorType.MISSING_PARAMETER; } } +export class UniqueTokenDescriptorMissingError extends SATPInternalError { + constructor(tag: string, cause?: string | Error | null) { + super(`${tag}, Unique Descriptor missing`, cause ?? null, 400); + this.errorType = SATPErrorType.MISSING_PARAMETER; + } +} export class MissingRecipientError extends SATPInternalError { constructor(tag: string, cause?: string | Error | null) { super(`${tag}, Recipient is missing`, cause ?? null, 400); diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/satp-utils.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/satp-utils.ts index c1516b2b75..60e32335f4 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/satp-utils.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/satp-utils.ts @@ -1,5 +1,28 @@ +import { Asset } from "../cross-chain-mechanisms/bridge/ontology/assets/asset"; import { MessageType } from "../generated/proto/cacti/satp/v02/common/message_pb"; import { getEnumKeyByValue } from "../services/utils"; +import { + TokenIdMissingError, + LedgerAssetError, + AmountMissingError, + UniqueTokenDescriptorMissingError, +} from "./errors/satp-service-errors"; +import { SATPLogger } from "./satp-logger"; +import { protoToAsset } from "./stage-services/service-utils"; +import { LedgerType } from "@hyperledger/cactus-core-api"; +import { NetworkId } from "../public-api"; +import { TokenType } from "../generated/proto/cacti/satp/v02/common/message_pb"; +import { SessionData } from "../generated/proto/cacti/satp/v02/session/session_pb"; + +export interface SessionAssetBuildData { + token: Asset; + networkId: NetworkId; +} + +export enum SessionSide { + CLIENT, + SERVER, +} export function getMessageTypeName( messageType: MessageType | undefined, @@ -11,3 +34,64 @@ export function getMessageTypeName( "UNSPECIFIED" ); } + +export function buildAndCheckAsset( + fnTag: string, + protocolStep: string, + logger: SATPLogger, + sessionData: SessionData, + sessionSide: SessionSide, +): SessionAssetBuildData { + let sessionAsset: any; + if (sessionSide == SessionSide.CLIENT) { + if (sessionData.senderAsset == undefined) { + throw new LedgerAssetError(fnTag); + } + sessionAsset = sessionData.senderAsset; + } else { + if (sessionData.receiverAsset == undefined) { + throw new LedgerAssetError(fnTag); + } + sessionAsset = sessionData.receiverAsset; + } + const networkId = { + id: sessionAsset.networkId?.id, + ledgerType: sessionAsset.networkId?.type as LedgerType, + } as NetworkId; + let token: Asset; + + switch (sessionAsset.tokenType) { + case TokenType.NONSTANDARD_FUNGIBLE: + token = protoToAsset(sessionAsset, networkId) as Asset; + if (token.id == undefined) { + throw new TokenIdMissingError(fnTag); + } + if ( + !("amount" in token) || + ("amount" in token && token.amount == undefined) + ) { + throw new AmountMissingError(fnTag); + } + logger.debug( + `${fnTag}, ${protocolStep} Asset ID: ${token.id} amount: ${token.amount}`, + ); + return { token: token, networkId: networkId } as SessionAssetBuildData; + case TokenType.NONSTANDARD_NONFUNGIBLE: + token = protoToAsset(sessionAsset, networkId) as Asset; + if (token.id == undefined) { + throw new TokenIdMissingError(fnTag); + } + if ( + !("uniqueDescriptor" in token) || + ("uniqueDescriptor" in token && token.uniqueDescriptor == undefined) + ) { + throw new UniqueTokenDescriptorMissingError(fnTag); + } + logger.debug( + `${fnTag}, ${protocolStep} Asset ID: ${token.id} uniqueDescriptor: ${token.uniqueDescriptor}`, + ); + return { token: token, networkId: networkId } as SessionAssetBuildData; + default: + throw new Error(`Unsupported asset type ${sessionAsset.tokenType}`); + } +} diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage0-client-service.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage0-client-service.ts index 435dcd534a..981a014d0e 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage0-client-service.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage0-client-service.ts @@ -16,7 +16,6 @@ import { stringify as safeStableStringify } from "safe-stable-stringify"; import { FailedToProcessError } from "../../errors/satp-handler-errors"; import { - AmountMissingError, HashError, LedgerAssetError, LedgerAssetIdError, @@ -26,7 +25,6 @@ import { SessionIdError, SessionMissMatchError, SignatureVerificationError, - TokenIdMissingError, TransferContextIdError, } from "../../errors/satp-service-errors"; import { SATPSession } from "../../satp-session"; @@ -40,20 +38,17 @@ import { TimestampType, } from "../../session-utils"; import { signatureVerifier } from "../data-verifier"; -import { type FungibleAsset } from "../../../cross-chain-mechanisms/bridge/ontology/assets/asset"; import { SATPService, SATPServiceType, ISATPClientServiceOptions, ISATPServiceOptions, } from "../satp-service"; -import { protoToAsset } from "../service-utils"; import { getMessageTypeName } from "../../satp-utils"; -import { LedgerType } from "@hyperledger/cactus-core-api"; import { BridgeManagerClientInterface } from "../../../cross-chain-mechanisms/bridge/interfaces/bridge-manager-client-interface"; import { NetworkId } from "../../../public-api"; import { context, SpanStatusCode } from "@opentelemetry/api"; - +import { buildAndCheckAsset, SessionSide } from "../../satp-utils"; export class Stage0ClientService extends SATPService { public static readonly SATP_STAGE = "0"; public static readonly SERVICE_TYPE = SATPServiceType.Client; @@ -450,36 +445,16 @@ export class Stage0ClientService extends SATPService { }); this.Log.info(`${fnTag}, Wrapping Asset...`); - if (sessionData.senderAsset == undefined) { - throw new LedgerAssetError(fnTag); - } - - const networkId = { - id: sessionData.senderAsset.networkId?.id, - ledgerType: sessionData.senderAsset.networkId?.type as LedgerType, - } as NetworkId; - - const token: FungibleAsset = protoToAsset( - sessionData.senderAsset, - networkId, - ) as FungibleAsset; - - if (token.id == undefined) { - throw new TokenIdMissingError(fnTag); - } - - if (token.amount == undefined) { - throw new AmountMissingError(fnTag); - } - - this.Log.debug(`${fnTag}, Wrap: ${safeStableStringify(token)}`); - - this.Log.debug( - `${fnTag}, Wrap Asset ID: ${token.id} amount: ${(token as FungibleAsset).amount.toString()}`, + const tokenBuildData = buildAndCheckAsset( + fnTag, + stepTag, + this.Log, + sessionData, + SessionSide.CLIENT, ); const bridge = this.bridgeManager.getSATPExecutionLayer( - networkId, + tokenBuildData.networkId, this.claimFormat, ); @@ -488,7 +463,7 @@ export class Stage0ClientService extends SATPService { {}, ); - const res = await bridge.wrapAsset(token); + const res = await bridge.wrapAsset(tokenBuildData.token); sessionData.senderWrapAssertionClaim.receipt = res.receipt; diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage2-client-service.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage2-client-service.ts index 02b802fb9f..ef5941fee7 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage2-client-service.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage2-client-service.ts @@ -35,18 +35,12 @@ import { LockAssertionClaimError, LockAssertionClaimFormatError, SessionError, - TokenIdMissingError, - LedgerAssetError, - AmountMissingError, } from "../../errors/satp-service-errors"; import { FailedToProcessError } from "../../errors/satp-handler-errors"; import { create } from "@bufbuild/protobuf"; import { BridgeManagerClientInterface } from "../../../cross-chain-mechanisms/bridge/interfaces/bridge-manager-client-interface"; -import { type FungibleAsset } from "../../../cross-chain-mechanisms/bridge/ontology/assets/asset"; -import { protoToAsset } from "../service-utils"; -import { LedgerType } from "@hyperledger/cactus-core-api"; -import { NetworkId } from "../../../public-api"; import { context, SpanStatusCode } from "@opentelemetry/api"; +import { buildAndCheckAsset, SessionSide } from "../../satp-utils"; export class Stage2ClientService extends SATPService { public static readonly SATP_STAGE = "2"; @@ -311,43 +305,23 @@ export class Stage2ClientService extends SATPService { sequenceNumber: Number(sessionData.lastSequenceNumber), }); this.Log.info(`${fnTag}, Locking Asset...`); - const assetId = sessionData.senderAsset?.tokenId; - const amount = sessionData.senderAsset?.amount; - if (sessionData.senderAsset == undefined) { - throw new LedgerAssetError(fnTag); - } - - const networkId = { - id: sessionData.senderAsset.networkId?.id, - ledgerType: sessionData.senderAsset.networkId?.type as LedgerType, - } as NetworkId; - - const token: FungibleAsset = protoToAsset( - sessionData.senderAsset, - networkId, - ) as FungibleAsset; - - if (token.id == undefined) { - throw new TokenIdMissingError(fnTag); - } - - if (token.amount == undefined) { - throw new AmountMissingError(fnTag); - } - - this.Log.debug( - `${fnTag}, Lock Asset ID: ${assetId} amount: ${amount}`, + const tokenBuildData = buildAndCheckAsset( + fnTag, + stepTag, + this.Log, + sessionData, + SessionSide.CLIENT, ); const bridge = this.bridgeManager.getSATPExecutionLayer( - networkId, + tokenBuildData.networkId, this.claimFormat, ); sessionData.lockAssertionClaim = create(LockAssertionClaimSchema, {}); - const res = await bridge.lockAsset(token); + const res = await bridge.lockAsset(tokenBuildData.token); sessionData.lockAssertionClaim.receipt = res.receipt; diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage3-client-service.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage3-client-service.ts index ed5473ae21..8989227902 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage3-client-service.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/client/stage3-client-service.ts @@ -4,6 +4,7 @@ import { ClaimFormat, CommonSatpSchema, MessageType, + //TokenType, } from "../../../generated/proto/cacti/satp/v02/common/message_pb"; import { SATP_VERSION } from "../../constants"; import { @@ -38,24 +39,18 @@ import { SATPSession } from "../../satp-session"; import { LockAssertionResponse } from "../../../generated/proto/cacti/satp/v02/service/stage_2_pb"; import { commonBodyVerifier, signatureVerifier } from "../data-verifier"; import { - AmountMissingError, AssignmentAssertionClaimError, BurnAssertionClaimError, - LedgerAssetError, MintAssertionClaimError, MissingBridgeManagerError, SessionError, - TokenIdMissingError, } from "../../errors/satp-service-errors"; import { FailedToProcessError } from "../../errors/satp-handler-errors"; import { State } from "../../../generated/proto/cacti/satp/v02/session/session_pb"; import { create } from "@bufbuild/protobuf"; import { BridgeManagerClientInterface } from "../../../cross-chain-mechanisms/bridge/interfaces/bridge-manager-client-interface"; -import { LedgerType } from "@hyperledger/cactus-core-api"; -import { FungibleAsset } from "../../../cross-chain-mechanisms/bridge/ontology/assets/asset"; -import { protoToAsset } from "../service-utils"; -import { NetworkId } from "../../../public-api"; import { context, SpanStatusCode } from "@opentelemetry/api"; +import { buildAndCheckAsset, SessionSide } from "../../satp-utils"; export class Stage3ClientService extends SATPService { public static readonly SATP_STAGE = "3"; @@ -797,40 +792,22 @@ export class Stage3ClientService extends SATPService { sequenceNumber: Number(sessionData.lastSequenceNumber), }); - if (sessionData.senderAsset == undefined) { - throw new LedgerAssetError(fnTag); - } - - const networkId = { - id: sessionData.senderAsset.networkId?.id, - ledgerType: sessionData.senderAsset.networkId?.type as LedgerType, - } as NetworkId; - - const token: FungibleAsset = protoToAsset( - sessionData.senderAsset, - networkId, - ) as FungibleAsset; - - if (token.id == undefined) { - throw new TokenIdMissingError(fnTag); - } - - if (token.amount == undefined) { - throw new AmountMissingError(fnTag); - } - - this.Log.debug( - `${fnTag}, Burn Asset ID: ${token.id} amount: ${token.amount}`, + const tokenBuildData = buildAndCheckAsset( + fnTag, + stepTag, + this.Log, + sessionData, + SessionSide.CLIENT, ); const bridge = this.bridgeManager.getSATPExecutionLayer( - networkId, + tokenBuildData.networkId, this.claimFormat, ); sessionData.burnAssertionClaim = create(BurnAssertionClaimSchema, {}); - const res = await bridge.burnAsset(token); + const res = await bridge.burnAsset(tokenBuildData.token); sessionData.burnAssertionClaim.receipt = res.receipt; diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage0-server-service.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage0-server-service.ts index 9ca3d2b946..777be245fe 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage0-server-service.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage0-server-service.ts @@ -21,7 +21,6 @@ import { import { stringify as safeStableStringify } from "safe-stable-stringify"; import { - AmountMissingError, AssetMissing, LedgerAssetError, MessageTypeError, @@ -31,7 +30,6 @@ import { SessionIdError, SignatureMissingError, SignatureVerificationError, - TokenIdMissingError, } from "../../errors/satp-service-errors"; import { SATPSession } from "../../satp-session"; import { @@ -42,17 +40,13 @@ import { SessionType, TimestampType, } from "../../session-utils"; -import { - createAssetId, - type FungibleAsset, -} from "../../../cross-chain-mechanisms/bridge/ontology/assets/asset"; +import { createAssetId } from "../../../cross-chain-mechanisms/bridge/ontology/assets/asset"; import { SATPService, SATPServiceType, type ISATPServerServiceOptions, type ISATPServiceOptions, } from "../satp-service"; -import { protoToAsset } from "../service-utils"; import { FailedToProcessError, SessionNotFoundError, @@ -60,9 +54,9 @@ import { import type { SATPInternalError } from "../../errors/satp-errors"; import { create } from "@bufbuild/protobuf"; import { type BridgeManagerClientInterface } from "../../../cross-chain-mechanisms/bridge/interfaces/bridge-manager-client-interface"; -import { LedgerType } from "@hyperledger/cactus-core-api"; import { NetworkId } from "../../../public-api"; import { context, SpanStatusCode } from "@opentelemetry/api"; +import { buildAndCheckAsset, SessionSide } from "../../satp-utils"; export class Stage0ServerService extends SATPService { public static readonly SATP_STAGE = "0"; public static readonly SERVICE_TYPE = SATPServiceType.Server; @@ -655,36 +649,16 @@ export class Stage0ServerService extends SATPService { }); this.Log.info(`${fnTag}, Wrapping Asset...`); - if (sessionData.receiverAsset == undefined) { - throw new LedgerAssetError(fnTag); - } - - const networkId = { - id: sessionData.receiverAsset.networkId?.id, - ledgerType: sessionData.receiverAsset.networkId?.type as LedgerType, - } as NetworkId; - - const token: FungibleAsset = protoToAsset( - sessionData.receiverAsset, - networkId, - ) as FungibleAsset; - - if (token.id == undefined) { - throw new TokenIdMissingError(fnTag); - } - - if (token.amount == undefined) { - throw new AmountMissingError(fnTag); - } - - this.Log.debug(`${fnTag}, Wrap: ${safeStableStringify(token)}`); - - this.Log.debug( - `${fnTag}, Wrap Asset ID: ${token.id} amount: ${(token as FungibleAsset).amount.toString()}`, + const tokenBuildData = buildAndCheckAsset( + fnTag, + stepTag, + this.Log, + sessionData, + SessionSide.SERVER, ); const bridge = this.bridgeManager.getSATPExecutionLayer( - networkId, + tokenBuildData.networkId, this.claimFormat, ); @@ -693,7 +667,7 @@ export class Stage0ServerService extends SATPService { {}, ); - const res = await bridge.wrapAsset(token); + const res = await bridge.wrapAsset(tokenBuildData.token); sessionData.receiverWrapAssertionClaim.receipt = res.receipt; diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage3-server-service.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage3-server-service.ts index 0a7c625cea..194bfe9aa5 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage3-server-service.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/server/stage3-server-service.ts @@ -38,15 +38,11 @@ import { import { SATPSession } from "../../../core/satp-session"; import { commonBodyVerifier, signatureVerifier } from "../data-verifier"; import { - AmountMissingError, AssignmentAssertionClaimError, BurnAssertionClaimError, - LedgerAssetError, MintAssertionClaimError, MissingBridgeManagerError, - MissingRecipientError, SessionError, - TokenIdMissingError, } from "../../errors/satp-service-errors"; import { FailedToProcessError, @@ -56,11 +52,8 @@ import { SATPInternalError } from "../../errors/satp-errors"; import { State } from "../../../generated/proto/cacti/satp/v02/session/session_pb"; import { create } from "@bufbuild/protobuf"; import { type BridgeManagerClientInterface } from "../../../cross-chain-mechanisms/bridge/interfaces/bridge-manager-client-interface"; -import { LedgerType } from "@hyperledger/cactus-core-api"; -import { protoToAsset } from "../service-utils"; -import { type FungibleAsset } from "../../../cross-chain-mechanisms/bridge/ontology/assets/asset"; -import { NetworkId } from "../../../public-api"; import { context, SpanStatusCode } from "@opentelemetry/api"; +import { buildAndCheckAsset, SessionSide } from "../../satp-utils"; export class Stage3ServerService extends SATPService { public static readonly SATP_STAGE = "3"; @@ -840,40 +833,22 @@ export class Stage3ServerService extends SATPService { }); this.Log.info(`${fnTag}, Minting Asset...`); - if (sessionData.receiverAsset == undefined) { - throw new LedgerAssetError(fnTag); - } - - const networkId = { - id: sessionData.receiverAsset.networkId?.id, - ledgerType: sessionData.receiverAsset.networkId?.type as LedgerType, - } as NetworkId; - - const token: FungibleAsset = protoToAsset( - sessionData.receiverAsset, - networkId, - ) as FungibleAsset; - - if (token.id == undefined) { - throw new TokenIdMissingError(fnTag); - } - - if (token.amount == undefined) { - throw new AmountMissingError(fnTag); - } - - this.logger.debug( - `${fnTag}, Mint Asset ID: ${token.id} amount: ${token.amount.toString()}`, + const tokenBuildData = buildAndCheckAsset( + fnTag, + stepTag, + this.Log, + sessionData, + SessionSide.SERVER, ); const bridge = this.bridgeManager.getSATPExecutionLayer( - networkId, + tokenBuildData.networkId, this.claimFormat, ); sessionData.mintAssertionClaim = create(MintAssertionClaimSchema, {}); - const res = await bridge.mintAsset(token); + const res = await bridge.mintAsset(tokenBuildData.token); sessionData.mintAssertionClaim.receipt = res.receipt; @@ -951,38 +926,16 @@ export class Stage3ServerService extends SATPService { sequenceNumber: Number(sessionData.lastSequenceNumber), }); - if (sessionData.receiverAsset == undefined) { - throw new LedgerAssetError(fnTag); - } - - const networkId = { - id: sessionData.receiverAsset.networkId?.id, - ledgerType: sessionData.receiverAsset.networkId?.type as LedgerType, - } as NetworkId; - - const token: FungibleAsset = protoToAsset( - sessionData.receiverAsset, - networkId, - ) as FungibleAsset; - - if (token.owner == undefined) { - throw new MissingRecipientError(fnTag); - } - - if (token.id == undefined) { - throw new TokenIdMissingError(fnTag); - } - - if (token.amount == undefined) { - throw new AmountMissingError(fnTag); - } - - this.logger.debug( - `${fnTag}, Assign Asset ID: ${token.id} amount: ${token.amount} recipient: ${token.owner}`, + const tokenBuildData = buildAndCheckAsset( + fnTag, + stepTag, + this.Log, + sessionData, + SessionSide.SERVER, ); const bridge = this.bridgeManager.getSATPExecutionLayer( - networkId, + tokenBuildData.networkId, this.claimFormat, ); @@ -991,7 +944,7 @@ export class Stage3ServerService extends SATPService { {}, ); - const res = await bridge.assignAsset(token); + const res = await bridge.assignAsset(tokenBuildData.token); sessionData.assignmentAssertionClaim.receipt = res.receipt; diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/service-utils.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/service-utils.ts index c975c588ac..3e76e67e49 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/service-utils.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/core/stage-services/service-utils.ts @@ -2,37 +2,62 @@ import { create } from "@bufbuild/protobuf"; import { AssetSchema as ProtoAssetSchema, type Asset as ProtoAsset, + TokenType, } from "../../generated/proto/cacti/satp/v02/common/message_pb"; import { LedgerType } from "@hyperledger/cactus-core-api"; -import { EvmFungibleAsset } from "../../cross-chain-mechanisms/bridge/ontology/assets/evm-asset"; +import { + EvmFungibleAsset, + EvmNonFungibleAsset, +} from "../../cross-chain-mechanisms/bridge/ontology/assets/evm-asset"; import { FabricFungibleAsset } from "../../cross-chain-mechanisms/bridge/ontology/assets/fabric-asset"; import { Asset, FungibleAsset, + NonFungibleAsset, + Amount, + UniqueTokenID, } from "../../cross-chain-mechanisms/bridge/ontology/assets/asset"; import { NetworkId } from "../../public-api"; -export function assetToProto( - asset: FungibleAsset, - networkId: NetworkId, -): ProtoAsset { +export function assetToProto(asset: Asset, networkId: NetworkId): ProtoAsset { const protoAsset = create(ProtoAssetSchema, { tokenId: asset.id, tokenType: asset.type, referenceId: asset.referenceId, owner: asset.owner, - amount: BigInt(asset.amount), + ercTokenStandard: asset.ercTokenStandard, }); + /* + Assets interpret the concept of amount in different ways. On Fungible tokens + the amount is the quantity of one asset that is held or exchanged at a certain + point in time. On Non Fungible tokens, since each token is unique, what is relevant + is the unique descriptor of each token, and not a direct token amount, like in + fungible tokens. This is the reason for the amount parameter definition, while turning + an asset to a proto and a proto to an asset, differs. + */ switch (networkId.ledgerType) { case LedgerType.Besu1X: - protoAsset.contractAddress = (asset as EvmFungibleAsset).contractAddress; - break; case LedgerType.Besu2X: - protoAsset.contractAddress = (asset as EvmFungibleAsset).contractAddress; - break; case LedgerType.Ethereum: - protoAsset.contractAddress = (asset as EvmFungibleAsset).contractAddress; + switch (asset.type) { + case TokenType.NONSTANDARD_FUNGIBLE: + protoAsset.amount = BigInt((asset as EvmFungibleAsset).amount); + protoAsset.contractAddress = ( + asset as EvmFungibleAsset + ).contractAddress; + break; + case TokenType.NONSTANDARD_NONFUNGIBLE: + protoAsset.amount = BigInt( + (asset as EvmNonFungibleAsset).uniqueDescriptor, + ); + protoAsset.contractAddress = ( + asset as EvmNonFungibleAsset + ).contractAddress; + break; + default: + throw new Error(`Unsupported asset type ${asset.type}`); + } break; case LedgerType.Fabric2: protoAsset.mspId = (asset as FabricFungibleAsset).mspId; @@ -46,15 +71,22 @@ export function assetToProto( // eslint-disable-next-line @typescript-eslint/no-unused-vars export function protoToAsset(asset: ProtoAsset, networkId: NetworkId): Asset { - const assetObj: FungibleAsset = { + const assetObj: Asset = { id: asset.tokenId, referenceId: asset.referenceId, type: asset.tokenType.valueOf(), owner: asset.owner, - amount: String(asset.amount), contractName: asset.contractName, network: networkId, + ercTokenStandard: asset.ercTokenStandard, }; + if (asset.tokenType == TokenType.NONSTANDARD_FUNGIBLE) { + (assetObj as FungibleAsset).amount = Number(asset.amount) as Amount; + } else if (asset.tokenType == TokenType.NONSTANDARD_NONFUNGIBLE) { + (assetObj as NonFungibleAsset).uniqueDescriptor = Number( + asset.amount, + ) as UniqueTokenID; + } if (asset.mspId) { (assetObj as FabricFungibleAsset).mspId = asset.mspId; (assetObj as FabricFungibleAsset).channelName = asset.channelName; @@ -78,6 +110,7 @@ export function compareProtoAsset( asset1.contractName === asset2.contractName && asset1.mspId === asset2.mspId && asset1.channelName === asset2.channelName && - asset1.contractAddress === asset2.contractAddress + asset1.contractAddress === asset2.contractAddress && + asset1.ercTokenStandard === asset2.ercTokenStandard ); } diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf-fungible.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf-fungible.ts index a00d86d85e..0a0923b6f8 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf-fungible.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf-fungible.ts @@ -1,4 +1,4 @@ -import { Asset } from "./ontology/assets/asset"; +import { Amount, Asset } from "./ontology/assets/asset"; import { TransactionResponse } from "./bridge-types"; /** @@ -12,13 +12,13 @@ export abstract class BridgeLeafFungible { * Deploys the fungible wrapper contract. * @returns A promise that resolves when the contract is deployed. */ - public abstract deployFungibleWrapperContract(): Promise; + public abstract deployWrapperContract(): Promise; /** * Retrieves the receipt for the deployment of the fungible wrapper contract. * @returns The receipt of the deployment. */ - public abstract getDeployFungibleWrapperContractReceipt(): unknown; + public abstract getDeployWrapperContractReceipt(): unknown; /** * Wraps an asset into the fungible wrapper. @@ -42,7 +42,7 @@ export abstract class BridgeLeafFungible { */ public abstract lockAsset( assetId: string, - amount: number, + amount: Amount, ): Promise; /** @@ -53,7 +53,7 @@ export abstract class BridgeLeafFungible { */ public abstract unlockAsset( assetId: string, - amount: number, + amount: Amount, ): Promise; /** @@ -64,7 +64,7 @@ export abstract class BridgeLeafFungible { */ public abstract mintAsset( assetId: string, - amount: number, + amount: Amount, ): Promise; /** @@ -75,7 +75,7 @@ export abstract class BridgeLeafFungible { */ public abstract burnAsset( assetId: string, - amount: number, + amount: Amount, ): Promise; /** @@ -88,7 +88,7 @@ export abstract class BridgeLeafFungible { public abstract assignAsset( assetId: string, to: string, - amount: number, + amount: Amount, ): Promise; /** diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf-non-fungible.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf-non-fungible.ts index e204e2e23e..1f2f64c8a3 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf-non-fungible.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf-non-fungible.ts @@ -1,3 +1,6 @@ +import { Asset, UniqueTokenID } from "./ontology/assets/asset"; +import { TransactionResponse } from "./bridge-types"; + /** * Abstract class representing a non-fungible bridge leaf. * This class provides the structure for deploying and retrieving @@ -8,7 +11,7 @@ export abstract class BridgeLeafNonFungible { * Deploys the non-fungible wrapper contract. * This method should be implemented to handle the deployment logic. */ - public abstract deployNonFungibleWrapperContract(): Promise; + public abstract deployWrapperContract(): Promise; /** * Retrieves the receipt of the deployed non-fungible wrapper contract. @@ -16,7 +19,43 @@ export abstract class BridgeLeafNonFungible { * * @returns {unknown} The receipt of the deployed non-fungible wrapper contract. */ - public abstract getDeployNonFungibleWrapperContractReceipt(): unknown; + public abstract getDeployWrapperContractReceipt(): unknown; + + public abstract wrapAsset(asset: Asset): Promise; + + public abstract unwrapAsset(assetId: string): Promise; + + public abstract lockAsset( + assetId: string, + nftID: UniqueTokenID, + ): Promise; + + public abstract unlockAsset( + assetId: string, + nftID: UniqueTokenID, + ): Promise; + + public abstract mintAsset( + assetId: string, + nftID: UniqueTokenID, + ): Promise; + + public abstract burnAsset( + assetId: string, + nftID: UniqueTokenID, + ): Promise; + + public abstract assignAsset( + assetId: string, + to: string, + nftID: UniqueTokenID, + ): Promise; + + public abstract runTransaction( + methodName: string, + params: string[], + invocationType: unknown, + ): Promise; - //TODO: Implement this NON-FUNGIBLE bridge + public abstract getReceipt(transactionId: string): Promise; } diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf.ts index 55199af9a0..16c7fe5947 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/bridge-leaf.ts @@ -208,7 +208,7 @@ export abstract class BridgeLeaf { * @returns {unknown} The wrapper contract. */ - public abstract getWrapperContract(type: string): unknown; + public abstract getWrapperContract(type: TokenType): unknown; /** * Retrieves the approval address for a specific asset type. diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/besu-leaf.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/besu-leaf.ts index 5d9c6e7f6b..bc18e92934 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/besu-leaf.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/besu-leaf.ts @@ -13,7 +13,11 @@ import { stringify as safeStableStringify } from "safe-stable-stringify"; import { PluginBungeeHermes } from "@hyperledger/cactus-plugin-bungee-hermes"; import { StrategyBesu } from "@hyperledger/cactus-plugin-bungee-hermes/dist/lib/main/typescript/strategy/strategy-besu"; -import { EvmAsset } from "../ontology/assets/evm-asset"; +import { + EvmAsset, + EvmFungibleAsset, + EvmNonFungibleAsset, +} from "../ontology/assets/evm-asset"; import { LogLevelDesc } from "@hyperledger/cactus-common"; import { SATPLoggerProvider as LoggerProvider } from "../../../core/satp-logger-provider"; import { SATPLogger as Logger } from "../../../core/satp-logger"; @@ -47,7 +51,7 @@ import { import { ISignerKeyPair, Secp256k1Keys } from "@hyperledger/cactus-common"; import SATPWrapperContract from "../../../../solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json"; import { OntologyManager } from "../ontology/ontology-manager"; -import { Asset } from "../ontology/assets/asset"; +import { Asset, UniqueTokenID, Amount } from "../ontology/assets/asset"; import { TokenResponse } from "../../../generated/SATPWrapperContract"; import { NetworkId } from "../../../public-api"; import { getEnumKeyByValue } from "../../../services/utils"; @@ -152,7 +156,7 @@ export class BesuLeaf private readonly gas: number; - private wrapperFungibleDeployReceipt: Web3TransactionReceipt | undefined; + private wrapperDeployReceipt: Web3TransactionReceipt | undefined; private wrapperContractAddress: string | undefined; @@ -314,20 +318,14 @@ export class BesuLeaf `${fnTag}, Getting Approve Address for asset type: ${getEnumKeyByValue(TokenType, assetType)}`, ); switch (assetType) { - case TokenType.ERC20: case TokenType.NONSTANDARD_FUNGIBLE: + case TokenType.NONSTANDARD_NONFUNGIBLE: if (!this.wrapperContractAddress) { throw new ApproveAddressError( `${fnTag}, Wrapper Contract Address not available for approving address`, ); } return this.wrapperContractAddress; - case TokenType.ERC721: - case TokenType.NONSTANDARD_NONFUNGIBLE: - //TODO implement - throw new ApproveAddressError( - `${fnTag}, Non-fungible wrapper contract not implemented`, - ); default: throw new ApproveAddressError( `${fnTag}, Invalid asset type: ${getEnumKeyByValue(TokenType, assetType)}`, @@ -357,10 +355,7 @@ export class BesuLeaf const { span, context: ctx } = this.monitorService.startSpan(fnTag); await context.with(ctx, async () => { try { - await Promise.all([ - this.deployFungibleWrapperContract(), - // this.deployNonFungibleWrapperContract(), - ]); + await Promise.all([this.deployWrapperContract()]); } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -372,65 +367,22 @@ export class BesuLeaf } /** - * Retrieves the deployment receipt of the non-fungible wrapper contract. + * Retrieves the deployment receipt of the wrapper contract. * - * @returns - * @throws + * @returns {Web3TransactionReceipt} The transaction receipt of the deployed wrapper contract. + * @throws {ReceiptError} If the wrapper contract has not been deployed. */ - public getDeployNonFungibleWrapperContractReceipt(): unknown { - const fnTag = `${BesuLeaf.CLASS_NAME}#getDeployNonFungibleWrapperContractReceipt`; - const { span, context: ctx } = this.monitorService.startSpan(fnTag); - return context.with(ctx, () => { - try { - //TODO implement - throw new Error("Method not implemented."); - } catch (err) { - span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); - span.recordException(err); - throw err; - } finally { - span.end(); - } - }); - } - - /** - * Deploys a non-fungible wrapper contract. - * - **/ - public deployNonFungibleWrapperContract(): Promise { - const fnTag = `${BesuLeaf.CLASS_NAME}#deployNonFungibleWrapperContract`; + public getDeployWrapperContractReceipt(): Web3TransactionReceipt { + const fnTag = `${BesuLeaf.CLASS_NAME}#getDeployWrapperContractReceipt`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, () => { try { - //TODO implement - throw new Error("Method not implemented."); - } catch (err) { - span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); - span.recordException(err); - throw err; - } finally { - span.end(); - } - }); - } - /** - * Retrieves the deployment receipt of the fungible wrapper contract. - * - * @returns {Web3TransactionReceipt} The transaction receipt of the deployed fungible wrapper contract. - * @throws {ReceiptError} If the fungible wrapper contract has not been deployed. - */ - public getDeployFungibleWrapperContractReceipt(): Web3TransactionReceipt { - const fnTag = `${BesuLeaf.CLASS_NAME}#getDeployFungibleWrapperContractReceipt`; - const { span, context: ctx } = this.monitorService.startSpan(fnTag); - return context.with(ctx, () => { - try { - if (!this.wrapperFungibleDeployReceipt) { + if (!this.wrapperDeployReceipt) { throw new ReceiptError( - `${BesuLeaf.CLASS_NAME}#getDeployFungibleWrapperContractReceipt() Fungible Wrapper Contract Not deployed`, + `${BesuLeaf.CLASS_NAME}#getDeployWrapperContractReceipt() Wrapper Contract Not deployed`, ); } - return this.wrapperFungibleDeployReceipt; + return this.wrapperDeployReceipt; } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -441,7 +393,7 @@ export class BesuLeaf }); } /** - * Deploys a fungible wrapper contract. + * Deploys a fungible and non fungible wrapper contract. * * @param {string} [contractName] - The name of the contract to be deployed. * @returns {Promise} A promise that resolves when the contract is deployed. @@ -449,10 +401,8 @@ export class BesuLeaf * @throws {TransactionReceiptError} If the deployment transaction receipt is not found. * @throws {ContractAddressError} If the contract address is not found in the deployment receipt. */ - public async deployFungibleWrapperContract( - contractName?: string, - ): Promise { - const fnTag = `${BesuLeaf.CLASS_NAME}#deployFungibleWrapperContract`; + public async deployWrapperContract(contractName?: string): Promise { + const fnTag = `${BesuLeaf.CLASS_NAME}#deployWrapperContract`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); await context.with(ctx, async () => { try { @@ -466,7 +416,7 @@ export class BesuLeaf } this.wrapperContractName = - contractName || `${this.id}-fungible-wrapper-contract`; + contractName || `${this.id}-wrapper-contract`; const deployOutWrapperContract = await this.connector.deployContractNoKeychain({ @@ -490,8 +440,7 @@ export class BesuLeaf ); } - this.wrapperFungibleDeployReceipt = - deployOutWrapperContract.transactionReceipt; + this.wrapperDeployReceipt = deployOutWrapperContract.transactionReceipt; this.wrapperContractAddress = deployOutWrapperContract.transactionReceipt.contractAddress; @@ -516,23 +465,21 @@ export class BesuLeaf * @returns {unknown} The contract address of the wrapper contract. * @throws {InvalidWrapperContract} If the wrapper contract type is invalid. */ - public getWrapperContract(type: "FUNGIBLE" | "NONFUNGIBLE"): string { + public getWrapperContract(type: TokenType): string { const fnTag = `${BesuLeaf.CLASS_NAME}}#getWrapperContract`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, () => { try { - this.log.debug(`${fnTag}, Getting Wrapper Contract Adress`); + this.log.debug(`${fnTag}, Getting Wrapper Contract Address`); switch (type) { - case "FUNGIBLE": + case TokenType.NONSTANDARD_FUNGIBLE: + case TokenType.NONSTANDARD_NONFUNGIBLE: if (!this.wrapperContractAddress) { throw new WrapperContractError( `${fnTag}, Wrapper Contract not deployed`, ); } return this.wrapperContractAddress; - case "NONFUNGIBLE": - //TODO implement - throw new Error("Method not implemented."); default: throw new Error("Invalid type"); } @@ -568,10 +515,17 @@ export class BesuLeaf asset.referenceId, ); - if (!this.wrapperContractName || !this.wrapperContractAddress) { - throw new WrapperContractError( - `${fnTag}, Wrapper Contract not deployed`, - ); + switch (asset.type) { + case TokenType.NONSTANDARD_FUNGIBLE: + case TokenType.NONSTANDARD_NONFUNGIBLE: + if (!this.wrapperContractName || !this.wrapperContractAddress) { + throw new WrapperContractError( + `${fnTag}, Wrapper Contract not deployed`, + ); + } + break; + default: + throw new Error("Unsupported asset type wrapping"); } const response = (await this.connector.invokeContract({ @@ -588,6 +542,7 @@ export class BesuLeaf asset.referenceId, asset.owner, interactions, + asset.ercTokenStandard, ], signingCredential: this.signingCredential, gas: this.gas, @@ -665,20 +620,22 @@ export class BesuLeaf * Locks an asset. * * @param {string} assetId - The ID of the asset to be locked. - * @param {number} amount - The amount of the asset to be locked. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be locked. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async lockAsset( assetId: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${BesuLeaf.CLASS_NAME}}#lockAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { - this.log.debug(`${fnTag}, Locking Asset: ${assetId} amount: ${amount}`); + this.log.debug( + `${fnTag}, Locking Asset: ${assetId} with attribute: ${assetAttribute}`, + ); if (!this.wrapperContractName || !this.wrapperContractAddress) { throw new WrapperContractError( @@ -692,7 +649,7 @@ export class BesuLeaf contractAddress: this.wrapperContractAddress, invocationType: EthContractInvocationType.Send, methodName: "lock", - params: [assetId, amount.toString()], + params: [assetId, assetAttribute], signingCredential: this.signingCredential, gas: this.gas, })) as BesuResponse; @@ -719,21 +676,21 @@ export class BesuLeaf * Unlocks an asset. * * @param {string} assetId - The ID of the asset to be unlocked. - * @param {number} amount - The amount of the asset to be unlocked. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be unlocked. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async unlockAsset( assetId: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${BesuLeaf.CLASS_NAME}}#unlockAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { this.log.debug( - `${fnTag}, Unlocking Asset: ${assetId} amount: ${amount}`, + `${fnTag}, Unlocking Asset: ${assetId} with attribute: ${assetAttribute}`, ); if (!this.wrapperContractName || !this.wrapperContractAddress) { @@ -748,7 +705,7 @@ export class BesuLeaf contractAddress: this.wrapperContractAddress, invocationType: EthContractInvocationType.Send, methodName: "unlock", - params: [assetId, amount.toString()], + params: [assetId, assetAttribute], signingCredential: this.signingCredential, gas: this.gas, })) as BesuResponse; @@ -774,20 +731,22 @@ export class BesuLeaf * Mints an asset. * * @param {string} assetId - The ID of the asset to be minted. - * @param {number} amount - The amount of the asset to be minted. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be minted. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async mintAsset( assetId: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${BesuLeaf.CLASS_NAME}}#mintAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { - this.log.debug(`${fnTag}, Minting Asset: ${assetId} amount: ${amount}`); + this.log.debug( + `${fnTag}, Minting Asset: ${assetId} with attribute: ${assetAttribute}`, + ); if (!this.wrapperContractName || !this.wrapperContractAddress) { throw new WrapperContractError( @@ -801,7 +760,7 @@ export class BesuLeaf contractAddress: this.wrapperContractAddress, invocationType: EthContractInvocationType.Send, methodName: "mint", - params: [assetId, amount.toString()], + params: [assetId, assetAttribute], signingCredential: this.signingCredential, gas: this.gas, })) as BesuResponse; @@ -827,20 +786,22 @@ export class BesuLeaf * Burns an asset. * * @param {string} assetId - The ID of the asset to be burned. - * @param {number} amount - The amount of the asset to be burned. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be burned. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async burnAsset( assetId: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${BesuLeaf.CLASS_NAME}}#burnAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { - this.log.debug(`${fnTag}, Burning Asset: ${assetId} amount: ${amount}`); + this.log.debug( + `${fnTag}, Burning Asset: ${assetId} with attribute: ${assetAttribute}`, + ); if (!this.wrapperContractName || !this.wrapperContractAddress) { throw new WrapperContractError( @@ -854,7 +815,7 @@ export class BesuLeaf contractAddress: this.wrapperContractAddress, invocationType: EthContractInvocationType.Send, methodName: "burn", - params: [assetId, amount.toString()], + params: [assetId, assetAttribute], signingCredential: this.signingCredential, gas: this.gas, })) as BesuResponse; @@ -881,7 +842,7 @@ export class BesuLeaf * * @param {string} assetId - The ID of the asset to be assigned. * @param {string} to - The new owner of the asset. - * @param {number} amount - The amount of the asset to be assigned. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be assigned. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. @@ -889,14 +850,14 @@ export class BesuLeaf public async assignAsset( assetId: string, to: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${BesuLeaf.CLASS_NAME}}#assignAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { this.log.debug( - `${fnTag}, Assigning Asset: ${assetId} amount: ${amount} to: ${to}`, + `${fnTag}, Assigning Asset: ${assetId} with attribute: ${assetAttribute} to: ${to}`, ); if (!this.wrapperContractName || !this.wrapperContractAddress) { @@ -911,7 +872,7 @@ export class BesuLeaf contractAddress: this.wrapperContractAddress, invocationType: EthContractInvocationType.Send, methodName: "assign", - params: [assetId, to, amount], + params: [assetId, to, assetAttribute], signingCredential: this.signingCredential, gas: this.gas, })) as BesuResponse; @@ -987,7 +948,10 @@ export class BesuLeaf * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ - public async getAsset(assetId: string): Promise { + public async getAsset( + assetId: string, + uniqueDescriptor?: UniqueTokenID, + ): Promise { const fnTag = `${BesuLeaf.CLASS_NAME}}#getAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { @@ -1006,7 +970,10 @@ export class BesuLeaf contractAddress: this.wrapperContractAddress, invocationType: EthContractInvocationType.Call, methodName: "getToken", - params: [assetId], + params: [ + assetId, + ...(uniqueDescriptor !== undefined ? [uniqueDescriptor] : []), + ], signingCredential: this.signingCredential, gas: this.gas, })) as BesuResponse; @@ -1016,17 +983,37 @@ export class BesuLeaf } const token = response.callOutput as TokenResponse; + this.log.info(`${fnTag}, Retrieved Asset:`); + this.log.info(token); - return { - contractName: token.contractName, - id: token.tokenId, - referenceId: token.referenceId, - contractAddress: token.contractAddress, - type: Number(token.tokenType), - owner: token.owner, - amount: token.amount, - network: this.networkIdentification, - } as EvmAsset; + switch (Number(token.tokenType)) { + case TokenType.NONSTANDARD_FUNGIBLE: + return { + contractName: token.contractName, + id: token.tokenId, + referenceId: token.referenceId, + contractAddress: token.contractAddress, + type: Number(token.tokenType), + owner: token.owner, + amount: Number(token.amount) as Amount, + network: this.networkIdentification, + ercTokenStandard: Number(token.ercTokenStandard), + } as EvmFungibleAsset; + case TokenType.NONSTANDARD_NONFUNGIBLE: + return { + contractName: token.contractName, + id: token.tokenId, + referenceId: token.referenceId, + contractAddress: token.contractAddress, + type: Number(token.tokenType), + owner: token.owner, + uniqueDescriptor: Number(token.amount) as UniqueTokenID, + network: this.networkIdentification, + ercTokenStandard: Number(token.ercTokenStandard), + } as EvmNonFungibleAsset; + default: + throw new Error("Unexpected Token Type"); + } } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/ethereum-leaf.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/ethereum-leaf.ts index 89a1c5715c..577cf7e806 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/ethereum-leaf.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/ethereum-leaf.ts @@ -16,7 +16,11 @@ import { stringify as safeStableStringify } from "safe-stable-stringify"; import { PluginBungeeHermes } from "@hyperledger/cactus-plugin-bungee-hermes"; import { StrategyEthereum } from "@hyperledger/cactus-plugin-bungee-hermes/dist/lib/main/typescript/strategy/strategy-ethereum"; -import { EvmAsset } from "../ontology/assets/evm-asset"; +import { + EvmAsset, + EvmFungibleAsset, + EvmNonFungibleAsset, +} from "../ontology/assets/evm-asset"; import { LogLevelDesc, Secp256k1Keys } from "@hyperledger/cactus-common"; import { SATPLoggerProvider as LoggerProvider } from "../../../core/satp-logger-provider"; import { SATPLogger as Logger } from "../../../core/satp-logger"; @@ -49,7 +53,7 @@ import { } from "../../common/errors"; import { ISignerKeyPair } from "@hyperledger/cactus-common"; import SATPWrapperContract from "../../../../solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json"; -import { Asset } from "../ontology/assets/asset"; +import { Asset, UniqueTokenID, Amount } from "../ontology/assets/asset"; import { TokenResponse } from "../../../generated/SATPWrapperContract"; import { NetworkId } from "../../../public-api"; import { getEnumKeyByValue } from "../../../services/utils"; @@ -143,7 +147,7 @@ export class EthereumLeaf private readonly gasConfig: GasTransactionConfig | undefined; - private wrapperFungibleDeployReceipt: Web3TransactionReceipt | undefined; + private wrapperDeployReceipt: Web3TransactionReceipt | undefined; private wrapperContractAddress: string | undefined; @@ -299,20 +303,14 @@ export class EthereumLeaf `${fnTag}, Getting Approve Address for asset type: ${getEnumKeyByValue(TokenType, assetType)}`, ); switch (assetType) { - case TokenType.ERC20: case TokenType.NONSTANDARD_FUNGIBLE: + case TokenType.NONSTANDARD_NONFUNGIBLE: if (!this.wrapperContractAddress) { throw new ApproveAddressError( `${fnTag}, Wrapper Contract Address not available for approving address`, ); } return this.wrapperContractAddress; - case TokenType.ERC721: - case TokenType.NONSTANDARD_NONFUNGIBLE: - //TODO implement - throw new ApproveAddressError( - `${fnTag}, Non-fungible wrapper contract not implemented`, - ); default: throw new ApproveAddressError( `${fnTag}, Invalid asset type: ${getEnumKeyByValue(TokenType, assetType)}`, @@ -331,8 +329,7 @@ export class EthereumLeaf /** * Deploys the necessary contracts for the Ethereum leaf. * - * This method deploys the fungible wrapper contract and, if uncommented, - * can also deploy the non-fungible wrapper contract. The deployments are + * This method deploys the wrapper contract and may deploy other needed contracts. The deployments are * executed in parallel using `Promise.all`. * * @returns {Promise} A promise that resolves when all contracts are deployed. @@ -342,54 +339,7 @@ export class EthereumLeaf const { span, context: ctx } = this.monitorService.startSpan(fnTag); await context.with(ctx, async () => { try { - await Promise.all([ - this.deployFungibleWrapperContract(), - // this.deployNonFungibleWrapperContract(), - ]); - } catch (err) { - span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); - span.recordException(err); - throw err; - } finally { - span.end(); - } - }); - } - - /** - * Retrieves the deployment receipt of the non-fungible wrapper contract. - * - * @returns - * @throws - */ - public getDeployNonFungibleWrapperContractReceipt(): unknown { - const fnTag = `${EthereumLeaf.CLASS_NAME}#getDeployNonFungibleWrapperContractReceipt`; - const { span, context: ctx } = this.monitorService.startSpan(fnTag); - return context.with(ctx, () => { - try { - //TODO implement - throw new Error("Method not implemented."); - } catch (err) { - span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); - span.recordException(err); - throw err; - } finally { - span.end(); - } - }); - } - - /** - * Deploys a non-fungible wrapper contract. - * - **/ - public async deployNonFungibleWrapperContract(): Promise { - const fnTag = `${EthereumLeaf.CLASS_NAME}#deployNonFungibleWrapperContract`; - const { span, context: ctx } = this.monitorService.startSpan(fnTag); - await context.with(ctx, () => { - try { - //TODO implement - throw new Error("Method not implemented."); + await Promise.all([this.deployWrapperContract()]); } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -401,22 +351,22 @@ export class EthereumLeaf } /** - * Retrieves the deployment receipt of the fungible wrapper contract. + * Retrieves the deployment receipt of the wrapper contract. * - * @returns {Web3TransactionReceipt} The transaction receipt of the deployed fungible wrapper contract. - * @throws {ReceiptError} If the fungible wrapper contract has not been deployed. + * @returns {Web3TransactionReceipt} The transaction receipt of the deployed wrapper contract. + * @throws {ReceiptError} If the wrapper contract has not been deployed. */ - public getDeployFungibleWrapperContractReceipt(): Web3TransactionReceipt { + public getDeployWrapperContractReceipt(): Web3TransactionReceipt { const fnTag = `${EthereumLeaf.CLASS_NAME}#getDeployFungibleWrapperContractReceipt`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, () => { try { - if (!this.wrapperFungibleDeployReceipt) { + if (!this.wrapperDeployReceipt) { throw new ReceiptError( - `${EthereumLeaf.CLASS_NAME}#getDeployFungibleWrapperContractReceipt() Fungible Wrapper Contract Not deployed`, + `${EthereumLeaf.CLASS_NAME}#getDeployWrapperContractReceipt() Wrapper Contract Not deployed`, ); } - return this.wrapperFungibleDeployReceipt; + return this.wrapperDeployReceipt; } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -428,7 +378,7 @@ export class EthereumLeaf } /** - * Deploys a fungible wrapper contract. + * Deploys a wrapper contract. * * @param {string} [contractName] - The name of the contract to be deployed. * @returns {Promise} A promise that resolves when the contract is deployed. @@ -436,9 +386,7 @@ export class EthereumLeaf * @throws {TransactionReceiptError} If the deployment transaction receipt is not found. * @throws {ContractAddressError} If the contract address is not found in the deployment receipt. */ - public async deployFungibleWrapperContract( - contractName?: string, - ): Promise { + public async deployWrapperContract(contractName?: string): Promise { const fnTag = `${EthereumLeaf.CLASS_NAME}#deployWrapperContract`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); await context.with(ctx, async () => { @@ -450,7 +398,7 @@ export class EthereumLeaf } this.wrapperContractName = - contractName || `${this.id}-fungible-wrapper-contract`; + contractName || `${this.id}-wrapper-contract`; const deployOutWrapperContract = await this.connector.deployContract({ contract: { @@ -477,8 +425,7 @@ export class EthereumLeaf ); } - this.wrapperFungibleDeployReceipt = - deployOutWrapperContract.transactionReceipt; + this.wrapperDeployReceipt = deployOutWrapperContract.transactionReceipt; this.wrapperContractAddress = deployOutWrapperContract.transactionReceipt.contractAddress; @@ -503,23 +450,21 @@ export class EthereumLeaf * @returns {unknown} The contract address of the wrapper contract. * @throws {InvalidWrapperContract} If the wrapper contract type is invalid. */ - public getWrapperContract(type: "FUNGIBLE" | "NONFUNGIBLE"): string { + public getWrapperContract(type: TokenType): string { const fnTag = `${EthereumLeaf.CLASS_NAME}}#getWrapperContract`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, () => { try { - this.log.debug(`${fnTag}, Getting Wrapper Contract Adress`); + this.log.debug(`${fnTag}, Getting Wrapper Contract Address`); switch (type) { - case "FUNGIBLE": + case TokenType.NONSTANDARD_FUNGIBLE: + case TokenType.NONSTANDARD_NONFUNGIBLE: if (!this.wrapperContractAddress) { throw new WrapperContractError( `${fnTag}, Wrapper Contract not deployed`, ); } return this.wrapperContractAddress; - case "NONFUNGIBLE": - //TODO implement - throw new Error("Method not implemented."); default: throw new Error("Invalid type"); } @@ -555,10 +500,17 @@ export class EthereumLeaf asset.referenceId, ); - if (!this.wrapperContractName || !this.wrapperContractAddress) { - throw new WrapperContractError( - `${fnTag}, Wrapper Contract not deployed`, - ); + switch (asset.type) { + case TokenType.NONSTANDARD_FUNGIBLE: + case TokenType.NONSTANDARD_NONFUNGIBLE: + if (!this.wrapperContractName || !this.wrapperContractAddress) { + throw new WrapperContractError( + `${fnTag}, Wrapper Contract not deployed`, + ); + } + break; + default: + throw new Error("Type not supported"); } const response = (await this.connector.invokeContract({ @@ -580,6 +532,7 @@ export class EthereumLeaf asset.referenceId, asset.owner, interactions, + asset.ercTokenStandard, ], web3SigningCredential: this.signingCredential, gasConfig: this.gasConfig, @@ -662,20 +615,22 @@ export class EthereumLeaf * Locks an asset. * * @param {string} assetId - The ID of the asset to be locked. - * @param {number} amount - The amount of the asset to be locked. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be locked. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async lockAsset( assetId: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${EthereumLeaf.CLASS_NAME}}#lockAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { - this.log.debug(`${fnTag}, Locking Asset: ${assetId} amount: ${amount}`); + this.log.debug( + `${fnTag}, Locking Asset: ${assetId} with attribute ${assetAttribute}`, + ); if (!this.wrapperContractName || !this.wrapperContractAddress) { throw new WrapperContractError( @@ -694,7 +649,7 @@ export class EthereumLeaf }, invocationType: EthContractInvocationType.Send, methodName: "lock", - params: [assetId, amount.toString()], + params: [assetId, assetAttribute], web3SigningCredential: this.signingCredential, gasConfig: this.gasConfig, })) as EthereumResponse; @@ -721,21 +676,21 @@ export class EthereumLeaf * Unlocks an asset. * * @param {string} assetId - The ID of the asset to be unlocked. - * @param {number} amount - The amount of the asset to be unlocked. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be unlocked. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async unlockAsset( assetId: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${EthereumLeaf.CLASS_NAME}}#unlockAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { this.log.debug( - `${fnTag}, Unlocking Asset: ${assetId} amount: ${amount}`, + `${fnTag}, Unlocking Asset: ${assetId} with attribute: ${assetAttribute}`, ); if (!this.wrapperContractName || !this.wrapperContractAddress) { @@ -755,11 +710,12 @@ export class EthereumLeaf }, invocationType: EthContractInvocationType.Send, methodName: "unlock", - params: [assetId, amount.toString()], + params: [assetId, assetAttribute], web3SigningCredential: this.signingCredential, gasConfig: this.gasConfig, })) as EthereumResponse; if (!response.success) { + this.log.debug(response); throw new TransactionError(fnTag); } return { @@ -781,20 +737,22 @@ export class EthereumLeaf * Mints an asset. * * @param {string} assetId - The ID of the asset to be minted. - * @param {number} amount - The amount of the asset to be minted. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be minted. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async mintAsset( assetId: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${EthereumLeaf.CLASS_NAME}}#mintAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { - this.log.debug(`${fnTag}, Minting Asset: ${assetId} amount: ${amount}`); + this.log.debug( + `${fnTag}, Minting Asset: ${assetId} with attribute: ${assetAttribute}`, + ); if (!this.wrapperContractName || !this.wrapperContractAddress) { throw new WrapperContractError( @@ -813,11 +771,12 @@ export class EthereumLeaf }, invocationType: EthContractInvocationType.Send, methodName: "mint", - params: [assetId, amount.toString()], + params: [assetId, assetAttribute], web3SigningCredential: this.signingCredential, gasConfig: this.gasConfig, })) as EthereumResponse; if (!response.success) { + this.log.debug(response); throw new TransactionError(fnTag); } return { @@ -839,20 +798,22 @@ export class EthereumLeaf * Burns an asset. * * @param {string} assetId - The ID of the asset to be burned. - * @param {number} amount - The amount of the asset to be burned. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be burned. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async burnAsset( assetId: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${EthereumLeaf.CLASS_NAME}}#burnAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { - this.log.debug(`${fnTag}, Burning Asset: ${assetId} amount: ${amount}`); + this.log.debug( + `${fnTag}, Burning Asset: ${assetId} with attribute: ${assetAttribute}`, + ); if (!this.wrapperContractName || !this.wrapperContractAddress) { throw new WrapperContractError( @@ -871,11 +832,12 @@ export class EthereumLeaf }, invocationType: EthContractInvocationType.Send, methodName: "burn", - params: [assetId, amount.toString()], + params: [assetId, assetAttribute], web3SigningCredential: this.signingCredential, gasConfig: this.gasConfig, })) as EthereumResponse; if (!response.success) { + this.log.debug(response); throw new TransactionError(fnTag); } return { @@ -898,7 +860,7 @@ export class EthereumLeaf * * @param {string} assetId - The ID of the asset to be assigned. * @param {string} to - The new owner of the asset. - * @param {number} amount - The amount of the asset to be assigned. + * @param {Amount | UniqueTokenID} assetAttribute - The attribute of the asset to be assigned. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. @@ -906,14 +868,14 @@ export class EthereumLeaf public async assignAsset( assetId: string, to: string, - amount: number, + assetAttribute: Amount | UniqueTokenID, ): Promise { const fnTag = `${EthereumLeaf.CLASS_NAME}}#assignAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { try { this.log.debug( - `${fnTag}, Assigning Asset: ${assetId} amount: ${amount} to: ${to}`, + `${fnTag}, Assigning Asset: ${assetId} with attribute: ${assetAttribute} to: ${to}`, ); if (!this.wrapperContractName || !this.wrapperContractAddress) { @@ -933,7 +895,7 @@ export class EthereumLeaf }, invocationType: EthContractInvocationType.Send, methodName: "assign", - params: [assetId, to, amount], + params: [assetId, to, assetAttribute], web3SigningCredential: this.signingCredential, gasConfig: this.gasConfig, })) as EthereumResponse; @@ -1014,7 +976,10 @@ export class EthereumLeaf * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ - public async getAsset(assetId: string): Promise { + public async getAsset( + assetId: string, + uniqueDescriptor?: UniqueTokenID, + ): Promise { const fnTag = `${EthereumLeaf.CLASS_NAME}}#getAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, async () => { @@ -1038,7 +1003,10 @@ export class EthereumLeaf }, invocationType: EthContractInvocationType.Call, methodName: "getToken", - params: [assetId], + params: [ + assetId, + ...(uniqueDescriptor !== undefined ? [uniqueDescriptor] : []), + ], web3SigningCredential: this.signingCredential, gasConfig: this.gasConfig, })) as EthereumResponse; @@ -1049,16 +1017,36 @@ export class EthereumLeaf const token = response.callOutput as TokenResponse; - return { - contractName: token.contractName, - id: token.tokenId, - referenceId: token.referenceId, - contractAddress: token.contractAddress, - type: Number(token.tokenType), - owner: token.owner, - amount: token.amount, - network: this.networkIdentification, - } as EvmAsset; + switch (Number(token.tokenType)) { + case TokenType.NONSTANDARD_FUNGIBLE: + this.log.debug("Returning Fungible Asset"); + return { + contractName: token.contractName, + id: token.tokenId, + referenceId: token.referenceId, + contractAddress: token.contractAddress, + type: Number(token.tokenType), + owner: token.owner, + amount: Number(token.amount) as Amount, + network: this.networkIdentification, + ercTokenStandard: Number(token.ercTokenStandard), + } as EvmFungibleAsset; + case TokenType.NONSTANDARD_NONFUNGIBLE: + this.log.debug("Returning Non Fungible Asset"); + return { + contractName: token.contractName, + id: token.tokenId, + referenceId: token.referenceId, + contractAddress: token.contractAddress, + type: Number(token.tokenType), + owner: token.owner, + uniqueDescriptor: Number(token.amount) as UniqueTokenID, + network: this.networkIdentification, + ercTokenStandard: Number(token.ercTokenStandard), + } as EvmNonFungibleAsset; + default: + throw new Error("Unexpected Token Type"); + } } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/fabric-leaf.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/fabric-leaf.ts index 84fa154e0b..9d6f42c6ff 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/fabric-leaf.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/leafs/fabric-leaf.ts @@ -43,8 +43,12 @@ import { WrapperContractError, } from "../../common/errors"; import { INetworkOptions, TransactionResponse } from "../bridge-types"; -import { FabricAsset } from "../ontology/assets/fabric-asset"; -import { Asset } from "../ontology/assets/asset"; +import { + FabricAsset, + FabricFungibleAsset, + //FabricNonFungibleAsset, +} from "../ontology/assets/fabric-asset"; +import { Amount, Asset } from "../ontology/assets/asset"; import { X509Identity } from "fabric-network"; import { NetworkId } from "../../../public-api"; import { getEnumKeyByValue } from "../../../services/utils"; @@ -153,7 +157,7 @@ export class FabricLeaf "../fabric-contracts/satp-wrapper/chaincode-typescript", ); - private wrapperFungibleDeployReceipt: DeployContractV1Response | undefined; + private wrapperDeployReceipt: DeployContractV1Response | undefined; private contractChannel: string | undefined; @@ -347,7 +351,6 @@ export class FabricLeaf `${fnTag}, Getting Approve Address for asset type: ${getEnumKeyByValue(TokenType, assetType)}`, ); switch (assetType) { - case TokenType.ERC20: case TokenType.NONSTANDARD_FUNGIBLE: if (!this.bridgeId) { throw new ApproveAddressError( @@ -355,7 +358,6 @@ export class FabricLeaf ); } return this.bridgeId; - case TokenType.ERC721: case TokenType.NONSTANDARD_NONFUNGIBLE: //TODO implement throw new ApproveAddressError( @@ -391,7 +393,7 @@ export class FabricLeaf await context.with(ctx, async () => { try { await Promise.all([ - this.deployFungibleWrapperContract(), + this.deployWrapperContract(), // this.deployNonFungibleWrapperContract(), ]); } catch (err) { @@ -404,67 +406,23 @@ export class FabricLeaf }); } - /** - * Retrieves the deployment receipt of the non-fungible wrapper contract. - * - * @returns - * @throws - */ - public getDeployNonFungibleWrapperContractReceipt(): unknown { - const fnTag = `${FabricLeaf.CLASS_NAME}#getDeployNonFungibleWrapperContractReceipt`; - const { span, context: ctx } = this.monitorService.startSpan(fnTag); - return context.with(ctx, () => { - try { - //TODO implement - throw new Error("Method not implemented."); - } catch (err) { - span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); - span.recordException(err); - throw err; - } finally { - span.end(); - } - }); - } - - /** - * Deploys a non-fungible wrapper contract. - * - **/ - public deployNonFungibleWrapperContract(): Promise { - const fnTag = `${FabricLeaf.CLASS_NAME}#deployNonFungibleWrapperContract`; - const { span, context: ctx } = this.monitorService.startSpan(fnTag); - return context.with(ctx, () => { - try { - //TODO implement - throw new Error("Method not implemented."); - } catch (err) { - span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); - span.recordException(err); - throw err; - } finally { - span.end(); - } - }); - } - /** * Retrieves the deployment receipt for the fungible wrapper contract. * * @returns {DeployContractV1Response} The deployment receipt of the fungible wrapper contract. * @throws {ReceiptError} If the fungible wrapper contract has not been deployed. */ - public getDeployFungibleWrapperContractReceipt(): DeployContractV1Response { + public getDeployWrapperContractReceipt(): DeployContractV1Response { const fnTag = `${FabricLeaf.CLASS_NAME}#getDeployFungibleWrapperContractReceipt`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, () => { try { - if (!this.wrapperFungibleDeployReceipt) { + if (!this.wrapperDeployReceipt) { throw new ReceiptError( `${FabricLeaf.CLASS_NAME}#getDeployFungibleWrapperContractReceipt() Fungible Wrapper Contract Not deployed`, ); } - return this.wrapperFungibleDeployReceipt; + return this.wrapperDeployReceipt; } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -483,9 +441,7 @@ export class FabricLeaf * @throws {WrapperContractAlreadyCreatedError} If the wrapper contract is already created or if there are missing variables for contract creation. * @throws {TransactionReceiptError} If the wrapper contract deployment fails. */ - public async deployFungibleWrapperContract( - contractName?: string, - ): Promise { + public async deployWrapperContract(contractName?: string): Promise { const fnTag = `${FabricLeaf.CLASS_NAME}#deployWrapperContract`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); await context.with(ctx, async () => { @@ -656,7 +612,7 @@ export class FabricLeaf ); } - this.wrapperFungibleDeployReceipt = deployOutWrapperContract; + this.wrapperDeployReceipt = deployOutWrapperContract; this.log.debug( `${fnTag}, Wrapper Contract deployed receipt: ${safeStableStringify(deployOutWrapperContract)}`, @@ -738,22 +694,21 @@ export class FabricLeaf * @returns {unknown} The contract address of the wrapper contract. * @throws {InvalidWrapperContract} If the wrapper contract type is invalid. */ - public getWrapperContract(type: "FUNGIBLE" | "NONFUNGIBLE"): string { + public getWrapperContract(type: TokenType): string { const fnTag = `${FabricLeaf.CLASS_NAME}#getWrapperContract`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); return context.with(ctx, () => { try { this.log.debug(`${fnTag}, Getting Wrapper Contract Adress`); switch (type) { - case "FUNGIBLE": + case TokenType.NONSTANDARD_FUNGIBLE: if (!this.wrapperContractName) { throw new WrapperContractError( `${fnTag}, Wrapper Contract not deployed`, ); } return this.wrapperContractName; - case "NONFUNGIBLE": - //TODO implement + case TokenType.NONSTANDARD_NONFUNGIBLE: throw new InvalidWrapperContract( `${fnTag}, Non-fungible wrapper contract not implemented`, ); @@ -794,10 +749,18 @@ export class FabricLeaf asset.referenceId, ); - if (!this.contractChannel || !this.wrapperContractName) { - throw new WrapperContractError( - `${fnTag}, Wrapper Contract not deployed`, - ); + switch (asset.type) { + case TokenType.NONSTANDARD_FUNGIBLE: + if (!this.contractChannel || !this.wrapperContractName) { + throw new WrapperContractError( + `${fnTag}, Wrapper Contract not deployed`, + ); + } + break; + case TokenType.NONSTANDARD_NONFUNGIBLE: + throw new Error("Fabric does not support non fungible tokens yet"); + default: + throw new Error("Asset if unsupported type"); } const response = await this.connector.transact({ @@ -895,7 +858,7 @@ export class FabricLeaf */ public async lockAsset( assetId: string, - amount: number, + amount: Amount, ): Promise { const fnTag = `${FabricLeaf.CLASS_NAME}}#lockAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); @@ -940,14 +903,14 @@ export class FabricLeaf * Unlocks an asset. * * @param {string} assetId - The ID of the asset to be unlocked. - * @param {number} amount - The amount of the asset to be unlocked. + * @param {Amount} amount - The amount of the asset to be unlocked. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async unlockAsset( assetId: string, - amount: number, + amount: Amount, ): Promise { const fnTag = `${FabricLeaf.CLASS_NAME}}#unlockAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); @@ -994,14 +957,14 @@ export class FabricLeaf * Mints an asset. * * @param {string} assetId - The ID of the asset to be minted. - * @param {number} amount - The amount of the asset to be minted. + * @param {Amount} amount - The amount of the asset to be minted. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async mintAsset( assetId: string, - amount: number, + amount: Amount, ): Promise { const fnTag = `${FabricLeaf.CLASS_NAME}}#mintAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); @@ -1046,14 +1009,14 @@ export class FabricLeaf * Burns an asset. * * @param {string} assetId - The ID of the asset to be burned. - * @param {number} amount - The amount of the asset to be burned. + * @param {Amount} amount - The amount of the asset to be burned. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. */ public async burnAsset( assetId: string, - amount: number, + amount: Amount, ): Promise { const fnTag = `${FabricLeaf.CLASS_NAME}}#burnAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); @@ -1099,7 +1062,7 @@ export class FabricLeaf * * @param {string} assetId - The ID of the asset to be assigned. * @param {string} to - The new owner of the asset. - * @param {number} amount - The amount of the asset to be assigned. + * @param {Amount} amount - The amount of the asset to be assigned. * @returns {Promise} A promise that resolves to the transaction response. * @throws {WrapperContractError} If the wrapper contract is not deployed. * @throws {TransactionError} If the transaction fails. @@ -1107,7 +1070,7 @@ export class FabricLeaf public async assignAsset( assetId: string, to: string, - amount: number, + amount: Amount, ): Promise { const fnTag = `${FabricLeaf.CLASS_NAME}}#assignAsset`; const { span, context: ctx } = this.monitorService.startSpan(fnTag); @@ -1184,17 +1147,25 @@ export class FabricLeaf const token = JSON.parse(response.functionOutput); - return { - type: Number(token.tokenType), - id: token.tokenId, - referenceId: token.referenceId, - owner: token.owner, - mspId: token.mspId, - channelName: token.channelName, - contractName: token.contractName, - amount: token.amount.toString(), - network: this.networkIdentification, - } as FabricAsset; + switch (Number(token.tokenType)) { + case TokenType.NONSTANDARD_FUNGIBLE: + return { + type: Number(token.tokenType), + id: token.tokenId, + referenceId: token.referenceId, + owner: token.owner, + mspId: token.mspId, + channelName: token.channelName, + contractName: token.contractName, + amount: token.amount.toString(), + network: this.networkIdentification, + ercTokenStandard: token.ercTokenStandard, + } as FabricFungibleAsset; + case TokenType.NONSTANDARD_NONFUNGIBLE: + throw new Error("Fabric does not support non fungible tokens yet"); + default: + throw new Error("Unsupported Token Type"); + } } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset.ts index 8d4097f1fb..2d098051a0 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset.ts @@ -1,5 +1,8 @@ import { v4 as uuidv4 } from "uuid"; -import { TokenType } from "../../../../generated/proto/cacti/satp/v02/common/message_pb"; +import { + ERCTokenStandard, + TokenType, +} from "../../../../generated/proto/cacti/satp/v02/common/message_pb"; import { NetworkId } from "../../../../public-api"; export interface Asset { @@ -9,10 +12,19 @@ export interface Asset { owner: string; contractName: string; network: NetworkId; + ercTokenStandard: ERCTokenStandard; } +export type Brand = K & { __brand: T }; +export type Amount = Brand; +export type UniqueTokenID = Brand; + export interface FungibleAsset extends Asset { - amount: string; + amount: Amount; +} + +export interface NonFungibleAsset extends Asset { + uniqueDescriptor: UniqueTokenID; } export function getTokenType(stringType: string) { @@ -30,3 +42,7 @@ export function createAssetId( export function instanceOfFungibleAsset(asset: Asset) { return "amount" in asset; } + +export function instanceOfNonFungibleAsset(asset: Asset) { + return "uniqueDescriptor" in asset; +} diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/evm-asset.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/evm-asset.ts index ea3a65f200..5291717d2a 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/evm-asset.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/evm-asset.ts @@ -1,14 +1,20 @@ -import { Asset, FungibleAsset } from "./asset"; +import { Asset, FungibleAsset, NonFungibleAsset } from "./asset"; import { InteractionsRequest as EvmInteractionSignature } from "../../../../generated/SATPWrapperContract"; import { getInteractionType, InteractionData } from "./interact-types"; +import { + Logger, + LoggerProvider, + LogLevelDesc, +} from "@hyperledger/cactus-common"; export interface EvmAsset extends Asset { contractAddress: string; } export interface EvmFungibleAsset extends EvmAsset, FungibleAsset {} +export interface EvmNonFungibleAsset extends EvmAsset, NonFungibleAsset {} -export enum VarType { +export enum AssetParameterIdentifier { CONTRACTADDRESS = 0, TOKENTYPE = 1, TOKENID = 2, @@ -16,15 +22,22 @@ export enum VarType { AMOUNT = 4, BRIDGE = 5, RECEIVER = 6, + UNIQUE_DESCRIPTOR = 7, } -export function getVarTypes(stringType: string) { - return VarType[stringType.toUpperCase() as keyof typeof VarType]; +export function getAssetParameterIdentifier(stringType: string) { + return AssetParameterIdentifier[ + stringType.toUpperCase() as keyof typeof AssetParameterIdentifier + ]; } export function evmInteractionList( jsonString: string, ): EvmInteractionSignature[] { + const label: string = "EvmInteractionList"; + const logLevel: LogLevelDesc = "INFO"; + const log: Logger = LoggerProvider.getOrCreate({ label, level: logLevel }); + const ontologyJSON = JSON.parse(jsonString); const interactions: EvmInteractionSignature[] = []; @@ -40,7 +53,7 @@ export function evmInteractionList( const vars: string | number[] = []; for (const variable of signature.variables) { - vars.push(getVarTypes(variable)); + vars.push(getAssetParameterIdentifier(variable)); } variables.push(vars); } @@ -52,6 +65,7 @@ export function evmInteractionList( available: true, }; interactions.push(interactionRequest); + log.info(interactionRequest); } return interactions; diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/fabric-asset.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/fabric-asset.ts index 504461d44e..ea66baa42a 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/fabric-asset.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/ontology/assets/fabric-asset.ts @@ -1,4 +1,4 @@ -import { Asset, FungibleAsset } from "./asset"; +import { Asset, FungibleAsset, NonFungibleAsset } from "./asset"; import { getInteractionType, InteractionData, @@ -11,8 +11,9 @@ export interface FabricAsset extends Asset { } export interface FabricFungibleAsset extends FabricAsset, FungibleAsset {} +export interface FabricNonFungibleAsset extends FabricAsset, NonFungibleAsset {} -export enum VarType { +export enum AssetParameterIdentifier { CONTRACTNAME = 0, CHANNELNAME = 1, TOKENID = 2, @@ -23,16 +24,19 @@ export enum VarType { BRIDGEMSPID = 7, RECEIVER = 8, MSPID = 9, + UNIQUE_DESCRIPTOR = 10, } export function getVarTypes(stringType: string) { - return VarType[stringType.toUpperCase() as keyof typeof VarType]; + return AssetParameterIdentifier[ + stringType.toUpperCase() as keyof typeof AssetParameterIdentifier + ]; } export interface FabricInteractionSignature { type: InteractionType; functionsSignature: string[]; - variables: VarType[][]; + variables: AssetParameterIdentifier[][]; } export function fabricInteractionList( diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/satp-bridge-execution-layer-implementation.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/satp-bridge-execution-layer-implementation.ts index 668a2810d8..7b18e38b2b 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/satp-bridge-execution-layer-implementation.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/cross-chain-mechanisms/bridge/satp-bridge-execution-layer-implementation.ts @@ -4,9 +4,13 @@ import { LogLevelDesc } from "@hyperledger/cactus-common"; import { SATPLoggerProvider as LoggerProvider } from "../../core/satp-logger-provider"; import { SATPLogger as Logger } from "../../core/satp-logger"; import { + Amount, + UniqueTokenID, Asset, FungibleAsset, + NonFungibleAsset, instanceOfFungibleAsset, + instanceOfNonFungibleAsset, } from "./ontology/assets/asset"; import { ClaimFormatError, @@ -18,9 +22,11 @@ import { TransactionReceipt, } from "./satp-bridge-execution-layer"; import { BridgeLeafFungible } from "./bridge-leaf-fungible"; +import { BridgeLeafNonFungible } from "./bridge-leaf-non-fungible"; import { BridgeLeaf } from "./bridge-leaf"; import { MonitorService } from "../../services/monitoring/monitor"; import { context, SpanStatusCode } from "@opentelemetry/api"; +import { TransactionResponse } from "./bridge-types"; /** * Options for configuring the ISATPBridgeExecutionLayerImpl. @@ -36,6 +42,21 @@ export interface ISATPBridgeExecutionLayerImplOptions { monitorService: MonitorService; } +enum SATPStageOperations { + WRAP = "wrapAsset", + UNWRAP = "unwrapAsset", + LOCK = "lockAsset", + UNLOCK = "unlockAsset", + MINT = "mintAsset", + BURN = "burnAsset", + ASSIGN = "assignAsset", +} + +export interface IdentifiedTransactionResponse { + transactionReceipt: TransactionReceipt; + transactionId: string; +} + /** * @class SATPBridgeExecutionLayerImpl * @implements SATPBridgeExecutionLayer @@ -75,8 +96,129 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { this.bridgeEndPoint = options.leafBridge; } + private async requestOperationAndProof( + fnTag: string, + op: SATPStageOperations, + asset: Asset, + ): Promise { + let bridgeEndPoint: BridgeLeafFungible | BridgeLeafNonFungible; + if (instanceOfFungibleAsset(asset)) { + bridgeEndPoint = this.bridgeEndPoint as unknown as BridgeLeafFungible; + } else if (instanceOfNonFungibleAsset(asset)) { + bridgeEndPoint = this.bridgeEndPoint as unknown as BridgeLeafNonFungible; + } else { + throw new Error(`Operation ${op} not implemented for current asset type`); + } + + let response: TransactionResponse; + + switch (op) { + case SATPStageOperations.WRAP: + response = await bridgeEndPoint.wrapAsset(asset); + break; + case SATPStageOperations.UNWRAP: + response = await bridgeEndPoint.unwrapAsset(asset.id); + break; + case SATPStageOperations.LOCK: + if (instanceOfFungibleAsset(asset)) { + response = await (bridgeEndPoint as BridgeLeafFungible).lockAsset( + asset.id, + Number((asset as FungibleAsset).amount) as Amount, + ); + } else if (instanceOfNonFungibleAsset(asset)) { + response = await (bridgeEndPoint as BridgeLeafNonFungible).lockAsset( + asset.id, + Number( + (asset as NonFungibleAsset).uniqueDescriptor, + ) as UniqueTokenID, + ); + } + break; + case SATPStageOperations.UNLOCK: + if (instanceOfFungibleAsset(asset)) { + response = await (bridgeEndPoint as BridgeLeafFungible).unlockAsset( + asset.id, + Number((asset as FungibleAsset).amount) as Amount, + ); + } else if (instanceOfNonFungibleAsset(asset)) { + response = await ( + bridgeEndPoint as BridgeLeafNonFungible + ).unlockAsset( + asset.id, + Number( + (asset as NonFungibleAsset).uniqueDescriptor, + ) as UniqueTokenID, + ); + } + break; + case SATPStageOperations.MINT: + if (instanceOfFungibleAsset(asset)) { + response = await (bridgeEndPoint as BridgeLeafFungible).mintAsset( + asset.id, + Number((asset as FungibleAsset).amount) as Amount, + ); + } else if (instanceOfNonFungibleAsset(asset)) { + response = await (bridgeEndPoint as BridgeLeafNonFungible).mintAsset( + asset.id, + (asset as NonFungibleAsset).uniqueDescriptor as UniqueTokenID, + ); + } + break; + case SATPStageOperations.BURN: + if (instanceOfFungibleAsset(asset)) { + response = await (bridgeEndPoint as BridgeLeafFungible).burnAsset( + asset.id, + Number((asset as FungibleAsset).amount) as Amount, + ); + } else if (instanceOfNonFungibleAsset(asset)) { + response = await (bridgeEndPoint as BridgeLeafNonFungible).burnAsset( + asset.id, + (asset as NonFungibleAsset).uniqueDescriptor as UniqueTokenID, + ); + } + break; + case SATPStageOperations.ASSIGN: + if (instanceOfFungibleAsset(asset)) { + response = await (bridgeEndPoint as BridgeLeafFungible).assignAsset( + asset.id, + asset.owner, + Number((asset as FungibleAsset).amount) as Amount, + ); + } else if (instanceOfNonFungibleAsset(asset)) { + response = await ( + bridgeEndPoint as BridgeLeafNonFungible + ).assignAsset( + asset.id, + asset.owner, + (asset as NonFungibleAsset).uniqueDescriptor as UniqueTokenID, + ); + } + break; + default: + throw new Error(`Operation ${op} not implemented`); + } + + if (response!.transactionId == undefined) { + throw new TransactionIdUndefinedError(fnTag); + } + + const receipt = await bridgeEndPoint.getReceipt(response!.transactionId!); + + this.log.info(`${fnTag}, proof of ${op}: ${receipt}`); + + const proof = await this.bridgeEndPoint.getProof(asset, this.claimType); + + return { + transactionReceipt: { + receipt: receipt, + proof: proof, + }, + transactionId: response!.transactionId, + }; + } + /** - * Wraps a fungible asset. + * Wraps a fungible or non fungible asset. * * @param asset - The asset to be wrapped. * @returns A promise that resolves to a transaction receipt containing the receipt and proof of the asset wrapping. @@ -92,47 +234,33 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { undefined | string | number | boolean | string[] | number[] | boolean[] > = {}; try { - if (instanceOfFungibleAsset(asset)) { - const fungibleBridgeEndPoint = this - .bridgeEndPoint as unknown as BridgeLeafFungible; - const response = await fungibleBridgeEndPoint.wrapAsset(asset); - - if (response.transactionId == undefined) { - throw new TransactionIdUndefinedError(fnTag); - } - - const receipt = await fungibleBridgeEndPoint.getReceipt( - response.transactionId, - ); - - this.log.info(`${fnTag}, proof of the asset wrapping: ${receipt}`); - - const proof = await this.bridgeEndPoint.getProof( - asset, - this.claimType, - ); - - const parsedReceipt = JSON.parse(receipt); - - attributes.senderAddress = parsedReceipt.from; - attributes.receiverAddress = parsedReceipt.to; - attributes.internalNetworkTransactionId = response.transactionId; - attributes.assetId = asset.id; - attributes.operation = "wrapAsset"; - - this.monitorService.updateCounter( - "operation_gas_used", - parsedReceipt.gas, - attributes, - ); - - return { - receipt, - proof, - }; - } else { - throw new Error("Non-fungible wrapAsset not implemented"); - } + const transactionArtifacts = await this.requestOperationAndProof( + fnTag, + SATPStageOperations.WRAP, + asset, + ); + + const parsedReceipt = JSON.parse( + transactionArtifacts.transactionReceipt.receipt, + ); + + attributes.senderAddress = parsedReceipt.from; + attributes.receiverAddress = parsedReceipt.to; + attributes.internalNetworkTransactionId = + transactionArtifacts.transactionId; + attributes.assetId = asset.id; + attributes.operation = "wrapAsset"; + + this.monitorService.updateCounter( + "operation_gas_used", + parsedReceipt.gas, + attributes, + ); + + return { + receipt: transactionArtifacts.transactionReceipt.receipt, + proof: transactionArtifacts.transactionReceipt.proof, + }; } catch (error) { span.setStatus({ code: SpanStatusCode.ERROR, @@ -147,7 +275,7 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { } /** - * Unwraps a fungible asset. + * Unwraps a fungible or non fungible asset. * * @param asset - The asset to be unwrapped. * @returns A promise that resolves to a transaction receipt containing the receipt and proof of the asset unwrapping. @@ -163,47 +291,33 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { undefined | string | number | boolean | string[] | number[] | boolean[] > = {}; try { - if (instanceOfFungibleAsset(asset)) { - const fungibleBridgeEndPoint = this - .bridgeEndPoint as unknown as BridgeLeafFungible; - const response = await fungibleBridgeEndPoint.unwrapAsset(asset.id); - - if (response.transactionId == undefined) { - throw new TransactionIdUndefinedError(fnTag); - } - - const receipt = await fungibleBridgeEndPoint.getReceipt( - response.transactionId, - ); - - this.log.info(`${fnTag}, proof of the asset wrapping: ${receipt}`); - - const parsedReceipt = JSON.parse(receipt); - - attributes.senderAddress = parsedReceipt.from; - attributes.receiverAddress = parsedReceipt.to; - attributes.internalNetworkTransactionId = response.transactionId; - attributes.assetId = asset.id; - attributes.operation = "unwrapAsset"; - - this.monitorService.updateCounter( - "operation_gas_used", - parsedReceipt.gas, - attributes, - ); - - const proof = await this.bridgeEndPoint.getProof( - asset, - this.claimType, - ); - - return { - receipt, - proof, - }; - } else { - throw new Error("Non-fungible unWrapAsset not implemented"); - } + const transactionArtifacts = await this.requestOperationAndProof( + fnTag, + SATPStageOperations.UNWRAP, + asset, + ); + + const parsedReceipt = JSON.parse( + transactionArtifacts.transactionReceipt.receipt, + ); + + attributes.senderAddress = parsedReceipt.from; + attributes.receiverAddress = parsedReceipt.to; + attributes.internalNetworkTransactionId = + transactionArtifacts.transactionId; + attributes.assetId = asset.id; + attributes.operation = "unwrapAsset"; + + this.monitorService.updateCounter( + "operation_gas_used", + parsedReceipt.gas, + attributes, + ); + + return { + receipt: transactionArtifacts.transactionReceipt.receipt, + proof: transactionArtifacts.transactionReceipt.proof, + }; } catch (error) { span.setStatus({ code: SpanStatusCode.ERROR, @@ -218,7 +332,7 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { } /** - * Locks a fungible asset. + * Locks a fungible or non fungible asset. * * @param asset - The asset to be locked. * @returns A promise that resolves to a transaction receipt containing the receipt and proof of the asset locking. @@ -234,50 +348,33 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { undefined | string | number | boolean | string[] | number[] | boolean[] > = {}; try { - if (instanceOfFungibleAsset(asset)) { - const fungibleBridgeEndPoint = this - .bridgeEndPoint as unknown as BridgeLeafFungible; - const response = await fungibleBridgeEndPoint.lockAsset( - asset.id, - Number((asset as FungibleAsset).amount), - ); - - if (response.transactionId == undefined) { - throw new TransactionIdUndefinedError(fnTag); - } - - const receipt = await fungibleBridgeEndPoint.getReceipt( - response.transactionId, - ); - - this.log.info(`${fnTag}, proof of the asset wrapping: ${receipt}`); - - const parsedReceipt = JSON.parse(receipt); - - attributes.senderAddress = parsedReceipt.from; - attributes.receiverAddress = parsedReceipt.to; - attributes.internalNetworkTransactionId = response.transactionId; - attributes.assetId = asset.id; - attributes.operation = "lockAsset"; - - this.monitorService.updateCounter( - "operation_gas_used", - parsedReceipt.gas, - attributes, - ); - - const proof = await this.bridgeEndPoint.getProof( - asset, - this.claimType, - ); - - return { - receipt, - proof, - }; - } else { - throw new Error("Non-fungible lockAsset not implemented"); - } + const transactionArtifacts = await this.requestOperationAndProof( + fnTag, + SATPStageOperations.LOCK, + asset, + ); + + const parsedReceipt = JSON.parse( + transactionArtifacts.transactionReceipt.receipt, + ); + + attributes.senderAddress = parsedReceipt.from; + attributes.receiverAddress = parsedReceipt.to; + attributes.internalNetworkTransactionId = + transactionArtifacts.transactionId; + attributes.assetId = asset.id; + attributes.operation = "lockAsset"; + + this.monitorService.updateCounter( + "operation_gas_used", + parsedReceipt.gas, + attributes, + ); + + return { + receipt: transactionArtifacts.transactionReceipt.receipt, + proof: transactionArtifacts.transactionReceipt.proof, + }; } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -289,7 +386,7 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { } /** - * Unlocks a fungible asset. + * Unlocks a fungible or non fungible asset. * * @param asset - The asset to be unlocked. * @returns A promise that resolves to a transaction receipt containing the receipt and proof of the asset unlocking. @@ -305,50 +402,33 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { undefined | string | number | boolean | string[] | number[] | boolean[] > = {}; try { - if (instanceOfFungibleAsset(asset)) { - const fungibleBridgeEndPoint = this - .bridgeEndPoint as unknown as BridgeLeafFungible; - const response = await fungibleBridgeEndPoint.unlockAsset( - asset.id, - Number((asset as FungibleAsset).amount), - ); - - if (response.transactionId == undefined) { - throw new TransactionIdUndefinedError(fnTag); - } - - const receipt = await fungibleBridgeEndPoint.getReceipt( - response.transactionId, - ); - - this.log.info(`${fnTag}, proof of the asset wrapping: ${receipt}`); - - const parsedReceipt = JSON.parse(receipt); - - attributes.senderAddress = parsedReceipt.from; - attributes.receiverAddress = parsedReceipt.to; - attributes.internalNetworkTransactionId = response.transactionId; - attributes.assetId = asset.id; - attributes.operation = "unlockAsset"; - - this.monitorService.updateCounter( - "operation_gas_used", - parsedReceipt.gas, - attributes, - ); - - const proof = await this.bridgeEndPoint.getProof( - asset, - this.claimType, - ); - - return { - receipt, - proof, - }; - } else { - throw new Error("Non-fungible unlockAsset not implemented"); - } + const transactionArtifacts = await this.requestOperationAndProof( + fnTag, + SATPStageOperations.UNLOCK, + asset, + ); + + const parsedReceipt = JSON.parse( + transactionArtifacts.transactionReceipt.receipt, + ); + + attributes.senderAddress = parsedReceipt.from; + attributes.receiverAddress = parsedReceipt.to; + attributes.internalNetworkTransactionId = + transactionArtifacts.transactionId; + attributes.assetId = asset.id; + attributes.operation = "unlockAsset"; + + this.monitorService.updateCounter( + "operation_gas_used", + parsedReceipt.gas, + attributes, + ); + + return { + receipt: transactionArtifacts.transactionReceipt.receipt, + proof: transactionArtifacts.transactionReceipt.proof, + }; } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -360,7 +440,7 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { } /** - * Mints a fungible asset. + * Mints a fungible or non fungible asset. * * @param asset - The asset to be minted. * @returns A promise that resolves to a transaction receipt containing the receipt and proof of the asset minting. @@ -376,50 +456,33 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { undefined | string | number | boolean | string[] | number[] | boolean[] > = {}; try { - if (instanceOfFungibleAsset(asset)) { - const fungibleBridgeEndPoint = this - .bridgeEndPoint as unknown as BridgeLeafFungible; - const response = await fungibleBridgeEndPoint.mintAsset( - asset.id, - Number((asset as FungibleAsset).amount), - ); - - if (response.transactionId == undefined) { - throw new TransactionIdUndefinedError(fnTag); - } - - const receipt = await fungibleBridgeEndPoint.getReceipt( - response.transactionId, - ); - - this.log.info(`${fnTag}, proof of the asset wrapping: ${receipt}`); - - const parsedReceipt = JSON.parse(receipt); - - attributes.senderAddress = parsedReceipt.from; - attributes.receiverAddress = parsedReceipt.to; - attributes.internalNetworkTransactionId = response.transactionId; - attributes.assetId = asset.id; - attributes.operation = "mintAsset"; - - this.monitorService.updateCounter( - "operation_gas_used", - parsedReceipt.gas, - attributes, - ); - - const proof = await this.bridgeEndPoint.getProof( - asset, - this.claimType, - ); - - return { - receipt, - proof, - }; - } else { - throw new Error("Non-fungible mintAsset not implemented"); - } + const transactionArtifacts = await this.requestOperationAndProof( + fnTag, + SATPStageOperations.MINT, + asset, + ); + + const parsedReceipt = JSON.parse( + transactionArtifacts.transactionReceipt.receipt, + ); + + attributes.senderAddress = parsedReceipt.from; + attributes.receiverAddress = parsedReceipt.to; + attributes.internalNetworkTransactionId = + transactionArtifacts.transactionId; + attributes.assetId = asset.id; + attributes.operation = "mintAsset"; + + this.monitorService.updateCounter( + "operation_gas_used", + parsedReceipt.gas, + attributes, + ); + + return { + receipt: transactionArtifacts.transactionReceipt.receipt, + proof: transactionArtifacts.transactionReceipt.proof, + }; } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -431,8 +494,7 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { } /** - * Burns a fungible asset. - * + * Burns a fungible or non fungible asset. * @param asset - The asset to be burned. * @returns A promise that resolves to a transaction receipt containing the receipt and proof of the asset burning. * @throws {TransactionIdUndefinedError} If the transaction ID is undefined. @@ -447,50 +509,33 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { undefined | string | number | boolean | string[] | number[] | boolean[] > = {}; try { - if (instanceOfFungibleAsset(asset)) { - const fungibleBridgeEndPoint = this - .bridgeEndPoint as unknown as BridgeLeafFungible; - const response = await fungibleBridgeEndPoint.burnAsset( - asset.id, - Number((asset as FungibleAsset).amount), - ); - - if (response.transactionId == undefined) { - throw new TransactionIdUndefinedError(fnTag); - } - - const receipt = await fungibleBridgeEndPoint.getReceipt( - response.transactionId, - ); - - this.log.info(`${fnTag}, proof of the asset wrapping: ${receipt}`); - - const parsedReceipt = JSON.parse(receipt); - - attributes.senderAddress = parsedReceipt.from; - attributes.receiverAddress = parsedReceipt.to; - attributes.internalNetworkTransactionId = response.transactionId; - attributes.assetId = asset.id; - attributes.operation = "burnAsset"; - - this.monitorService.updateCounter( - "operation_gas_used", - parsedReceipt.gas, - attributes, - ); - - const proof = await this.bridgeEndPoint.getProof( - asset, - this.claimType, - ); - - return { - receipt, - proof, - }; - } else { - throw new Error("Non-fungible burnAsset not implemented"); - } + const transactionArtifacts = await this.requestOperationAndProof( + fnTag, + SATPStageOperations.BURN, + asset, + ); + + const parsedReceipt = JSON.parse( + transactionArtifacts.transactionReceipt.receipt, + ); + + attributes.senderAddress = parsedReceipt.from; + attributes.receiverAddress = parsedReceipt.to; + attributes.internalNetworkTransactionId = + transactionArtifacts.transactionId; + attributes.assetId = asset.id; + attributes.operation = "burnAsset"; + + this.monitorService.updateCounter( + "operation_gas_used", + parsedReceipt.gas, + attributes, + ); + + return { + receipt: transactionArtifacts.transactionReceipt.receipt, + proof: transactionArtifacts.transactionReceipt.proof, + }; } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); @@ -502,7 +547,7 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { } /** - * Assigns a fungible asset to a recipient. + * Assigns a fungible or non fungible asset to a recipient. * * @param asset - The asset to be assigned. * @param recipient - The recipient of the asset. @@ -519,51 +564,33 @@ export class SATPBridgeExecutionLayerImpl implements SATPBridgeExecutionLayer { undefined | string | number | boolean | string[] | number[] | boolean[] > = {}; try { - if (instanceOfFungibleAsset(asset)) { - const fungibleBridgeEndPoint = this - .bridgeEndPoint as unknown as BridgeLeafFungible; - const response = await fungibleBridgeEndPoint.assignAsset( - asset.id, - asset.owner, - Number((asset as FungibleAsset).amount), - ); - - if (response.transactionId == undefined) { - throw new TransactionIdUndefinedError(fnTag); - } - - const receipt = await fungibleBridgeEndPoint.getReceipt( - response.transactionId, - ); - - this.log.info(`${fnTag}, proof of the asset wrapping: ${receipt}`); - - const parsedReceipt = JSON.parse(receipt); - - attributes.senderAddress = parsedReceipt.from; - attributes.receiverAddress = parsedReceipt.to; - attributes.internalNetworkTransactionId = response.transactionId; - attributes.assetId = asset.id; - attributes.operation = "assignAsset"; - - this.monitorService.updateCounter( - "operation_gas_used", - parsedReceipt.gas, - attributes, - ); - - const proof = await this.bridgeEndPoint.getProof( - asset, - this.claimType, - ); - - return { - receipt, - proof, - }; - } else { - throw new Error("Non-fungible assignAsset not implemented"); - } + const transactionArtifacts = await this.requestOperationAndProof( + fnTag, + SATPStageOperations.ASSIGN, + asset, + ); + + const parsedReceipt = JSON.parse( + transactionArtifacts.transactionReceipt.receipt, + ); + + attributes.senderAddress = parsedReceipt.from; + attributes.receiverAddress = parsedReceipt.to; + attributes.internalNetworkTransactionId = + transactionArtifacts.transactionId; + attributes.assetId = asset.id; + attributes.operation = "assignAsset"; + + this.monitorService.updateCounter( + "operation_gas_used", + parsedReceipt.gas, + attributes, + ); + + return { + receipt: transactionArtifacts.transactionReceipt.receipt, + proof: transactionArtifacts.transactionReceipt.proof, + }; } catch (err) { span.setStatus({ code: SpanStatusCode.ERROR, message: String(err) }); span.recordException(err); diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/SATPWrapperContract.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/SATPWrapperContract.ts index afc28b72da..d4adf7e31a 100755 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/SATPWrapperContract.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/SATPWrapperContract.ts @@ -60,6 +60,7 @@ export type ContractContext = Web3ContractContext< SATPWrapperContractEvents >; export type SATPWrapperContractEvents = + | 'Approve' | 'Assign' | 'Burn' | 'Changed' @@ -70,6 +71,15 @@ export type SATPWrapperContractEvents = | 'Unwrap' | 'Wrap'; export interface SATPWrapperContractEventsContext { + Approve( + parameters: { + filter?: { tokenId?: string | string[] }; + fromBlock?: number; + toBlock?: 'latest' | number; + topics?: string[]; + }, + callback?: (error: Error, event: EventData) => void + ): EventResponse; Assign( parameters: { filter?: { tokenId?: string | string[] }; @@ -157,13 +167,16 @@ export interface SATPWrapperContractEventsContext { } export type SATPWrapperContractMethodNames = | 'new' + | 'NFT_IDs' | 'assign' | 'bridge_address' | 'burn' | 'getAllAssetsIDs' | 'getToken' + | 'getToken' | 'lock' | 'mint' + | 'onERC721Received' | 'owner' | 'renounceOwnership' | 'tokens' @@ -181,6 +194,7 @@ export interface TokenResponse { referenceId: string; owner: string; amount: string; + ercTokenStandard: string; } export interface TokensResponse { contractName: string; @@ -190,6 +204,7 @@ export interface TokensResponse { referenceId: string; owner: string; amount: string; + ercTokenStandard: string; } export interface TokensInteractionsResponse { interactionType: string; @@ -201,6 +216,11 @@ export interface InteractionsRequest { variables: string | number[][]; available: boolean; } +export interface ApproveEventEmittedResponse { + tokenId: string; + spender: string; + amount: string; +} export interface AssignEventEmittedResponse { tokenId: string; receiver_account: string; @@ -249,6 +269,18 @@ export interface SATPWrapperContract { * @param _bridge_address Type: address, Indexed: false */ 'new'(_bridge_address: string): MethodReturnContext; + /** + * Payable: false + * Constant: true + * StateMutability: view + * Type: function + * @param parameter0 Type: string, Indexed: false + * @param parameter1 Type: uint256, Indexed: false + */ + NFT_IDs( + parameter0: string, + parameter1: string + ): MethodConstantReturnContext; /** * Payable: false * Constant: false @@ -256,12 +288,12 @@ export interface SATPWrapperContract { * Type: function * @param tokenId Type: string, Indexed: false * @param receiver_account Type: address, Indexed: false - * @param amount Type: uint256, Indexed: false + * @param assetAttribute Type: uint256, Indexed: false */ assign( tokenId: string, receiver_account: string, - amount: string + assetAttribute: string ): MethodReturnContext; /** * Payable: false @@ -276,9 +308,9 @@ export interface SATPWrapperContract { * StateMutability: nonpayable * Type: function * @param tokenId Type: string, Indexed: false - * @param amount Type: uint256, Indexed: false + * @param assetAttribute Type: uint256, Indexed: false */ - burn(tokenId: string, amount: string): MethodReturnContext; + burn(tokenId: string, assetAttribute: string): MethodReturnContext; /** * Payable: false * Constant: true @@ -286,6 +318,18 @@ export interface SATPWrapperContract { * Type: function */ getAllAssetsIDs(): MethodConstantReturnContext; + /** + * Payable: false + * Constant: true + * StateMutability: view + * Type: function + * @param tokenId Type: string, Indexed: false + * @param assetAttribute Type: uint256, Indexed: false + */ + getToken( + tokenId: string, + assetAttribute: string + ): MethodConstantReturnContext; /** * Payable: false * Constant: true @@ -300,18 +344,34 @@ export interface SATPWrapperContract { * StateMutability: nonpayable * Type: function * @param tokenId Type: string, Indexed: false - * @param amount Type: uint256, Indexed: false + * @param assetAttribute Type: uint256, Indexed: false */ - lock(tokenId: string, amount: string): MethodReturnContext; + lock(tokenId: string, assetAttribute: string): MethodReturnContext; /** * Payable: false * Constant: false * StateMutability: nonpayable * Type: function * @param tokenId Type: string, Indexed: false - * @param amount Type: uint256, Indexed: false + * @param assetAttribute Type: uint256, Indexed: false */ - mint(tokenId: string, amount: string): MethodReturnContext; + mint(tokenId: string, assetAttribute: string): MethodReturnContext; + /** + * Payable: false + * Constant: true + * StateMutability: pure + * Type: function + * @param parameter0 Type: address, Indexed: false + * @param parameter1 Type: address, Indexed: false + * @param parameter2 Type: uint256, Indexed: false + * @param parameter3 Type: bytes, Indexed: false + */ + onERC721Received( + parameter0: string, + parameter1: string, + parameter2: string, + parameter3: string | number[] + ): MethodConstantReturnContext; /** * Payable: false * Constant: true @@ -360,9 +420,9 @@ export interface SATPWrapperContract { * StateMutability: nonpayable * Type: function * @param tokenId Type: string, Indexed: false - * @param amount Type: uint256, Indexed: false + * @param assetAttribute Type: uint256, Indexed: false */ - unlock(tokenId: string, amount: string): MethodReturnContext; + unlock(tokenId: string, assetAttribute: string): MethodReturnContext; /** * Payable: false * Constant: false @@ -382,6 +442,8 @@ export interface SATPWrapperContract { * @param tokenId Type: string, Indexed: false * @param referenceId Type: string, Indexed: false * @param owner Type: address, Indexed: false + * @param interactions Type: tuple[], Indexed: false + * @param ercTokenStandard Type: uint8, Indexed: false */ wrap( contractName: string, @@ -389,7 +451,9 @@ export interface SATPWrapperContract { tokenType: string | number, tokenId: string, referenceId: string, - owner: string + owner: string, + interactions: InteractionsRequest[], + ercTokenStandard: string | number ): MethodReturnContext; /** * Payable: false @@ -402,7 +466,7 @@ export interface SATPWrapperContract { * @param tokenId Type: string, Indexed: false * @param referenceId Type: string, Indexed: false * @param owner Type: address, Indexed: false - * @param interactions Type: tuple[], Indexed: false + * @param ercTokenStandard Type: uint8, Indexed: false */ wrap( contractName: string, @@ -411,6 +475,6 @@ export interface SATPWrapperContract { tokenId: string, referenceId: string, owner: string, - interactions: InteractionsRequest[] + ercTokenStandard: string | number ): MethodReturnContext; } diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/gateway-client/typescript-axios/api.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/gateway-client/typescript-axios/api.ts index 504094bbd1..b3c7dfb7c2 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/gateway-client/typescript-axios/api.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/gateway-client/typescript-axios/api.ts @@ -319,17 +319,28 @@ export interface Asset { * @memberof Asset */ 'referenceId': string; + /** + * The ERC token standard. + * @type {string} + * @memberof Asset + */ + 'ercTokenStandard': AssetErcTokenStandardEnum; } export const AssetTokenTypeEnum = { + Fungible: 'NONSTANDARD_FUNGIBLE', + Nonfungible: 'NONSTANDARD_NONFUNGIBLE' +} as const; + +export type AssetTokenTypeEnum = typeof AssetTokenTypeEnum[keyof typeof AssetTokenTypeEnum]; +export const AssetErcTokenStandardEnum = { + Unspecified: 'UNSPECIFIED', Erc20: 'ERC20', Erc721: 'ERC721', - Erc1155: 'ERC1155', - NonstandardFungible: 'NONSTANDARD_FUNGIBLE', - NonstandardNonfungible: 'NONSTANDARD_NONFUNGIBLE' + Erc1155: 'ERC1155' } as const; -export type AssetTokenTypeEnum = typeof AssetTokenTypeEnum[keyof typeof AssetTokenTypeEnum]; +export type AssetErcTokenStandardEnum = typeof AssetErcTokenStandardEnum[keyof typeof AssetErcTokenStandardEnum]; /** * Response schema for an audit request. Contains the proofs generated during the audit period and the start and end datetimes. @@ -617,6 +628,22 @@ export interface DraftVersions { */ 'Crash'?: string; } +/** + * The ERC token standard. + * @export + * @enum {string} + */ + +export const ERCTokenStandard = { + Unspecified: 'UNSPECIFIED', + Erc20: 'ERC20', + Erc721: 'ERC721', + Erc1155: 'ERC1155' +} as const; + +export type ERCTokenStandard = typeof ERCTokenStandard[keyof typeof ERCTokenStandard]; + + /** * Provides an estimation for a transaction, including costs, amounts, and execution duration. * @export @@ -1334,11 +1361,8 @@ export interface GetApproveAddressRequest { } export const GetApproveAddressRequestTokenTypeEnum = { - Erc20: 'ERC20', - Erc721: 'ERC721', - Erc1155: 'ERC1155', - NonstandardFungible: 'NONSTANDARD_FUNGIBLE', - NonstandardNonfungible: 'NONSTANDARD_NONFUNGIBLE' + Fungible: 'NONSTANDARD_FUNGIBLE', + Nonfungible: 'NONSTANDARD_NONFUNGIBLE' } as const; export type GetApproveAddressRequestTokenTypeEnum = typeof GetApproveAddressRequestTokenTypeEnum[keyof typeof GetApproveAddressRequestTokenTypeEnum]; @@ -3459,11 +3483,8 @@ export type TokenChainTypeEnum = typeof TokenChainTypeEnum[keyof typeof TokenCha */ export const TokenType = { - Erc20: 'ERC20', - Erc721: 'ERC721', - Erc1155: 'ERC1155', - NonstandardFungible: 'NONSTANDARD_FUNGIBLE', - NonstandardNonfungible: 'NONSTANDARD_NONFUNGIBLE' + Fungible: 'NONSTANDARD_FUNGIBLE', + Nonfungible: 'NONSTANDARD_NONFUNGIBLE' } as const; export type TokenType = typeof TokenType[keyof typeof TokenType]; @@ -3790,17 +3811,28 @@ export interface TransactRequestSourceAsset { * @memberof TransactRequestSourceAsset */ 'referenceId': string; + /** + * The ERC token standard. + * @type {string} + * @memberof TransactRequestSourceAsset + */ + 'ercTokenStandard': TransactRequestSourceAssetErcTokenStandardEnum; } export const TransactRequestSourceAssetTokenTypeEnum = { + Fungible: 'NONSTANDARD_FUNGIBLE', + Nonfungible: 'NONSTANDARD_NONFUNGIBLE' +} as const; + +export type TransactRequestSourceAssetTokenTypeEnum = typeof TransactRequestSourceAssetTokenTypeEnum[keyof typeof TransactRequestSourceAssetTokenTypeEnum]; +export const TransactRequestSourceAssetErcTokenStandardEnum = { + Unspecified: 'UNSPECIFIED', Erc20: 'ERC20', Erc721: 'ERC721', - Erc1155: 'ERC1155', - NonstandardFungible: 'NONSTANDARD_FUNGIBLE', - NonstandardNonfungible: 'NONSTANDARD_NONFUNGIBLE' + Erc1155: 'ERC1155' } as const; -export type TransactRequestSourceAssetTokenTypeEnum = typeof TransactRequestSourceAssetTokenTypeEnum[keyof typeof TransactRequestSourceAssetTokenTypeEnum]; +export type TransactRequestSourceAssetErcTokenStandardEnum = typeof TransactRequestSourceAssetErcTokenStandardEnum[keyof typeof TransactRequestSourceAssetErcTokenStandardEnum]; /** * The network of the DLT being interacted with. @@ -4448,11 +4480,11 @@ export const GetApproveAddressApiAxiosParamCreator = function (configuration?: C * Get approve address for the token transfer * @summary Get approve address * @param {TransactRequestSourceAssetNetworkId} networkId - * @param {'ERC20' | 'ERC721' | 'ERC1155' | 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE'} tokenType + * @param {'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE'} tokenType * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getApproveAddress: async (networkId: TransactRequestSourceAssetNetworkId, tokenType: 'ERC20' | 'ERC721' | 'ERC1155' | 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE', options: AxiosRequestConfig = {}): Promise => { + getApproveAddress: async (networkId: TransactRequestSourceAssetNetworkId, tokenType: 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE', options: AxiosRequestConfig = {}): Promise => { // verify required parameter 'networkId' is not null or undefined assertParamExists('getApproveAddress', 'networkId', networkId) // verify required parameter 'tokenType' is not null or undefined @@ -4502,11 +4534,11 @@ export const GetApproveAddressApiFp = function(configuration?: Configuration) { * Get approve address for the token transfer * @summary Get approve address * @param {TransactRequestSourceAssetNetworkId} networkId - * @param {'ERC20' | 'ERC721' | 'ERC1155' | 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE'} tokenType + * @param {'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE'} tokenType * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getApproveAddress(networkId: TransactRequestSourceAssetNetworkId, tokenType: 'ERC20' | 'ERC721' | 'ERC1155' | 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE', options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + async getApproveAddress(networkId: TransactRequestSourceAssetNetworkId, tokenType: 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE', options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { const localVarAxiosArgs = await localVarAxiosParamCreator.getApproveAddress(networkId, tokenType, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, @@ -4524,11 +4556,11 @@ export const GetApproveAddressApiFactory = function (configuration?: Configurati * Get approve address for the token transfer * @summary Get approve address * @param {TransactRequestSourceAssetNetworkId} networkId - * @param {'ERC20' | 'ERC721' | 'ERC1155' | 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE'} tokenType + * @param {'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE'} tokenType * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getApproveAddress(networkId: TransactRequestSourceAssetNetworkId, tokenType: 'ERC20' | 'ERC721' | 'ERC1155' | 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE', options?: any): AxiosPromise { + getApproveAddress(networkId: TransactRequestSourceAssetNetworkId, tokenType: 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE', options?: any): AxiosPromise { return localVarFp.getApproveAddress(networkId, tokenType, options).then((request) => request(axios, basePath)); }, }; @@ -4545,12 +4577,12 @@ export class GetApproveAddressApi extends BaseAPI { * Get approve address for the token transfer * @summary Get approve address * @param {TransactRequestSourceAssetNetworkId} networkId - * @param {'ERC20' | 'ERC721' | 'ERC1155' | 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE'} tokenType + * @param {'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE'} tokenType * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof GetApproveAddressApi */ - public getApproveAddress(networkId: TransactRequestSourceAssetNetworkId, tokenType: 'ERC20' | 'ERC721' | 'ERC1155' | 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE', options?: AxiosRequestConfig) { + public getApproveAddress(networkId: TransactRequestSourceAssetNetworkId, tokenType: 'NONSTANDARD_FUNGIBLE' | 'NONSTANDARD_NONFUNGIBLE', options?: AxiosRequestConfig) { return GetApproveAddressApiFp(this.configuration).getApproveAddress(networkId, tokenType, options).then((request) => request(this.axios, this.basePath)); } } diff --git a/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/proto/cacti/satp/v02/common/message_pb.ts b/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/proto/cacti/satp/v02/common/message_pb.ts index f3afcfb195..e285de3dd7 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/proto/cacti/satp/v02/common/message_pb.ts +++ b/packages/cactus-plugin-satp-hermes/src/main/typescript/generated/proto/cacti/satp/v02/common/message_pb.ts @@ -10,7 +10,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file cacti/satp/v02/common/message.proto. */ export const file_cacti_satp_v02_common_message: GenFile = /*@__PURE__*/ - fileDesc("CiNjYWN0aS9zYXRwL3YwMi9jb21tb24vbWVzc2FnZS5wcm90bxIVY2FjdGkuc2F0cC52MDIuY29tbW9uIvwECg5UcmFuc2ZlckNsYWltcxIYChBkaWdpdGFsX2Fzc2V0X2lkGAEgASgJEhgKEGFzc2V0X3Byb2ZpbGVfaWQYAiABKAkSJQoddmVyaWZpZWRfb3JpZ2luYXRvcl9lbnRpdHlfaWQYAyABKAkSJgoedmVyaWZpZWRfYmVuZWZpY2lhcnlfZW50aXR5X2lkGAQgASgJEhkKEW9yaWdpbmF0b3JfcHVia2V5GAUgASgJEhoKEmJlbmVmaWNpYXJ5X3B1YmtleRgGIAEoCRIhChlzZW5kZXJfZ2F0ZXdheV9uZXR3b3JrX2lkGAcgASgJEiQKHHJlY2lwaWVudF9nYXRld2F5X25ldHdvcmtfaWQYCCABKAkSHQoVY2xpZW50X2dhdGV3YXlfcHVia2V5GAkgASgJEh0KFXNlcnZlcl9nYXRld2F5X3B1YmtleRgKIAEoCRIfChdzZW5kZXJfZ2F0ZXdheV9vd25lcl9pZBgLIAEoCRIhChlyZWNlaXZlcl9nYXRld2F5X293bmVyX2lkGAwgASgJEhMKC21heF9yZXRyaWVzGA0gASgNEhMKC21heF90aW1lb3V0GA4gASgEEh4KFmFtb3VudF9mcm9tX29yaWdpbmF0b3IYDyABKAkSHQoVYW1vdW50X3RvX2JlbmVmaWNpYXJ5GBAgASgJEj4KEHByb2Nlc3NfcG9saWNpZXMYESADKAsyJC5jYWN0aS5zYXRwLnYwMi5jb21tb24uUHJpdmFjeVBvbGljeRI8Cg5tZXJnZV9wb2xpY2llcxgSIAMoCzIkLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5Qcml2YWN5UG9saWN5IhYKFFRyYW5zZmVyQ2xhaW1zRm9ybWF0IjAKDVByaXZhY3lQb2xpY3kSDAoEbmFtZRgBIAEoCRIRCglhcmd1bWVudHMYAiADKAkiDQoLUGVybWlzc2lvbnMiEQoPU3Vic2VxdWVudENhbGxzIrgCCgdIaXN0b3J5EjgKDHRyYW5zYWN0aW9ucxgBIAMoCzIiLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5UcmFuc2FjdGlvbhJAChFhY3Rpb25fY2F0ZWdvcmllcxgCIAMoCzIlLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5BY3Rpb25DYXRlZ29yeRIOCgZvcmlnaW4YAyABKAkSEwoLZGVzdGluYXRpb24YBCABKAkSDwoHYmFsYW5jZRgFIAEoCRItCgZzdGF0dXMYBiABKA4yHS5jYWN0aS5zYXRwLnYwMi5jb21tb24uU1RBVFVTEkwKFmFwcGxpY2F0aW9uX3BhcmFtZXRlcnMYByABKAsyLC5jYWN0aS5zYXRwLnYwMi5jb21tb24uQXBwbGljYXRpb25QYXJhbWV0ZXJzIhAKDkFjdGlvbkNhdGVnb3J5Ig0KC1RyYW5zYWN0aW9uIhcKFUFwcGxpY2F0aW9uUGFyYW1ldGVycyKEBQoTTmV0d29ya0NhcGFiaWxpdGllcxIhChlzZW5kZXJfZ2F0ZXdheV9uZXR3b3JrX2lkGAEgASgJEkYKE3NpZ25hdHVyZV9hbGdvcml0aG0YAiABKA4yKS5jYWN0aS5zYXRwLnYwMi5jb21tb24uU2lnbmF0dXJlQWxnb3JpdGhtElEKHnN1cHBvcnRlZF9zaWduYXR1cmVfYWxnb3JpdGhtcxgDIAMoDjIpLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5TaWduYXR1cmVBbGdvcml0aG0SMgoJbG9ja190eXBlGAQgASgOMh8uY2FjdGkuc2F0cC52MDIuY29tbW9uLkxvY2tUeXBlEhwKFGxvY2tfZXhwaXJhdGlvbl90aW1lGAUgASgEEjcKC3Blcm1pc3Npb25zGAYgASgLMiIuY2FjdGkuc2F0cC52MDIuY29tbW9uLlBlcm1pc3Npb25zEhUKDWRldmVsb3Blcl91cm4YByABKAkSRAoSY3JlZGVudGlhbF9wcm9maWxlGAggASgOMiguY2FjdGkuc2F0cC52MDIuY29tbW9uLkNyZWRlbnRpYWxQcm9maWxlEhsKE2FwcGxpY2F0aW9uX3Byb2ZpbGUYCSABKAkSFwoPbG9nZ2luZ19wcm9maWxlGAogASgJEh4KFmFjY2Vzc19jb250cm9sX3Byb2ZpbGUYCyABKAkSQAoQc3Vic2VxdWVudF9jYWxscxgMIAEoCzImLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5TdWJzZXF1ZW50Q2FsbHMSLwoHaGlzdG9yeRgNIAMoCzIeLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5IaXN0b3J5IrYECgpDb21tb25TYXRwEg8KB3ZlcnNpb24YASABKAkSOAoMbWVzc2FnZV90eXBlGAIgASgOMiIuY2FjdGkuc2F0cC52MDIuY29tbW9uLk1lc3NhZ2VUeXBlEhIKCnNlc3Npb25faWQYAyABKAkSGwoTdHJhbnNmZXJfY29udGV4dF9pZBgEIAEoCRIXCg9zZXF1ZW5jZV9udW1iZXIYBSABKAQSFAoMcmVzb3VyY2VfdXJsGAYgASgJEj4KD2FjdGlvbl9yZXNwb25zZRgIIAEoCzIlLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5BY3Rpb25SZXNwb25zZRIYChBjcmVkZW50aWFsX2Jsb2NrGAogASgJEj4KD3BheWxvYWRfcHJvZmlsZRgLIAEoCzIlLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5QYXlsb2FkUHJvZmlsZRIvCgdwYXlsb2FkGA0gASgLMh4uY2FjdGkuc2F0cC52MDIuY29tbW9uLlBheWxvYWQSFAoMcGF5bG9hZF9oYXNoGA4gASgJEh0KFWNsaWVudF9nYXRld2F5X3B1YmtleRgPIAEoCRIdChVzZXJ2ZXJfZ2F0ZXdheV9wdWJrZXkYECABKAkSHQoVaGFzaF9wcmV2aW91c19tZXNzYWdlGBEgASgJEg0KBWVycm9yGBIgASgIEjAKCmVycm9yX2NvZGUYEyABKA4yHC5jYWN0aS5zYXRwLnYwMi5jb21tb24uRXJyb3IiEAoOQWN0aW9uUmVzcG9uc2UiYgoOUGF5bG9hZFByb2ZpbGUSOgoNYXNzZXRfcHJvZmlsZRgBIAEoCzIjLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5Bc3NldFByb2ZpbGUSFAoMY2FwYWJpbGl0aWVzGAIgASgJIrsCCgxBc3NldFByb2ZpbGUSDgoGaXNzdWVyGAEgASgJEhIKCmFzc2V0X2NvZGUYAiABKAkSFwoPYXNzZXRfY29kZV90eXBlGAMgASgJEhUKDWlzc3VhbmNlX2RhdGUYBCABKAkSFwoPZXhwaXJhdGlvbl9kYXRlGAUgASgJEh4KFnZlcmlmaWNhdGlvbl9lbmRfcG9pbnQYBiABKAkSGQoRZGlnaXRhbF9zaWduYXR1cmUYByABKAkSFwoPcHJvc3BlY3R1c19saW5rGAggASgJEhwKFGtleV9pbmZvcm1hdGlvbl9saW5rGAkgAygJEhAKCGtleXdvcmRzGAogAygJEh0KFXRyYW5zZmVyX3Jlc3RyaWN0aW9ucxgLIAMoCRIbChNsZWRnZXJfcmVxdWlyZW1lbnRzGAwgAygJIgkKB1BheWxvYWQiTgoYV3JhcEFzc2VydGlvbkNsYWltRm9ybWF0EjIKBmZvcm1hdBgBIAEoDjIiLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5DbGFpbUZvcm1hdCJOChhMb2NrQXNzZXJ0aW9uQ2xhaW1Gb3JtYXQSMgoGZm9ybWF0GAEgASgOMiIuY2FjdGkuc2F0cC52MDIuY29tbW9uLkNsYWltRm9ybWF0Ik4KGE1pbnRBc3NlcnRpb25DbGFpbUZvcm1hdBIyCgZmb3JtYXQYASABKA4yIi5jYWN0aS5zYXRwLnYwMi5jb21tb24uQ2xhaW1Gb3JtYXQiTgoYQnVybkFzc2VydGlvbkNsYWltRm9ybWF0EjIKBmZvcm1hdBgBIAEoDjIiLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5DbGFpbUZvcm1hdCJUCh5Bc3NpZ25tZW50QXNzZXJ0aW9uQ2xhaW1Gb3JtYXQSMgoGZm9ybWF0GAEgASgOMiIuY2FjdGkuc2F0cC52MDIuY29tbW9uLkNsYWltRm9ybWF0IkcKEkxvY2tBc3NlcnRpb25DbGFpbRIPCgdyZWNlaXB0GAEgASgJEg0KBXByb29mGAIgASgJEhEKCXNpZ25hdHVyZRgDIAEoCSJHChJNaW50QXNzZXJ0aW9uQ2xhaW0SDwoHcmVjZWlwdBgBIAEoCRINCgVwcm9vZhgCIAEoCRIRCglzaWduYXR1cmUYAyABKAkiRwoSQnVybkFzc2VydGlvbkNsYWltEg8KB3JlY2VpcHQYASABKAkSDQoFcHJvb2YYAiABKAkSEQoJc2lnbmF0dXJlGAMgASgJIk0KGEFzc2lnbm1lbnRBc3NlcnRpb25DbGFpbRIPCgdyZWNlaXB0GAEgASgJEg0KBXByb29mGAIgASgJEhEKCXNpZ25hdHVyZRgDIAEoCSJHChJXcmFwQXNzZXJ0aW9uQ2xhaW0SDwoHcmVjZWlwdBgBIAEoCRINCgVwcm9vZhgCIAEoCRIRCglzaWduYXR1cmUYAyABKAkikQIKBUFzc2V0EhAKCHRva2VuX2lkGAEgASgJEhQKDHJlZmVyZW5jZV9pZBgCIAEoCRI0Cgp0b2tlbl90eXBlGAMgASgOMiAuY2FjdGkuc2F0cC52MDIuY29tbW9uLlRva2VuVHlwZRINCgVvd25lchgEIAEoCRIOCgZhbW91bnQYBSABKAQSFQoNY29udHJhY3RfbmFtZRgGIAEoCRIYChBjb250cmFjdF9hZGRyZXNzGAcgASgJEg4KBm1zcF9pZBgIIAEoCRIUCgxjaGFubmVsX25hbWUYCSABKAkSNAoKbmV0d29ya19pZBgKIAEoCzIgLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5OZXR3b3JrSWQiJQoJTmV0d29ya0lkEgoKAmlkGAEgASgJEgwKBHR5cGUYAiABKAkqQQoGU1RBVFVTEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEg0KCVNUQVRVU19PSxABEhAKDFNUQVRVU19FUlJPUhACKvQGCgtNZXNzYWdlVHlwZRIcChhNRVNTQUdFX1RZUEVfVU5TUEVDSUZJRUQQABIiCh5NRVNTQUdFX1RZUEVfUFJFX0lOSVRfUFJPUE9TQUwQARIhCh1NRVNTQUdFX1RZUEVfUFJFX0lOSVRfUkVDRUlQVBACEiAKHE1FU1NBR0VfVFlQRV9QUkVfSU5JVF9SRUpFQ1QQAxIuCipNRVNTQUdFX1RZUEVfUFJFX1RSQU5TRkVSX0NPTU1FTkNFX1JFUVVFU1QQBBIvCitNRVNTQUdFX1RZUEVfUFJFX1RSQU5TRkVSX0NPTU1FTkNFX1JFU1BPTlNFEAUSHgoaTUVTU0FHRV9UWVBFX0lOSVRfUFJPUE9TQUwQBhIdChlNRVNTQUdFX1RZUEVfSU5JVF9SRUNFSVBUEAcSHAoYTUVTU0FHRV9UWVBFX0lOSVRfUkVKRUNUEAgSKgomTUVTU0FHRV9UWVBFX1RSQU5TRkVSX0NPTU1FTkNFX1JFUVVFU1QQCRIrCidNRVNTQUdFX1RZUEVfVFJBTlNGRVJfQ09NTUVOQ0VfUkVTUE9OU0UQChIcChhNRVNTQUdFX1RZUEVfTE9DS19BU1NFUlQQCxIiCh5NRVNTQUdFX1RZUEVfQVNTRVJUSU9OX1JFQ0VJUFQQDBIfChtNRVNTQUdFX1RZUEVfQ09NTUlUX1BSRVBBUkUQDRIdChlNRVNTQUdFX1RZUEVfQ09NTUlUX1JFQURZEA4SHQoZTUVTU0FHRV9UWVBFX0NPTU1JVF9GSU5BTBAPEiEKHU1FU1NBR0VfVFlQRV9BQ0tfQ09NTUlUX0ZJTkFMEBASKQolTUVTU0FHRV9UWVBFX0NPTU1JVF9UUkFOU0ZFUl9DT01QTEVURRAREiQKIE1FU1NBR0VfVFlQRV9ORVdfU0VTU0lPTl9SRVFVRVNUEBISJQohTUVTU0FHRV9UWVBFX05FV19TRVNTSU9OX1JFU1BPTlNFEBMSKgomTUVTU0FHRV9UWVBFX1BSRV9TQVRQX1RSQU5TRkVSX1JFUVVFU1QQFBIrCidNRVNTQUdFX1RZUEVfUFJFX1NBVFBfVFJBTlNGRVJfUkVTUE9OU0UQFRIyCi5NRVNTQUdFX1RZUEVfQ09NTUlUX1RSQU5TRkVSX0NPTVBMRVRFX1JFU1BPTlNFEBYqjwEKEUNyZWRlbnRpYWxQcm9maWxlEiIKHkNSRURFTlRJQUxfUFJPRklMRV9VTlNQRUNJRklFRBAAEhsKF0NSRURFTlRJQUxfUFJPRklMRV9TQU1MEAESHAoYQ1JFREVOVElBTF9QUk9GSUxFX09BVVRIEAISGwoXQ1JFREVOVElBTF9QUk9GSUxFX1g1MDkQAyrzAQoSU2lnbmF0dXJlQWxnb3JpdGhtEiMKH1NJR05BVFVSRV9BTEdPUklUSE1fVU5TUEVDSUZJRUQQABIbChdTSUdOQVRVUkVfQUxHT1JJVEhNX1JTQRABEh0KGVNJR05BVFVSRV9BTEdPUklUSE1fRUNEU0EQAhIbChdTSUdOQVRVUkVfQUxHT1JJVEhNX0RTQRADEhwKGFNJR05BVFVSRV9BTEdPUklUSE1fSE1BQxAEEiIKHlNJR05BVFVSRV9BTEdPUklUSE1fUlNBU1NBX1BTUxAFEh0KGVNJR05BVFVSRV9BTEdPUklUSE1fRUREU0EQBiq8AQoITG9ja1R5cGUSGQoVTE9DS19UWVBFX1VOU1BFQ0lGSUVEEAASFAoQTE9DS19UWVBFX0ZBVUNFVBABEhYKEkxPQ0tfVFlQRV9USU1FTE9DSxACEhYKEkxPQ0tfVFlQRV9IQVNITE9DSxADEhoKFkxPQ0tfVFlQRV9IQVNITE9DS1RJTUUQBBIYChRMT0NLX1RZUEVfTVVMVElDTEFJTRAFEhkKFUxPQ0tfVFlQRV9ERVNUUk9ZQlVSThAGKo0KCgVFcnJvchIVChFFUlJPUl9VTlNQRUNJRklFRBAAEiAKHEVSUk9SX0JBRExZX0ZPUk1BVEVEX01FU1NBR0UQARIdChlFUlJPUl9JTkNPUlJFQ1RfUEFSQU1FVEVSEAISFgoSRVJST1JfQUNLX01JU01BVENIEAMSJgoiRVJST1JfQkFETFlfRk9STUFURURfTUVTU0FHRV9DTEFJTRAEEi4KKkVSUk9SX0JBRExZX0ZPUk1BVEVEX01FU1NBR0VfQkFEX1NJR05BVFVSRRAFEjUKMUVSUk9SX0JBRExZX0ZPUk1BVEVEX01FU1NBR0VfV1JPTkdfVFJBTlNBQ1RJT05fSUQQBhI1CjFFUlJPUl9CQURMWV9GT1JNQVRFRF9NRVNTQUdFX01JU01BVENIX0hBU0hfVkFMVUVTEAcSKQolRVJST1JfRVhQSVJFRF9TSUdOSU5HX0tFWV9DRVJUSUZJQ0FURRAIEhcKE0VSUk9SX0VYUElSRURfQ0xBSU0QCRIhCh1FUlJPUl9NRVNTQUdFX09VVF9PRl9TRVFVRU5DRRAKEhsKF0VSUk9SX1NFU1NJT05fTk9UX0ZPVU5EEAsSHgoaRVJST1JfU0VTU0lPTl9JRF9OT1RfRk9VTkQQDBIeChpFUlJPUl9QVUJMSUNfS0VZX05PVF9GT1VORBANEi0KKUVSUk9SX1NFTkRFUl9HQVRFV0FZX05FVFdPUktfSURfTk9UX0ZPVU5EEA4SJAogRVJST1JfQ09NTU9OX0JPRFlfQkFETFlfRk9STUFURUQQDxIcChhFUlJPUl9TRVNTSU9OX01JU1NfTUFUQ0gQEBIpCiVFUlJPUl9TRVNTSU9OX0RBVEFfTE9BREVEX0lOQ09SUkVDVExZEBESIAocRVJST1JfU0VTU0lPTl9EQVRBX05PVF9GT1VORBASEhsKF0VSUk9SX1NFU1NJT05fQ09NUExFVEVEEBMSGwoXRVJST1JfTUlTU0lOR19QQVJBTUVURVIQFBIkCiBFUlJPUl9TQVRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRBAVEicKI0VSUk9SX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEEBYSGwoXRVJST1JfRExUX05PVF9TVVBQT1JURUQQFxIZChVFUlJPUl9IQVNIX01JU1NfTUFUQ0gQGBIfChtFUlJPUl9DT05URVhUX0lEX01JU1NfTUFUQ0gQGRIYChRFUlJPUl9CUklER0VfUFJPQkxFTRAaEicKI0VSUk9SX0xPQ0tfQVNTRVJUSU9OX0JBRExZX0ZPUk1BVEVEEBsSLQopRVJST1JfTE9DS19BU1NFUlRJT05fQ0xBSU1fRk9STUFUX01JU1NJTkcQHBIpCiVFUlJPUl9MT0NLX0FTU0VSVElPTl9FWFBJUkFUSU9OX0VSUk9SEB0SJwojRVJST1JfQlVSTl9BU1NFUlRJT05fQkFETFlfRk9STUFURUQQHhInCiNFUlJPUl9NSU5UX0FTU0VSVElPTl9CQURMWV9GT1JNQVRFRBAfEi0KKUVSUk9SX0FTU0lHTk1FTlRfQVNTRVJUSU9OX0JBRExZX0ZPUk1BVEVEECASIQodRVJST1JfT05UT0xPR1lfQkFETFlfRk9STUFURUQQIRInCiNFUlJPUl9XUkFQX0FTU0VSVElPTl9CQURMWV9GT1JNQVRFRBAiKl4KC0NsYWltRm9ybWF0EhwKGENMQUlNX0ZPUk1BVF9VTlNQRUNJRklFRBAAEhgKFENMQUlNX0ZPUk1BVF9ERUZBVUxUEAESFwoTQ0xBSU1fRk9STUFUX0JVTkdFRRACKrkBCglUb2tlblR5cGUSGgoWVE9LRU5fVFlQRV9VTlNQRUNJRklFRBAAEhQKEFRPS0VOX1RZUEVfRVJDMjAQARIVChFUT0tFTl9UWVBFX0VSQzcyMRACEhYKElRPS0VOX1RZUEVfRVJDMTE1NRADEiMKH1RPS0VOX1RZUEVfTk9OU1RBTkRBUkRfRlVOR0lCTEUQBBImCiJUT0tFTl9UWVBFX05PTlNUQU5EQVJEX05PTkZVTkdJQkxFEAViBnByb3RvMw"); + fileDesc("CiNjYWN0aS9zYXRwL3YwMi9jb21tb24vbWVzc2FnZS5wcm90bxIVY2FjdGkuc2F0cC52MDIuY29tbW9uIvwECg5UcmFuc2ZlckNsYWltcxIYChBkaWdpdGFsX2Fzc2V0X2lkGAEgASgJEhgKEGFzc2V0X3Byb2ZpbGVfaWQYAiABKAkSJQoddmVyaWZpZWRfb3JpZ2luYXRvcl9lbnRpdHlfaWQYAyABKAkSJgoedmVyaWZpZWRfYmVuZWZpY2lhcnlfZW50aXR5X2lkGAQgASgJEhkKEW9yaWdpbmF0b3JfcHVia2V5GAUgASgJEhoKEmJlbmVmaWNpYXJ5X3B1YmtleRgGIAEoCRIhChlzZW5kZXJfZ2F0ZXdheV9uZXR3b3JrX2lkGAcgASgJEiQKHHJlY2lwaWVudF9nYXRld2F5X25ldHdvcmtfaWQYCCABKAkSHQoVY2xpZW50X2dhdGV3YXlfcHVia2V5GAkgASgJEh0KFXNlcnZlcl9nYXRld2F5X3B1YmtleRgKIAEoCRIfChdzZW5kZXJfZ2F0ZXdheV9vd25lcl9pZBgLIAEoCRIhChlyZWNlaXZlcl9nYXRld2F5X293bmVyX2lkGAwgASgJEhMKC21heF9yZXRyaWVzGA0gASgNEhMKC21heF90aW1lb3V0GA4gASgEEh4KFmFtb3VudF9mcm9tX29yaWdpbmF0b3IYDyABKAkSHQoVYW1vdW50X3RvX2JlbmVmaWNpYXJ5GBAgASgJEj4KEHByb2Nlc3NfcG9saWNpZXMYESADKAsyJC5jYWN0aS5zYXRwLnYwMi5jb21tb24uUHJpdmFjeVBvbGljeRI8Cg5tZXJnZV9wb2xpY2llcxgSIAMoCzIkLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5Qcml2YWN5UG9saWN5IhYKFFRyYW5zZmVyQ2xhaW1zRm9ybWF0IjAKDVByaXZhY3lQb2xpY3kSDAoEbmFtZRgBIAEoCRIRCglhcmd1bWVudHMYAiADKAkiDQoLUGVybWlzc2lvbnMiEQoPU3Vic2VxdWVudENhbGxzIrgCCgdIaXN0b3J5EjgKDHRyYW5zYWN0aW9ucxgBIAMoCzIiLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5UcmFuc2FjdGlvbhJAChFhY3Rpb25fY2F0ZWdvcmllcxgCIAMoCzIlLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5BY3Rpb25DYXRlZ29yeRIOCgZvcmlnaW4YAyABKAkSEwoLZGVzdGluYXRpb24YBCABKAkSDwoHYmFsYW5jZRgFIAEoCRItCgZzdGF0dXMYBiABKA4yHS5jYWN0aS5zYXRwLnYwMi5jb21tb24uU1RBVFVTEkwKFmFwcGxpY2F0aW9uX3BhcmFtZXRlcnMYByABKAsyLC5jYWN0aS5zYXRwLnYwMi5jb21tb24uQXBwbGljYXRpb25QYXJhbWV0ZXJzIhAKDkFjdGlvbkNhdGVnb3J5Ig0KC1RyYW5zYWN0aW9uIhcKFUFwcGxpY2F0aW9uUGFyYW1ldGVycyKEBQoTTmV0d29ya0NhcGFiaWxpdGllcxIhChlzZW5kZXJfZ2F0ZXdheV9uZXR3b3JrX2lkGAEgASgJEkYKE3NpZ25hdHVyZV9hbGdvcml0aG0YAiABKA4yKS5jYWN0aS5zYXRwLnYwMi5jb21tb24uU2lnbmF0dXJlQWxnb3JpdGhtElEKHnN1cHBvcnRlZF9zaWduYXR1cmVfYWxnb3JpdGhtcxgDIAMoDjIpLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5TaWduYXR1cmVBbGdvcml0aG0SMgoJbG9ja190eXBlGAQgASgOMh8uY2FjdGkuc2F0cC52MDIuY29tbW9uLkxvY2tUeXBlEhwKFGxvY2tfZXhwaXJhdGlvbl90aW1lGAUgASgEEjcKC3Blcm1pc3Npb25zGAYgASgLMiIuY2FjdGkuc2F0cC52MDIuY29tbW9uLlBlcm1pc3Npb25zEhUKDWRldmVsb3Blcl91cm4YByABKAkSRAoSY3JlZGVudGlhbF9wcm9maWxlGAggASgOMiguY2FjdGkuc2F0cC52MDIuY29tbW9uLkNyZWRlbnRpYWxQcm9maWxlEhsKE2FwcGxpY2F0aW9uX3Byb2ZpbGUYCSABKAkSFwoPbG9nZ2luZ19wcm9maWxlGAogASgJEh4KFmFjY2Vzc19jb250cm9sX3Byb2ZpbGUYCyABKAkSQAoQc3Vic2VxdWVudF9jYWxscxgMIAEoCzImLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5TdWJzZXF1ZW50Q2FsbHMSLwoHaGlzdG9yeRgNIAMoCzIeLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5IaXN0b3J5IrYECgpDb21tb25TYXRwEg8KB3ZlcnNpb24YASABKAkSOAoMbWVzc2FnZV90eXBlGAIgASgOMiIuY2FjdGkuc2F0cC52MDIuY29tbW9uLk1lc3NhZ2VUeXBlEhIKCnNlc3Npb25faWQYAyABKAkSGwoTdHJhbnNmZXJfY29udGV4dF9pZBgEIAEoCRIXCg9zZXF1ZW5jZV9udW1iZXIYBSABKAQSFAoMcmVzb3VyY2VfdXJsGAYgASgJEj4KD2FjdGlvbl9yZXNwb25zZRgIIAEoCzIlLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5BY3Rpb25SZXNwb25zZRIYChBjcmVkZW50aWFsX2Jsb2NrGAogASgJEj4KD3BheWxvYWRfcHJvZmlsZRgLIAEoCzIlLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5QYXlsb2FkUHJvZmlsZRIvCgdwYXlsb2FkGA0gASgLMh4uY2FjdGkuc2F0cC52MDIuY29tbW9uLlBheWxvYWQSFAoMcGF5bG9hZF9oYXNoGA4gASgJEh0KFWNsaWVudF9nYXRld2F5X3B1YmtleRgPIAEoCRIdChVzZXJ2ZXJfZ2F0ZXdheV9wdWJrZXkYECABKAkSHQoVaGFzaF9wcmV2aW91c19tZXNzYWdlGBEgASgJEg0KBWVycm9yGBIgASgIEjAKCmVycm9yX2NvZGUYEyABKA4yHC5jYWN0aS5zYXRwLnYwMi5jb21tb24uRXJyb3IiEAoOQWN0aW9uUmVzcG9uc2UiYgoOUGF5bG9hZFByb2ZpbGUSOgoNYXNzZXRfcHJvZmlsZRgBIAEoCzIjLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5Bc3NldFByb2ZpbGUSFAoMY2FwYWJpbGl0aWVzGAIgASgJIrsCCgxBc3NldFByb2ZpbGUSDgoGaXNzdWVyGAEgASgJEhIKCmFzc2V0X2NvZGUYAiABKAkSFwoPYXNzZXRfY29kZV90eXBlGAMgASgJEhUKDWlzc3VhbmNlX2RhdGUYBCABKAkSFwoPZXhwaXJhdGlvbl9kYXRlGAUgASgJEh4KFnZlcmlmaWNhdGlvbl9lbmRfcG9pbnQYBiABKAkSGQoRZGlnaXRhbF9zaWduYXR1cmUYByABKAkSFwoPcHJvc3BlY3R1c19saW5rGAggASgJEhwKFGtleV9pbmZvcm1hdGlvbl9saW5rGAkgAygJEhAKCGtleXdvcmRzGAogAygJEh0KFXRyYW5zZmVyX3Jlc3RyaWN0aW9ucxgLIAMoCRIbChNsZWRnZXJfcmVxdWlyZW1lbnRzGAwgAygJIgkKB1BheWxvYWQiTgoYV3JhcEFzc2VydGlvbkNsYWltRm9ybWF0EjIKBmZvcm1hdBgBIAEoDjIiLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5DbGFpbUZvcm1hdCJOChhMb2NrQXNzZXJ0aW9uQ2xhaW1Gb3JtYXQSMgoGZm9ybWF0GAEgASgOMiIuY2FjdGkuc2F0cC52MDIuY29tbW9uLkNsYWltRm9ybWF0Ik4KGE1pbnRBc3NlcnRpb25DbGFpbUZvcm1hdBIyCgZmb3JtYXQYASABKA4yIi5jYWN0aS5zYXRwLnYwMi5jb21tb24uQ2xhaW1Gb3JtYXQiTgoYQnVybkFzc2VydGlvbkNsYWltRm9ybWF0EjIKBmZvcm1hdBgBIAEoDjIiLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5DbGFpbUZvcm1hdCJUCh5Bc3NpZ25tZW50QXNzZXJ0aW9uQ2xhaW1Gb3JtYXQSMgoGZm9ybWF0GAEgASgOMiIuY2FjdGkuc2F0cC52MDIuY29tbW9uLkNsYWltRm9ybWF0IkcKEkxvY2tBc3NlcnRpb25DbGFpbRIPCgdyZWNlaXB0GAEgASgJEg0KBXByb29mGAIgASgJEhEKCXNpZ25hdHVyZRgDIAEoCSJHChJNaW50QXNzZXJ0aW9uQ2xhaW0SDwoHcmVjZWlwdBgBIAEoCRINCgVwcm9vZhgCIAEoCRIRCglzaWduYXR1cmUYAyABKAkiRwoSQnVybkFzc2VydGlvbkNsYWltEg8KB3JlY2VpcHQYASABKAkSDQoFcHJvb2YYAiABKAkSEQoJc2lnbmF0dXJlGAMgASgJIk0KGEFzc2lnbm1lbnRBc3NlcnRpb25DbGFpbRIPCgdyZWNlaXB0GAEgASgJEg0KBXByb29mGAIgASgJEhEKCXNpZ25hdHVyZRgDIAEoCSJHChJXcmFwQXNzZXJ0aW9uQ2xhaW0SDwoHcmVjZWlwdBgBIAEoCRINCgVwcm9vZhgCIAEoCRIRCglzaWduYXR1cmUYAyABKAki1gIKBUFzc2V0EhAKCHRva2VuX2lkGAEgASgJEhQKDHJlZmVyZW5jZV9pZBgCIAEoCRI0Cgp0b2tlbl90eXBlGAMgASgOMiAuY2FjdGkuc2F0cC52MDIuY29tbW9uLlRva2VuVHlwZRINCgVvd25lchgEIAEoCRIOCgZhbW91bnQYBSABKAQSFQoNY29udHJhY3RfbmFtZRgGIAEoCRIYChBjb250cmFjdF9hZGRyZXNzGAcgASgJEg4KBm1zcF9pZBgIIAEoCRIUCgxjaGFubmVsX25hbWUYCSABKAkSNAoKbmV0d29ya19pZBgKIAEoCzIgLmNhY3RpLnNhdHAudjAyLmNvbW1vbi5OZXR3b3JrSWQSQwoSZXJjX3Rva2VuX3N0YW5kYXJkGAsgASgOMicuY2FjdGkuc2F0cC52MDIuY29tbW9uLkVSQ1Rva2VuU3RhbmRhcmQiJQoJTmV0d29ya0lkEgoKAmlkGAEgASgJEgwKBHR5cGUYAiABKAkqQQoGU1RBVFVTEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEg0KCVNUQVRVU19PSxABEhAKDFNUQVRVU19FUlJPUhACKvQGCgtNZXNzYWdlVHlwZRIcChhNRVNTQUdFX1RZUEVfVU5TUEVDSUZJRUQQABIiCh5NRVNTQUdFX1RZUEVfUFJFX0lOSVRfUFJPUE9TQUwQARIhCh1NRVNTQUdFX1RZUEVfUFJFX0lOSVRfUkVDRUlQVBACEiAKHE1FU1NBR0VfVFlQRV9QUkVfSU5JVF9SRUpFQ1QQAxIuCipNRVNTQUdFX1RZUEVfUFJFX1RSQU5TRkVSX0NPTU1FTkNFX1JFUVVFU1QQBBIvCitNRVNTQUdFX1RZUEVfUFJFX1RSQU5TRkVSX0NPTU1FTkNFX1JFU1BPTlNFEAUSHgoaTUVTU0FHRV9UWVBFX0lOSVRfUFJPUE9TQUwQBhIdChlNRVNTQUdFX1RZUEVfSU5JVF9SRUNFSVBUEAcSHAoYTUVTU0FHRV9UWVBFX0lOSVRfUkVKRUNUEAgSKgomTUVTU0FHRV9UWVBFX1RSQU5TRkVSX0NPTU1FTkNFX1JFUVVFU1QQCRIrCidNRVNTQUdFX1RZUEVfVFJBTlNGRVJfQ09NTUVOQ0VfUkVTUE9OU0UQChIcChhNRVNTQUdFX1RZUEVfTE9DS19BU1NFUlQQCxIiCh5NRVNTQUdFX1RZUEVfQVNTRVJUSU9OX1JFQ0VJUFQQDBIfChtNRVNTQUdFX1RZUEVfQ09NTUlUX1BSRVBBUkUQDRIdChlNRVNTQUdFX1RZUEVfQ09NTUlUX1JFQURZEA4SHQoZTUVTU0FHRV9UWVBFX0NPTU1JVF9GSU5BTBAPEiEKHU1FU1NBR0VfVFlQRV9BQ0tfQ09NTUlUX0ZJTkFMEBASKQolTUVTU0FHRV9UWVBFX0NPTU1JVF9UUkFOU0ZFUl9DT01QTEVURRAREiQKIE1FU1NBR0VfVFlQRV9ORVdfU0VTU0lPTl9SRVFVRVNUEBISJQohTUVTU0FHRV9UWVBFX05FV19TRVNTSU9OX1JFU1BPTlNFEBMSKgomTUVTU0FHRV9UWVBFX1BSRV9TQVRQX1RSQU5TRkVSX1JFUVVFU1QQFBIrCidNRVNTQUdFX1RZUEVfUFJFX1NBVFBfVFJBTlNGRVJfUkVTUE9OU0UQFRIyCi5NRVNTQUdFX1RZUEVfQ09NTUlUX1RSQU5TRkVSX0NPTVBMRVRFX1JFU1BPTlNFEBYqjwEKEUNyZWRlbnRpYWxQcm9maWxlEiIKHkNSRURFTlRJQUxfUFJPRklMRV9VTlNQRUNJRklFRBAAEhsKF0NSRURFTlRJQUxfUFJPRklMRV9TQU1MEAESHAoYQ1JFREVOVElBTF9QUk9GSUxFX09BVVRIEAISGwoXQ1JFREVOVElBTF9QUk9GSUxFX1g1MDkQAyrzAQoSU2lnbmF0dXJlQWxnb3JpdGhtEiMKH1NJR05BVFVSRV9BTEdPUklUSE1fVU5TUEVDSUZJRUQQABIbChdTSUdOQVRVUkVfQUxHT1JJVEhNX1JTQRABEh0KGVNJR05BVFVSRV9BTEdPUklUSE1fRUNEU0EQAhIbChdTSUdOQVRVUkVfQUxHT1JJVEhNX0RTQRADEhwKGFNJR05BVFVSRV9BTEdPUklUSE1fSE1BQxAEEiIKHlNJR05BVFVSRV9BTEdPUklUSE1fUlNBU1NBX1BTUxAFEh0KGVNJR05BVFVSRV9BTEdPUklUSE1fRUREU0EQBiq8AQoITG9ja1R5cGUSGQoVTE9DS19UWVBFX1VOU1BFQ0lGSUVEEAASFAoQTE9DS19UWVBFX0ZBVUNFVBABEhYKEkxPQ0tfVFlQRV9USU1FTE9DSxACEhYKEkxPQ0tfVFlQRV9IQVNITE9DSxADEhoKFkxPQ0tfVFlQRV9IQVNITE9DS1RJTUUQBBIYChRMT0NLX1RZUEVfTVVMVElDTEFJTRAFEhkKFUxPQ0tfVFlQRV9ERVNUUk9ZQlVSThAGKo0KCgVFcnJvchIVChFFUlJPUl9VTlNQRUNJRklFRBAAEiAKHEVSUk9SX0JBRExZX0ZPUk1BVEVEX01FU1NBR0UQARIdChlFUlJPUl9JTkNPUlJFQ1RfUEFSQU1FVEVSEAISFgoSRVJST1JfQUNLX01JU01BVENIEAMSJgoiRVJST1JfQkFETFlfRk9STUFURURfTUVTU0FHRV9DTEFJTRAEEi4KKkVSUk9SX0JBRExZX0ZPUk1BVEVEX01FU1NBR0VfQkFEX1NJR05BVFVSRRAFEjUKMUVSUk9SX0JBRExZX0ZPUk1BVEVEX01FU1NBR0VfV1JPTkdfVFJBTlNBQ1RJT05fSUQQBhI1CjFFUlJPUl9CQURMWV9GT1JNQVRFRF9NRVNTQUdFX01JU01BVENIX0hBU0hfVkFMVUVTEAcSKQolRVJST1JfRVhQSVJFRF9TSUdOSU5HX0tFWV9DRVJUSUZJQ0FURRAIEhcKE0VSUk9SX0VYUElSRURfQ0xBSU0QCRIhCh1FUlJPUl9NRVNTQUdFX09VVF9PRl9TRVFVRU5DRRAKEhsKF0VSUk9SX1NFU1NJT05fTk9UX0ZPVU5EEAsSHgoaRVJST1JfU0VTU0lPTl9JRF9OT1RfRk9VTkQQDBIeChpFUlJPUl9QVUJMSUNfS0VZX05PVF9GT1VORBANEi0KKUVSUk9SX1NFTkRFUl9HQVRFV0FZX05FVFdPUktfSURfTk9UX0ZPVU5EEA4SJAogRVJST1JfQ09NTU9OX0JPRFlfQkFETFlfRk9STUFURUQQDxIcChhFUlJPUl9TRVNTSU9OX01JU1NfTUFUQ0gQEBIpCiVFUlJPUl9TRVNTSU9OX0RBVEFfTE9BREVEX0lOQ09SUkVDVExZEBESIAocRVJST1JfU0VTU0lPTl9EQVRBX05PVF9GT1VORBASEhsKF0VSUk9SX1NFU1NJT05fQ09NUExFVEVEEBMSGwoXRVJST1JfTUlTU0lOR19QQVJBTUVURVIQFBIkCiBFUlJPUl9TQVRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRBAVEicKI0VSUk9SX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEEBYSGwoXRVJST1JfRExUX05PVF9TVVBQT1JURUQQFxIZChVFUlJPUl9IQVNIX01JU1NfTUFUQ0gQGBIfChtFUlJPUl9DT05URVhUX0lEX01JU1NfTUFUQ0gQGRIYChRFUlJPUl9CUklER0VfUFJPQkxFTRAaEicKI0VSUk9SX0xPQ0tfQVNTRVJUSU9OX0JBRExZX0ZPUk1BVEVEEBsSLQopRVJST1JfTE9DS19BU1NFUlRJT05fQ0xBSU1fRk9STUFUX01JU1NJTkcQHBIpCiVFUlJPUl9MT0NLX0FTU0VSVElPTl9FWFBJUkFUSU9OX0VSUk9SEB0SJwojRVJST1JfQlVSTl9BU1NFUlRJT05fQkFETFlfRk9STUFURUQQHhInCiNFUlJPUl9NSU5UX0FTU0VSVElPTl9CQURMWV9GT1JNQVRFRBAfEi0KKUVSUk9SX0FTU0lHTk1FTlRfQVNTRVJUSU9OX0JBRExZX0ZPUk1BVEVEECASIQodRVJST1JfT05UT0xPR1lfQkFETFlfRk9STUFURUQQIRInCiNFUlJPUl9XUkFQX0FTU0VSVElPTl9CQURMWV9GT1JNQVRFRBAiKl4KC0NsYWltRm9ybWF0EhwKGENMQUlNX0ZPUk1BVF9VTlNQRUNJRklFRBAAEhgKFENMQUlNX0ZPUk1BVF9ERUZBVUxUEAESFwoTQ0xBSU1fRk9STUFUX0JVTkdFRRACKnQKCVRva2VuVHlwZRIaChZUT0tFTl9UWVBFX1VOU1BFQ0lGSUVEEAASIwofVE9LRU5fVFlQRV9OT05TVEFOREFSRF9GVU5HSUJMRRABEiYKIlRPS0VOX1RZUEVfTk9OU1RBTkRBUkRfTk9ORlVOR0lCTEUQAiqTAQoQRVJDVG9rZW5TdGFuZGFyZBIiCh5FUkNfVE9LRU5fU1RBTkRBUkRfVU5TUEVDSUZJRUQQABIcChhFUkNfVE9LRU5fU1RBTkRBUkRfRVJDMjAQARIdChlFUkNfVE9LRU5fU1RBTkRBUkRfRVJDNzIxEAISHgoaRVJDX1RPS0VOX1NUQU5EQVJEX0VSQzExNTUQA2IGcHJvdG8z"); /** * @generated from message cacti.satp.v02.common.TransferClaims @@ -827,6 +827,11 @@ export type Asset = Message<"cacti.satp.v02.common.Asset"> & { * @generated from field: cacti.satp.v02.common.NetworkId network_id = 10; */ networkId?: NetworkId; + + /** + * @generated from field: cacti.satp.v02.common.ERCTokenStandard erc_token_standard = 11; + */ + ercTokenStandard: ERCTokenStandard; }; /** @@ -1355,34 +1360,50 @@ export enum TokenType { UNSPECIFIED = 0, /** - * @generated from enum value: TOKEN_TYPE_ERC20 = 1; + * @generated from enum value: TOKEN_TYPE_NONSTANDARD_FUNGIBLE = 1; */ - ERC20 = 1, + NONSTANDARD_FUNGIBLE = 1, + + /** + * @generated from enum value: TOKEN_TYPE_NONSTANDARD_NONFUNGIBLE = 2; + */ + NONSTANDARD_NONFUNGIBLE = 2, +} + +/** + * Describes the enum cacti.satp.v02.common.TokenType. + */ +export const TokenTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_cacti_satp_v02_common_message, 7); +/** + * @generated from enum cacti.satp.v02.common.ERCTokenStandard + */ +export enum ERCTokenStandard { /** - * @generated from enum value: TOKEN_TYPE_ERC721 = 2; + * @generated from enum value: ERC_TOKEN_STANDARD_UNSPECIFIED = 0; */ - ERC721 = 2, + ERC_TOKEN_STANDARD_UNSPECIFIED = 0, /** - * @generated from enum value: TOKEN_TYPE_ERC1155 = 3; + * @generated from enum value: ERC_TOKEN_STANDARD_ERC20 = 1; */ - ERC1155 = 3, + ERC_TOKEN_STANDARD_ERC20 = 1, /** - * @generated from enum value: TOKEN_TYPE_NONSTANDARD_FUNGIBLE = 4; + * @generated from enum value: ERC_TOKEN_STANDARD_ERC721 = 2; */ - NONSTANDARD_FUNGIBLE = 4, + ERC_TOKEN_STANDARD_ERC721 = 2, /** - * @generated from enum value: TOKEN_TYPE_NONSTANDARD_NONFUNGIBLE = 5; + * @generated from enum value: ERC_TOKEN_STANDARD_ERC1155 = 3; */ - NONSTANDARD_NONFUNGIBLE = 5, + ERC_TOKEN_STANDARD_ERC1155 = 3, } /** - * Describes the enum cacti.satp.v02.common.TokenType. + * Describes the enum cacti.satp.v02.common.ERCTokenStandard. */ -export const TokenTypeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_cacti_satp_v02_common_message, 7); +export const ERCTokenStandardSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_cacti_satp_v02_common_message, 8); diff --git a/packages/cactus-plugin-satp-hermes/src/main/yml/bol/openapi-blo-bundled.yml b/packages/cactus-plugin-satp-hermes/src/main/yml/bol/openapi-blo-bundled.yml index 3a2df0f624..589e6e88cf 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/yml/bol/openapi-blo-bundled.yml +++ b/packages/cactus-plugin-satp-hermes/src/main/yml/bol/openapi-blo-bundled.yml @@ -78,6 +78,7 @@ paths: - networkId - tokenType - referenceId + - ercTokenStandard properties: id: type: string @@ -117,14 +118,19 @@ paths: tokenType: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. referenceId: type: string + ercTokenStandard: + type: string + enum: + - UNSPECIFIED + - ERC20 + - ERC721 + - ERC1155 + description: The ERC token standard. receiverAsset: description: An asset type: object @@ -135,6 +141,7 @@ paths: - networkId - tokenType - referenceId + - ercTokenStandard properties: id: type: string @@ -174,14 +181,19 @@ paths: tokenType: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. referenceId: type: string + ercTokenStandard: + type: string + enum: + - UNSPECIFIED + - ERC20 + - ERC721 + - ERC1155 + description: The ERC token standard. responses: '200': description: Transaction successfully queued @@ -2009,9 +2021,6 @@ paths: schema: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. @@ -3403,6 +3412,7 @@ components: - networkId - tokenType - referenceId + - ercTokenStandard properties: id: type: string @@ -3442,14 +3452,19 @@ components: tokenType: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. referenceId: type: string + ercTokenStandard: + type: string + enum: + - UNSPECIFIED + - ERC20 + - ERC721 + - ERC1155 + description: The ERC token standard. TransactRequest: description: 'Request schema for initiating a transaction. Includes details such as the transaction context, mode (data or transfer), payload, and information about the source and destination DLT networks.' type: object @@ -3475,6 +3490,7 @@ components: - networkId - tokenType - referenceId + - ercTokenStandard properties: id: type: string @@ -3514,14 +3530,19 @@ components: tokenType: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. referenceId: type: string + ercTokenStandard: + type: string + enum: + - UNSPECIFIED + - ERC20 + - ERC721 + - ERC1155 + description: The ERC token standard. receiverAsset: description: An asset type: object @@ -3532,6 +3553,7 @@ components: - networkId - tokenType - referenceId + - ercTokenStandard properties: id: type: string @@ -3571,14 +3593,19 @@ components: tokenType: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. referenceId: type: string + ercTokenStandard: + type: string + enum: + - UNSPECIFIED + - ERC20 + - ERC721 + - ERC1155 + description: The ERC token standard. TransactResponse: description: Response schema for a transaction request. Includes the session ID and the current status of the transaction. type: object @@ -6264,9 +6291,6 @@ components: tokenType: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. @@ -7556,12 +7580,17 @@ components: TokenType: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. + ERCTokenStandard: + type: string + enum: + - UNSPECIFIED + - ERC20 + - ERC721 + - ERC1155 + description: The ERC token standard. DraftVersions: type: object description: The draft versions supported by the gateway. diff --git a/packages/cactus-plugin-satp-hermes/src/main/yml/bol/schemas.yml b/packages/cactus-plugin-satp-hermes/src/main/yml/bol/schemas.yml index bf8015af30..8693d5e249 100644 --- a/packages/cactus-plugin-satp-hermes/src/main/yml/bol/schemas.yml +++ b/packages/cactus-plugin-satp-hermes/src/main/yml/bol/schemas.yml @@ -217,6 +217,7 @@ Asset: - networkId - tokenType - referenceId + - ercTokenStandard properties: id: type: string @@ -238,7 +239,9 @@ Asset: $ref: ./schemas.yml#/TokenType referenceId: type: string - + ercTokenStandard: + $ref: ./schemas.yml#/ERCTokenStandard + TransactRequest: description: "Request schema for initiating a transaction. Includes details such as the transaction context, mode (data or transfer), payload, and information about the source and destination DLT networks." type: object @@ -1199,12 +1202,17 @@ NetworkId: TokenType: type: string enum: - - ERC20 - - ERC721 - - ERC1155 - NONSTANDARD_FUNGIBLE - NONSTANDARD_NONFUNGIBLE description: The type of token. +ERCTokenStandard: + type: string + enum: + - UNSPECIFIED + - ERC20 + - ERC721 + - ERC1155 + description: The ERC token standard. DraftVersions: type: object description: The draft versions supported by the gateway. diff --git a/packages/cactus-plugin-satp-hermes/src/test/ontologies/ontology-satp-erc721-interact-besu.json b/packages/cactus-plugin-satp-hermes/src/test/ontologies/ontology-satp-erc721-interact-besu.json new file mode 100644 index 0000000000..c8a5279c7a --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/ontologies/ontology-satp-erc721-interact-besu.json @@ -0,0 +1,47 @@ +{ + "name": "SATP-ERC721", + "id": "SATP-ERC721-BESU", + "type": "BESU_2X", + "ontology": { + "lock": [{ + "functionSignature": "lock(address,address,uint256)", + "variables": ["owner", "bridge", "unique_descriptor"], + "available": true + } + ], + "unlock": [ + { + "functionSignature": "unlock(address,address,uint256)", + "variables": ["bridge", "owner", "unique_descriptor"], + "available": true + } + ], + "mint": [{ + "functionSignature": "mint(address,uint256)", + "variables": ["bridge", "unique_descriptor"], + "available": true + } + ], + "burn": [{ + "functionSignature": "burn(uint256)", + "variables": ["unique_descriptor"], + "available": true + } + ], + "assign": [{ + "functionSignature": "assign(address,uint256)", + "variables": ["receiver", "unique_descriptor"], + "available": true + } + ], + "checkPermission": [{ + "functionSignature": "hasBridgeRole(address)", + "variables": ["bridge"], + "available": true + } + ] + }, + "bytecode": "", + "signature": "", + "hash": "" +} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/ontologies/ontology-satp-erc721-interact-ethereum.json b/packages/cactus-plugin-satp-hermes/src/test/ontologies/ontology-satp-erc721-interact-ethereum.json new file mode 100644 index 0000000000..f366de7446 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/ontologies/ontology-satp-erc721-interact-ethereum.json @@ -0,0 +1,48 @@ +{ + "name": "SATP-ERC721", + "id": "SATP-ERC721-ETHEREUM", + "type": "ETHEREUM", + "contract": "", + "ontology": { + "lock": [{ + "functionSignature": "lock(address,address,uint256)", + "variables": ["owner", "bridge", "unique_descriptor"], + "available": true + } + ], + "unlock": [ + { + "functionSignature": "unlock(address,address,uint256)", + "variables": ["bridge", "owner", "unique_descriptor"], + "available": true + } + ], + "mint": [{ + "functionSignature": "mint(address,uint256)", + "variables": ["bridge", "unique_descriptor"], + "available": true + } + ], + "burn": [{ + "functionSignature": "burn(uint256)", + "variables": ["unique_descriptor"], + "available": true + } + ], + "assign": [{ + "functionSignature": "assign(address,uint256)", + "variables": ["receiver", "unique_descriptor"], + "available": true + } + ], + "checkPermission": [{ + "functionSignature": "hasBridgeRole(address)", + "variables": ["bridge"], + "available": true + } + ] + }, + "bytecode": "", + "signature": "", + "hash": "" +} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/contracts/SATPNFTokenContract.sol b/packages/cactus-plugin-satp-hermes/src/test/solidity/contracts/SATPNFTokenContract.sol new file mode 100644 index 0000000000..88421e630e --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/contracts/SATPNFTokenContract.sol @@ -0,0 +1,162 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/access/AccessControl.sol"; +import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; +import "@openzeppelin/contracts/utils/Strings.sol"; +import "./ITraceableContract.sol"; +import { console } from "forge-std/console.sol"; + +error noPermission(address adr); + +/** + * @title SATPTokenContract + * The SATPTokenContract is an example of a custom ERC721 token contract. + * It uses safe versions of critical ERC721 functions, which require the address performing calls to tokens to have some form of pre approval. + */ +contract SATPNFTokenContract is AccessControl, ERC721 { + + bytes32 public constant BRIDGE_ROLE = keccak256("BRIDGE_ROLE"); + bytes32 public constant OWNER_ROLE = keccak256("OWNER_ROLE"); + + constructor(address _owner) ERC721("SATPNFToken", "SATPNFT") { + _grantRole(OWNER_ROLE, _owner); + _grantRole(BRIDGE_ROLE, _owner); + } + + /** + * @notice Mints a new token given a new uniqueDescriptor. This function expects the tokenId to not have been minted before. + * @param account The address to mint the token to. + * @param uniqueDescriptor The uniqueDescriptor of the token to mint. + * @return success A boolean indicating the success of the minting operation. + */ + function mint(address account, uint256 uniqueDescriptor) external onlyRole(BRIDGE_ROLE) returns (bool success) { + _safeMint(account, uniqueDescriptor); + return true; + } + + /** + * @notice Burns a token given its uniqueDescriptor. + * @param uniqueDescriptor The unique identifier of the token to burn. + * @return success A boolean indicating the success of the burn operation. + */ + function burn(uint256 uniqueDescriptor) external onlyRole(BRIDGE_ROLE) returns (bool success) { + address caller = msg.sender; + address approvedCaller = getApproved(uniqueDescriptor); + require(caller == approvedCaller || caller == ownerOf(uniqueDescriptor), "Caller is not approved to operate on this token"); + _burn(uniqueDescriptor); + return true; + } + + /** + * @notice Grants the bridge role to a specified account over this contract. + * @param account The address to grant the bridge role to. + * @return success A boolean indicating the success of the operation. + */ + function grantBridgeRole(address account) external onlyRole(OWNER_ROLE) returns (bool success) { + _grantRole(BRIDGE_ROLE, account); + return true; + } + + /** + * @notice Transfers a token from an address to another address. In this case, it is used when locking a token. + * @param from The origin address of the token. + * @param to The address to transfer the token to. + * @param uniqueDescriptor The unique identifier of the token to lock/transfer. + * @return success A boolean indicating if the operation was successful. + */ + function lock(address from, address to, uint256 uniqueDescriptor) external returns (bool success) { + safeTransferFrom(from, to, uniqueDescriptor); + return true; + } + + /** + * @notice Assigns a token to a new owner. This is used when transferring ownership of a token. + * @param to The address to assign the token to. + * @param uniqueDescriptor The unique identifier of the token to assign. + * @return success A boolean indicating if the operation was successful. + */ + function assign(address to, uint256 uniqueDescriptor) external returns (bool success) { + safeTransferFrom(ownerOf(uniqueDescriptor), to, uniqueDescriptor); + return true; + } + + /** + * @notice Transfers a token from one address to another. This is used when releasing a locked token. + * @param from The address from which the token is being transferred. + * @param to The address to which the token is being transferred. + * @param uniqueDescriptor The unique identifier of the token to unlock. + * @return success A boolean indicating if the operation was successful. + */ + function unlock(address from, address to, uint256 uniqueDescriptor) external returns (bool success) { + safeTransferFrom(from, to, uniqueDescriptor); + return true; + } + + /** + * @notice REQUIRED by OpenZeppelin: Supports the use of safe functions for ERC721 tokens. + * @return success A boolean indicating if the account has the bridge role. + */ + function onERC721Received( + address, + address, + uint256, + bytes calldata +) external pure returns (bytes4) { + return this.onERC721Received.selector; +} + /** + * @notice Checks if the given account has permission to perform an action on a token. + * @param account The account to check for permission. + * @param uniqueDescriptor The unique identifier of the token. + * @return success A boolean indicating if the account has permission. + */ + function hasPermission(address account, uint256 uniqueDescriptor) external view onlyRole(BRIDGE_ROLE) returns (bool success) { + address tokenOwner = _ownerOf(uniqueDescriptor); + _checkAuthorized(tokenOwner, account, uniqueDescriptor); + return true; + } + + /** + * @notice For test usage, allows the bridge to check if a certain address is the one currently approved to deal with an asset. + * @param account The account to check for approval. + * @param uniqueDescriptor The unique identifier of the token. + * @return success A boolean indicating if the account is approved. + */ + function isApproved(address account, uint256 uniqueDescriptor) external view onlyRole(BRIDGE_ROLE) returns (bool success) { + address approvedCaller = getApproved(uniqueDescriptor); + return (account == approvedCaller || account == ownerOf(uniqueDescriptor)); + } + + /** + * @notice REQUIRED by OpenZeppelin: Returns true if this contract implements a certain interface represented by an interfaceId. + * @return success A boolean indicating if the interface is supported. + */ + function supportsInterface(bytes4) public pure override(AccessControl, ERC721) returns (bool success) { + return false; + } + + /** + * @notice Checks if the given account has the given role. + * @param account The account to check. + * @return success A boolean that indicates if the account has the role. + */ + function hasBridgeRole(address account) external view returns (bool success) { + if(hasRole(BRIDGE_ROLE, account)){ + return true; + } + revert noPermission(account); + } + + /** + * @notice Obtains the balance of the given account. + * @param account The account to check the balance of. + * @return balance The balance of the account. + */ + function obtainBalance(address account) external view returns (uint256 balance) { + uint256 b = balanceOf(account); + return b; + } +} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/CommonBase.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/CommonBase.json index b0f2abed92..8c50e38461 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/CommonBase.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/CommonBase.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Base.sol\":\"CommonBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Base.sol":"CommonBase"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Base.sol\":\"CommonBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Base.sol":"CommonBase"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/ScriptBase.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/ScriptBase.json index 920c157d96..164d19f558 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/ScriptBase.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/ScriptBase.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Base.sol\":\"ScriptBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Base.sol":"ScriptBase"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Base.sol\":\"ScriptBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Base.sol":"ScriptBase"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/TestBase.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/TestBase.json index d4637325c3..b0b0c357e2 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/TestBase.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Base.sol/TestBase.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Base.sol\":\"TestBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Base.sol":"TestBase"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Base.sol\":\"TestBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Base.sol":"TestBase"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Context.sol/Context.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Context.sol/Context.json index ae6608a67e..8d07765cf5 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Context.sol/Context.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Context.sol/Context.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/Context.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":6} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/Context.sol":"Context"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":10} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ERC165.sol/ERC165.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ERC165.sol/ERC165.json index 2637084b20..50a414af98 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ERC165.sol/ERC165.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ERC165.sol/ERC165.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":"ERC165"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"id":8} \ No newline at end of file +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":"ERC165"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"id":12} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ERC721.sol/ERC721.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ERC721.sol/ERC721.json new file mode 100644 index 0000000000..fa31138a66 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ERC721.sol/ERC721.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol":"ERC721"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":6} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC165.sol/IERC165.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC165.sol/IERC165.json index 7a66605f2f..fb6f68cdce 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC165.sol/IERC165.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC165.sol/IERC165.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"id":9} \ No newline at end of file +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":"IERC165"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"id":13} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721.sol/IERC721.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721.sol/IERC721.json new file mode 100644 index 0000000000..4fdf2420d9 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721.sol/IERC721.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":"IERC721"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"id":7} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721Metadata.sol/IERC721Metadata.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721Metadata.sol/IERC721Metadata.json new file mode 100644 index 0000000000..00674694ef --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721Metadata.sol/IERC721Metadata.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":"IERC721Metadata"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"id":9} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721Receiver.sol/IERC721Receiver.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721Receiver.sol/IERC721Receiver.json new file mode 100644 index 0000000000..093730c558 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IERC721Receiver.sol/IERC721Receiver.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":"IERC721Receiver"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"}},"version":1},"id":8} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IMulticall3.sol/IMulticall3.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IMulticall3.sol/IMulticall3.json index 63499acc51..1ffc4e944e 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IMulticall3.sol/IMulticall3.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/IMulticall3.sol/IMulticall3.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file +{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":33} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ITraceableContract.sol/ITraceableContract.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ITraceableContract.sol/ITraceableContract.json index 24ba4e0da4..0c52e1ea0d 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ITraceableContract.sol/ITraceableContract.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/ITraceableContract.sol/ITraceableContract.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAllAssetsIDs()":"5137b8a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/contracts/ITraceableContract.sol\":\"ITraceableContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"src/test/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/contracts/ITraceableContract.sol":"ITraceableContract"},"evmVersion":"paris","libraries":{}},"sources":{"src/test/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"}},"version":1},"id":12} \ No newline at end of file +{"abi":[{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAllAssetsIDs()":"5137b8a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/contracts/ITraceableContract.sol\":\"ITraceableContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"src/test/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/contracts/ITraceableContract.sol":"ITraceableContract"},"evmVersion":"paris","libraries":{}},"sources":{"src/test/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"}},"version":1},"id":17} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Math.sol/Math.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Math.sol/Math.json index 61414a0e70..f5c65d9c94 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Math.sol/Math.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Math.sol/Math.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb763282d69b607efc1d4ccc7b0f0e833a7c738cbdcf1d4a2b7e0b1f2c9fa3e764736f6c63430008140033","sourceMap":"203:14914:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:10;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb763282d69b607efc1d4ccc7b0f0e833a7c738cbdcf1d4a2b7e0b1f2c9fa3e764736f6c63430008140033","sourceMap":"203:14914:10:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/math/Math.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"}},"version":1},"id":10} \ No newline at end of file +{"abi":[{"type":"error","name":"MathOverflowedMulDiv","inputs":[]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb763282d69b607efc1d4ccc7b0f0e833a7c738cbdcf1d4a2b7e0b1f2c9fa3e764736f6c63430008140033","sourceMap":"203:14914:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:14;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb763282d69b607efc1d4ccc7b0f0e833a7c738cbdcf1d4a2b7e0b1f2c9fa3e764736f6c63430008140033","sourceMap":"203:14914:14:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"MathOverflowedMulDiv"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/math/Math.sol":"Math"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/OracleTest.sol/OracleTest.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/OracleTest.sol/OracleTest.json index 4270fae984..7e352e702a 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/OracleTest.sol/OracleTest.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/OracleTest.sol/OracleTest.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testEmitUpdatedDataEvent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRevertIfDataNotFound","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWriteAndReadData","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"UpdatedData","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"data","type":"string","indexed":false,"internalType":"string"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b506120188061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610171578063e120168a14610189578063e20c9f7114610191578063fa7626d41461019957600080fd5b8063916a17c614610159578063a039461914610161578063b5508aa91461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f5780635946fe431461012757806366d9a9a01461012f57806385226c811461014457600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101a6565b005b61010161021d565b60405161010e9190610fa5565b60405180910390f35b61010161027f565b6101016102df565b6100f761033f565b610137610483565b60405161010e9190610ff2565b61014c610587565b60405161010e919061110d565b610137610657565b6100f7610752565b61014c610965565b610179610a35565b604051901515815260200161010e565b6100f7610b60565b610101610cd2565b6000546101799060ff1681565b601c805473ffffffffffffffffffffffffffffffffffffffff1916301790556040516101d190610f98565b604051809103906000f0801580156101ed573d6000803e3d6000fd5b50601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801561027557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610257575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b604080518082018252600d81527f48656c6c6f2c20776f726c6421000000000000000000000000000000000000006020820152601b54915163238326b560e11b815290916001600160a01b0316906347064d6a906103a190849060040161116f565b600060405180830381600087803b1580156103bb57600080fd5b505af11580156103cf573d6000803e3d6000fd5b505050506000816040516020016103e69190611189565b60408051808303601f190181529082905280516020820120601b546354f6127f60e01b845260048401829052919350916000916001600160a01b0316906354f6127f90602401600060405180830381865afa158015610449573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047191908101906111bb565b905061047d8185610d32565b50505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561057e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561056657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105135790505b505050505081525050815260200190600101906104a7565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561057e5783829060005260206000200180546105ca90611268565b80601f01602080910402602001604051908101604052809291908181526020018280546105f690611268565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050815260200190600101906105ab565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561057e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561073a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116106e75790505b5050505050815250508152602001906001019061067b565b604080518082018252600f81527f48656c6c6f2c20776f726c642031210000000000000000000000000000000000602082015290517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506000601b60009054906101000a90046001600160a01b03166001600160a01b031663d087d2886040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089091906112a2565b90507f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf826040516020016108c49190611189565b60405160208183030381529060405280519060200120838360016108e891906112bb565b6040516108f7939291906112e2565b60405180910390a1601b5460405163238326b560e11b81526001600160a01b03909116906347064d6a9061092f90859060040161116f565b600060405180830381600087803b15801561094957600080fd5b505af115801561095d573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561057e5783829060005260206000200180546109a890611268565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490611268565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b505050505081526020019060010190610989565b60008054610100900460ff1615610a555750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b5b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610ae3917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161130b565b60408051601f1981840301815290829052610afd91611189565b6000604051808303816000865af19150503d8060008114610b3a576040519150601f19603f3d011682016040523d82523d6000602084013e610b3f565b606091505b5091505080806020019051810190610b579190611353565b9150505b919050565b604080517f496e76616c6964204964000000000000000000000000000000000000000000006020808301919091528251600a818403018152602a8301808552815192820192909220606a84018552600e83527f44617461206e6f7420666f756e64000000000000000000000000000000000000604a9094019390935292517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391610c2a919060040161116f565b600060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b5050601b546040516354f6127f60e01b8152600481018590526001600160a01b0390911692506354f6127f9150602401600060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ccd91908101906111bb565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b80604051602001610d439190611189565b6040516020818303038152906040528051906020012082604051602001610d6a9190611189565b6040516020818303038152906040528051906020012014610e88577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610e0a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051610e419190611375565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610e7891906113bc565b60405180910390a1610e88610e8c565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f875760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610f26929160200161130b565b60408051601f1981840301815290829052610f4091611189565b6000604051808303816000865af19150503d8060008114610f7d576040519150601f19603f3d011682016040523d82523d6000602084013e610f82565b606091505b505050505b6000805461ff001916610100179055565b610bdf8061140483390190565b6020808252825182820181905260009190848201906040850190845b81811015610fe65783516001600160a01b031683529284019291840191600101610fc1565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156110ae57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156110995783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611057565b50978a0197955050509187019160010161101a565b50919998505050505050505050565b60005b838110156110d85781810151838201526020016110c0565b50506000910152565b600081518084526110f98160208601602086016110bd565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561116257603f198886030184526111508583516110e1565b94509285019290850190600101611134565b5092979650505050505050565b60208152600061118260208301846110e1565b9392505050565b6000825161119b8184602087016110bd565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156111cd57600080fd5b815167ffffffffffffffff808211156111e557600080fd5b818401915084601f8301126111f957600080fd5b81518181111561120b5761120b6111a5565b604051601f8201601f19908116603f01168101908382118183101715611233576112336111a5565b8160405282815287602084870101111561124c57600080fd5b61125d8360208301602088016110bd565b979650505050505050565b600181811c9082168061127c57607f821691505b60208210810361129c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156112b457600080fd5b5051919050565b808201808211156112dc57634e487b7160e01b600052601160045260246000fd5b92915050565b8381526060602082015260006112fb60608301856110e1565b9050826040830152949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516113458160048501602087016110bd565b919091016004019392505050565b60006020828403121561136557600080fd5b8151801515811461118257600080fd5b60408152600a60408201527f2020202020204c65667400000000000000000000000000000000000000000000606082015260806020820152600061118260808301846110e1565b60408152600a60408201527f2020202020526967687400000000000000000000000000000000000000000000606082015260806020820152600061118260808301846110e156fe6080604052600060025534801561001557600080fd5b50610021600033610052565b5061004c7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef133610052565b506100fe565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166100f4576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100ac3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100f8565b5060005b92915050565b610ad28061010d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806347064d6a11610081578063a217fddf1161005b578063a217fddf146101e0578063d087d288146101e8578063d547741f146101f057600080fd5b806347064d6a1461017657806354f6127f1461018957806391d14854146101a957600080fd5b8063248a9ca3116100b2578063248a9ca31461012b5780632f2ff15d1461014e57806336568abe1461016357600080fd5b806301ffc9a7146100ce57806307e2cea5146100f6575b600080fd5b6100e16100dc366004610720565b610203565b60405190151581526020015b60405180910390f35b61011d7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020016100ed565b61011d610139366004610769565b60009081526020819052604090206001015490565b61016161015c366004610782565b61029c565b005b610161610171366004610782565b6102c7565b6101616101843660046107d4565b610318565b61019c610197366004610769565b6103ef565b6040516100ed91906108d5565b6100e16101b7366004610782565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011d600081565b60025461011d565b6101616101fe366004610782565b61050f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061029657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546102b781610534565b6102c18383610541565b50505050565b6001600160a01b0381163314610309576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031382826105eb565b505050565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161034281610534565b60008260405160200161035591906108e8565b60408051601f1981840301815282825280516020918201208383018352808452838201878152600082815260019384905293909320845181559251909450908201906103a1908261098c565b509050506103ad61066e565b7f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf81846002546040516103e293929190610a4c565b60405180910390a1505050565b6000818152600160205260408120546060910361046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f44617461206e6f7420666f756e6400000000000000000000000000000000000060448201526064015b60405180910390fd5b600082815260016020819052604090912001805461048a90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546104b690610904565b80156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b50505050509050919050565b60008281526020819052604090206001015461052a81610534565b6102c183836105eb565b61053e81336106b0565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166105e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561059b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610296565b506000610296565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156105e3576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610296565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161069881610534565b600280549060006106a883610a75565b919050555050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661071c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610464565b5050565b60006020828403121561073257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461076257600080fd5b9392505050565b60006020828403121561077b57600080fd5b5035919050565b6000806040838503121561079557600080fd5b8235915060208301356001600160a01b03811681146107b357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156107e657600080fd5b813567ffffffffffffffff808211156107fe57600080fd5b818401915084601f83011261081257600080fd5b813581811115610824576108246107be565b604051601f8201601f19908116603f0116810190838211818310171561084c5761084c6107be565b8160405282815287602084870101111561086557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156108a0578181015183820152602001610888565b50506000910152565b600081518084526108c1816020860160208601610885565b601f01601f19169290920160200192915050565b60208152600061076260208301846108a9565b600082516108fa818460208701610885565b9190910192915050565b600181811c9082168061091857607f821691505b60208210810361093857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561031357600081815260208120601f850160051c810160208610156109655750805b601f850160051c820191505b8181101561098457828155600101610971565b505050505050565b815167ffffffffffffffff8111156109a6576109a66107be565b6109ba816109b48454610904565b8461093e565b602080601f8311600181146109ef57600084156109d75750858301515b600019600386901b1c1916600185901b178555610984565b600085815260208120601f198616915b82811015610a1e578886015182559484019460019091019084016109ff565b5085821015610a3c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b838152606060208201526000610a6560608301856108a9565b9050826040830152949350505050565b600060018201610a9557634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201e4465e4522c62caa54368e3ea6d4d76bb0922c24e6d32d041ff75cdf7b06a8864736f6c63430008140033a2646970667358221220d9a4925dca911291e174bd6aeeb4e5f52e8f3d89b4d008544e959eaab275d08864736f6c63430008140033","sourceMap":"175:1208:34:-:0;;;1572:26:13;;;1594:4;-1:-1:-1;;1572:26:13;;;;;;;;3161:44:16;;;;;;;;;;;175:1208:34;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610171578063e120168a14610189578063e20c9f7114610191578063fa7626d41461019957600080fd5b8063916a17c614610159578063a039461914610161578063b5508aa91461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f5780635946fe431461012757806366d9a9a01461012f57806385226c811461014457600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101a6565b005b61010161021d565b60405161010e9190610fa5565b60405180910390f35b61010161027f565b6101016102df565b6100f761033f565b610137610483565b60405161010e9190610ff2565b61014c610587565b60405161010e919061110d565b610137610657565b6100f7610752565b61014c610965565b610179610a35565b604051901515815260200161010e565b6100f7610b60565b610101610cd2565b6000546101799060ff1681565b601c805473ffffffffffffffffffffffffffffffffffffffff1916301790556040516101d190610f98565b604051809103906000f0801580156101ed573d6000803e3d6000fd5b50601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801561027557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610257575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b604080518082018252600d81527f48656c6c6f2c20776f726c6421000000000000000000000000000000000000006020820152601b54915163238326b560e11b815290916001600160a01b0316906347064d6a906103a190849060040161116f565b600060405180830381600087803b1580156103bb57600080fd5b505af11580156103cf573d6000803e3d6000fd5b505050506000816040516020016103e69190611189565b60408051808303601f190181529082905280516020820120601b546354f6127f60e01b845260048401829052919350916000916001600160a01b0316906354f6127f90602401600060405180830381865afa158015610449573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047191908101906111bb565b905061047d8185610d32565b50505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561057e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561056657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105135790505b505050505081525050815260200190600101906104a7565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561057e5783829060005260206000200180546105ca90611268565b80601f01602080910402602001604051908101604052809291908181526020018280546105f690611268565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050815260200190600101906105ab565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561057e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561073a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116106e75790505b5050505050815250508152602001906001019061067b565b604080518082018252600f81527f48656c6c6f2c20776f726c642031210000000000000000000000000000000000602082015290517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506000601b60009054906101000a90046001600160a01b03166001600160a01b031663d087d2886040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089091906112a2565b90507f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf826040516020016108c49190611189565b60405160208183030381529060405280519060200120838360016108e891906112bb565b6040516108f7939291906112e2565b60405180910390a1601b5460405163238326b560e11b81526001600160a01b03909116906347064d6a9061092f90859060040161116f565b600060405180830381600087803b15801561094957600080fd5b505af115801561095d573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561057e5783829060005260206000200180546109a890611268565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490611268565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b505050505081526020019060010190610989565b60008054610100900460ff1615610a555750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b5b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610ae3917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161130b565b60408051601f1981840301815290829052610afd91611189565b6000604051808303816000865af19150503d8060008114610b3a576040519150601f19603f3d011682016040523d82523d6000602084013e610b3f565b606091505b5091505080806020019051810190610b579190611353565b9150505b919050565b604080517f496e76616c6964204964000000000000000000000000000000000000000000006020808301919091528251600a818403018152602a8301808552815192820192909220606a84018552600e83527f44617461206e6f7420666f756e64000000000000000000000000000000000000604a9094019390935292517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391610c2a919060040161116f565b600060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b5050601b546040516354f6127f60e01b8152600481018590526001600160a01b0390911692506354f6127f9150602401600060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ccd91908101906111bb565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b80604051602001610d439190611189565b6040516020818303038152906040528051906020012082604051602001610d6a9190611189565b6040516020818303038152906040528051906020012014610e88577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610e0a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051610e419190611375565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610e7891906113bc565b60405180910390a1610e88610e8c565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f875760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610f26929160200161130b565b60408051601f1981840301815290829052610f4091611189565b6000604051808303816000865af19150503d8060008114610f7d576040519150601f19603f3d011682016040523d82523d6000602084013e610f82565b606091505b505050505b6000805461ff001916610100179055565b610bdf8061140483390190565b6020808252825182820181905260009190848201906040850190845b81811015610fe65783516001600160a01b031683529284019291840191600101610fc1565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156110ae57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156110995783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611057565b50978a0197955050509187019160010161101a565b50919998505050505050505050565b60005b838110156110d85781810151838201526020016110c0565b50506000910152565b600081518084526110f98160208601602086016110bd565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561116257603f198886030184526111508583516110e1565b94509285019290850190600101611134565b5092979650505050505050565b60208152600061118260208301846110e1565b9392505050565b6000825161119b8184602087016110bd565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156111cd57600080fd5b815167ffffffffffffffff808211156111e557600080fd5b818401915084601f8301126111f957600080fd5b81518181111561120b5761120b6111a5565b604051601f8201601f19908116603f01168101908382118183101715611233576112336111a5565b8160405282815287602084870101111561124c57600080fd5b61125d8360208301602088016110bd565b979650505050505050565b600181811c9082168061127c57607f821691505b60208210810361129c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156112b457600080fd5b5051919050565b808201808211156112dc57634e487b7160e01b600052601160045260246000fd5b92915050565b8381526060602082015260006112fb60608301856110e1565b9050826040830152949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516113458160048501602087016110bd565b919091016004019392505050565b60006020828403121561136557600080fd5b8151801515811461118257600080fd5b60408152600a60408201527f2020202020204c65667400000000000000000000000000000000000000000000606082015260806020820152600061118260808301846110e1565b60408152600a60408201527f2020202020526967687400000000000000000000000000000000000000000000606082015260806020820152600061118260808301846110e156fe6080604052600060025534801561001557600080fd5b50610021600033610052565b5061004c7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef133610052565b506100fe565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166100f4576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100ac3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100f8565b5060005b92915050565b610ad28061010d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806347064d6a11610081578063a217fddf1161005b578063a217fddf146101e0578063d087d288146101e8578063d547741f146101f057600080fd5b806347064d6a1461017657806354f6127f1461018957806391d14854146101a957600080fd5b8063248a9ca3116100b2578063248a9ca31461012b5780632f2ff15d1461014e57806336568abe1461016357600080fd5b806301ffc9a7146100ce57806307e2cea5146100f6575b600080fd5b6100e16100dc366004610720565b610203565b60405190151581526020015b60405180910390f35b61011d7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020016100ed565b61011d610139366004610769565b60009081526020819052604090206001015490565b61016161015c366004610782565b61029c565b005b610161610171366004610782565b6102c7565b6101616101843660046107d4565b610318565b61019c610197366004610769565b6103ef565b6040516100ed91906108d5565b6100e16101b7366004610782565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011d600081565b60025461011d565b6101616101fe366004610782565b61050f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061029657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546102b781610534565b6102c18383610541565b50505050565b6001600160a01b0381163314610309576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031382826105eb565b505050565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161034281610534565b60008260405160200161035591906108e8565b60408051601f1981840301815282825280516020918201208383018352808452838201878152600082815260019384905293909320845181559251909450908201906103a1908261098c565b509050506103ad61066e565b7f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf81846002546040516103e293929190610a4c565b60405180910390a1505050565b6000818152600160205260408120546060910361046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f44617461206e6f7420666f756e6400000000000000000000000000000000000060448201526064015b60405180910390fd5b600082815260016020819052604090912001805461048a90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546104b690610904565b80156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b50505050509050919050565b60008281526020819052604090206001015461052a81610534565b6102c183836105eb565b61053e81336106b0565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166105e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561059b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610296565b506000610296565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156105e3576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610296565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161069881610534565b600280549060006106a883610a75565b919050555050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661071c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610464565b5050565b60006020828403121561073257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461076257600080fd5b9392505050565b60006020828403121561077b57600080fd5b5035919050565b6000806040838503121561079557600080fd5b8235915060208301356001600160a01b03811681146107b357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156107e657600080fd5b813567ffffffffffffffff808211156107fe57600080fd5b818401915084601f83011261081257600080fd5b813581811115610824576108246107be565b604051601f8201601f19908116603f0116810190838211818310171561084c5761084c6107be565b8160405282815287602084870101111561086557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156108a0578181015183820152602001610888565b50506000910152565b600081518084526108c1816020860160208601610885565b601f01601f19169290920160200192915050565b60208152600061076260208301846108a9565b600082516108fa818460208701610885565b9190910192915050565b600181811c9082168061091857607f821691505b60208210810361093857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561031357600081815260208120601f850160051c810160208610156109655750805b601f850160051c820191505b8181101561098457828155600101610971565b505050505050565b815167ffffffffffffffff8111156109a6576109a66107be565b6109ba816109b48454610904565b8461093e565b602080601f8311600181146109ef57600084156109d75750858301515b600019600386901b1c1916600185901b178555610984565b600085815260208120601f198616915b82811015610a1e578886015182559484019460019091019084016109ff565b5085821015610a3c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b838152606060208201526000610a6560608301856108a9565b9050826040830152949350505050565b600060018201610a9557634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201e4465e4522c62caa54368e3ea6d4d76bb0922c24e6d32d041ff75cdf7b06a8864736f6c63430008140033a2646970667358221220d9a4925dca911291e174bd6aeeb4e5f52e8f3d89b4d008544e959eaab275d08864736f6c63430008140033","sourceMap":"175:1208:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:105;;;:::i;:::-;;2161:134:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;435:343:34:-;;;:::i;2447:178:19:-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;784:320:34:-;;;:::i;1866:141:19:-;;;:::i;1819:584:13:-;;;:::i;:::-;;;3845:14:37;;3838:22;3820:41;;3808:2;3793:18;1819:584:13;3680:187:37;1110:271:34;;;:::i;2013:142:19:-;;;:::i;1572:26:13:-;;;;;;;;;324:105:34;358:5;:21;;-1:-1:-1;;358:21:34;374:4;358:21;;;398:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;389:6:34;:33;;-1:-1:-1;;389:33:34;-1:-1:-1;;;;;389:33:34;;;;;;;;;;324:105::o;2161:134:19:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:19;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:19;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:19;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;435:343:34:-;484:39;;;;;;;;;;;;;;;;533:6;;:23;;-1:-1:-1;;;533:23:34;;484:39;;-1:-1:-1;;;;;533:6:34;;:14;;:23;;484:39;;533:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;567:24;611:7;594:25;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;594:25:34;;;;;;;652:22;;594:25;652:22;;;708:6;;-1:-1:-1;;;708:28:34;;;;;4537:25:37;;;594::34;;-1:-1:-1;652:22:34;629:20;;-1:-1:-1;;;;;708:6:34;;:14;;4510:18:37;;708:28:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;708:28:34;;;;;;;;;;;;:::i;:::-;685:51;;746:25;755:6;763:7;746:8;:25::i;:::-;474:304;;;;435:343::o;2447:178:19:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:320:34;837:41;;;;;;;;;;;;;;;;888:37;;;;;902:4;888:37;;;6313:41:37;;;6370:18;;;6363:50;;;6429:18;;;6422:50;;;6488:18;;;6481:50;888:13:34;;;;6285:19:37;;888:37:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;935:19;957:6;;;;;;;;;-1:-1:-1;;;;;957:6:34;-1:-1:-1;;;;;957:15:34;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;935:39;;989:75;1028:7;1011:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;1001:36;;;;;;1039:7;1048:11;1062:1;1048:15;;;;:::i;:::-;989:75;;;;;;;;:::i;:::-;;;;;;;;1074:6;;:23;;-1:-1:-1;;;1074:23:34;;-1:-1:-1;;;;;1074:6:34;;;;:14;;:23;;1089:7;;1074:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:277;;784:320::o;1866:141:19:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:13;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:13;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;7556:74:37;;;-1:-1:-1;;;7646:18:37;;;7639:34;2196:43:13;;;;;;;;;7529:18:37;;;2196:43:13;;;-1:-1:-1;;1671:64:13;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:13;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:13:o;1110:271:34:-;1190:30;;;8907:12:37;1190:30:34;;;;8895:25:37;;;;1190:30:34;;;;;;;;;8936:12:37;;;1190:30:34;;;1258:22;;;;;;;;;1307:23;;;;;;;;;;;;;;;;;1291:40;;;;;:15;;;;:40;;8936:12:37;1291:40:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1341:6:34;;:33;;-1:-1:-1;;;1341:33:34;;;;;4537:25:37;;;-1:-1:-1;;;;;1341:6:34;;;;-1:-1:-1;1341:14:34;;-1:-1:-1;4510:18:37;;1341:33:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1341:33:34;;;;;;;;;;;;:::i;:::-;;1153:228;;1110:271::o;2013:142:19:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:19;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;17902:344:13:-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;9384:2:37;9366:21;;;9423:2;9403:18;;;9396:30;9462:34;9457:2;9442:18;;9435:62;9533:6;9528:2;9513:18;;9506:34;9572:3;9557:19;;9182:400;18062:43:13;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;:::-;17902:344;;:::o;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;10703:74:37;;;-1:-1:-1;;;10793:18:37;;;10786:34;;;;2712:4:13;10836:18:37;;;10829:34;2489:11:13;;1671:64;2586:43;;10676:18:37;;2652:67:13;;;-1:-1:-1;;2652:67:13;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:13;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:13;2820:7;:14;;-1:-1:-1;;2820:14:13;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;14:681:37:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:37;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:37;;14:681;-1:-1:-1;;;;;;14:681:37:o;700:1636::-;902:4;931:2;971;960:9;956:18;1001:2;990:9;983:21;1024:6;1059;1053:13;1090:6;1082;1075:22;1116:2;1106:12;;1149:2;1138:9;1134:18;1127:25;;1211:2;1201:6;1198:1;1194:14;1183:9;1179:30;1175:39;1249:2;1241:6;1237:15;1270:1;1291;1301:1006;1317:6;1312:3;1309:15;1301:1006;;;1386:22;;;-1:-1:-1;;1382:36:37;1370:49;;1442:13;;1529:9;;-1:-1:-1;;;;;1525:58:37;1510:74;;1623:11;;1617:18;1655:15;;;1648:27;;;1736:19;;1482:15;;;1768:24;;;1858:21;;;;1903:1;;1826:2;1814:15;;;1917:282;1933:8;1928:3;1925:17;1917:282;;;2014:15;;2031:66;2010:88;1996:103;;2168:17;;;;1961:1;1952:11;;;;;2125:14;;;;1917:282;;;-1:-1:-1;2285:12:37;;;;2222:5;-1:-1:-1;;;2250:15:37;;;;1343:1;1334:11;1301:1006;;;-1:-1:-1;2324:6:37;;700:1636;-1:-1:-1;;;;;;;;;700:1636:37:o;2341:250::-;2426:1;2436:113;2450:6;2447:1;2444:13;2436:113;;;2526:11;;;2520:18;2507:11;;;2500:39;2472:2;2465:10;2436:113;;;-1:-1:-1;;2583:1:37;2565:16;;2558:27;2341:250::o;2596:271::-;2638:3;2676:5;2670:12;2703:6;2698:3;2691:19;2719:76;2788:6;2781:4;2776:3;2772:14;2765:4;2758:5;2754:16;2719:76;:::i;:::-;2849:2;2828:15;-1:-1:-1;;2824:29:37;2815:39;;;;2856:4;2811:50;;2596:271;-1:-1:-1;;2596:271:37:o;2872:803::-;3034:4;3063:2;3103;3092:9;3088:18;3133:2;3122:9;3115:21;3156:6;3191;3185:13;3222:6;3214;3207:22;3260:2;3249:9;3245:18;3238:25;;3322:2;3312:6;3309:1;3305:14;3294:9;3290:30;3286:39;3272:53;;3360:2;3352:6;3348:15;3381:1;3391:255;3405:6;3402:1;3399:13;3391:255;;;3498:2;3494:7;3482:9;3474:6;3470:22;3466:36;3461:3;3454:49;3526:40;3559:6;3550;3544:13;3526:40;:::i;:::-;3516:50;-1:-1:-1;3624:12:37;;;;3589:15;;;;3427:1;3420:9;3391:255;;;-1:-1:-1;3663:6:37;;2872:803;-1:-1:-1;;;;;;;2872:803:37:o;3872:220::-;4021:2;4010:9;4003:21;3984:4;4041:45;4082:2;4071:9;4067:18;4059:6;4041:45;:::i;:::-;4033:53;3872:220;-1:-1:-1;;;3872:220:37:o;4097:289::-;4228:3;4266:6;4260:13;4282:66;4341:6;4336:3;4329:4;4321:6;4317:17;4282:66;:::i;:::-;4364:16;;;;;4097:289;-1:-1:-1;;4097:289:37:o;4573:184::-;-1:-1:-1;;;4622:1:37;4615:88;4722:4;4719:1;4712:15;4746:4;4743:1;4736:15;4762:897;4842:6;4895:2;4883:9;4874:7;4870:23;4866:32;4863:52;;;4911:1;4908;4901:12;4863:52;4944:9;4938:16;4973:18;5014:2;5006:6;5003:14;5000:34;;;5030:1;5027;5020:12;5000:34;5068:6;5057:9;5053:22;5043:32;;5113:7;5106:4;5102:2;5098:13;5094:27;5084:55;;5135:1;5132;5125:12;5084:55;5164:2;5158:9;5186:2;5182;5179:10;5176:36;;;5192:18;;:::i;:::-;5267:2;5261:9;5235:2;5321:13;;-1:-1:-1;;5317:22:37;;;5341:2;5313:31;5309:40;5297:53;;;5365:18;;;5385:22;;;5362:46;5359:72;;;5411:18;;:::i;:::-;5451:10;5447:2;5440:22;5486:2;5478:6;5471:18;5526:7;5521:2;5516;5512;5508:11;5504:20;5501:33;5498:53;;;5547:1;5544;5537:12;5498:53;5560:68;5625:2;5620;5612:6;5608:15;5603:2;5599;5595:11;5560:68;:::i;:::-;5647:6;4762:897;-1:-1:-1;;;;;;;4762:897:37:o;5664:437::-;5743:1;5739:12;;;;5786;;;5807:61;;5861:4;5853:6;5849:17;5839:27;;5807:61;5914:2;5906:6;5903:14;5883:18;5880:38;5877:218;;-1:-1:-1;;;5948:1:37;5941:88;6052:4;6049:1;6042:15;6080:4;6077:1;6070:15;5877:218;;5664:437;;;:::o;6542:184::-;6612:6;6665:2;6653:9;6644:7;6640:23;6636:32;6633:52;;;6681:1;6678;6671:12;6633:52;-1:-1:-1;6704:16:37;;6542:184;-1:-1:-1;6542:184:37:o;6731:279::-;6796:9;;;6817:10;;;6814:190;;;-1:-1:-1;;;6857:1:37;6850:88;6961:4;6958:1;6951:15;6989:4;6986:1;6979:15;6814:190;6731:279;;;;:::o;7015:362::-;7220:6;7209:9;7202:25;7263:2;7258;7247:9;7243:18;7236:30;7183:4;7283:45;7324:2;7313:9;7309:18;7301:6;7283:45;:::i;:::-;7275:53;;7364:6;7359:2;7348:9;7344:18;7337:34;7015:362;;;;;;:::o;7684:430::-;7881:66;7873:6;7869:79;7864:3;7857:92;7839:3;7978:6;7972:13;7994:74;8061:6;8057:1;8052:3;8048:11;8041:4;8033:6;8029:17;7994:74;:::i;:::-;8088:16;;;;8106:1;8084:24;;7684:430;-1:-1:-1;;;7684:430:37:o;8411:277::-;8478:6;8531:2;8519:9;8510:7;8506:23;8502:32;8499:52;;;8547:1;8544;8537:12;8499:52;8579:9;8573:16;8632:5;8625:13;8618:21;8611:5;8608:32;8598:60;;8654:1;8651;8644:12;9587:452;9837:2;9826:9;9819:21;9876:2;9871;9860:9;9856:18;9849:30;9915:12;9910:2;9899:9;9895:18;9888:40;9966:3;9959:4;9948:9;9944:20;9937:33;9800:4;9987:46;10028:3;10017:9;10013:19;10005:6;9987:46;:::i;10044:452::-;10294:2;10283:9;10276:21;10333:2;10328;10317:9;10313:18;10306:30;10372:12;10367:2;10356:9;10352:18;10345:40;10423:3;10416:4;10405:9;10401:20;10394:33;10257:4;10444:46;10485:3;10474:9;10470:19;10462:6;10444:46;:::i","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testEmitUpdatedDataEvent()":"a0394619","testRevertIfDataNotFound()":"e120168a","testWriteAndReadData()":"5946fe43"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"UpdatedData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEmitUpdatedDataEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRevertIfDataNotFound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWriteAndReadData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/tests/OracleTest.sol\":\"OracleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"src/test/solidity/contracts/OracleTestContract.sol\":{\"keccak256\":\"0xe3647f91f50bbda738ddad4744ee73238f6cffadabef4d6567d7044c330b7ee3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://247a6e56ee102fdefce5e17a54315e348e927dd1f6f9a23348993a52b42585b4\",\"dweb:/ipfs/QmYnrT6j8ueNfVPcohxG1vVrDtCJH4rvqrYShN7jzgvwNn\"]},\"src/test/solidity/tests/OracleTest.sol\":{\"keccak256\":\"0x62fd11cfa155fe3e06754d45c415afa42b5878fc5a4e9326e15b1654c812d244\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2810d52df76726748002b031cc0588b05b97fa0c6c54122b94b9bbf5c1f59259\",\"dweb:/ipfs/QmNSganZhZ4H3z3vEeoghdPHGGhURR6c7jJaxuJ6QPqUB1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"string","name":"data","type":"string","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"UpdatedData","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEmitUpdatedDataEvent"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRevertIfDataNotFound"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWriteAndReadData"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/tests/OracleTest.sol":"OracleTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"src/test/solidity/contracts/OracleTestContract.sol":{"keccak256":"0xe3647f91f50bbda738ddad4744ee73238f6cffadabef4d6567d7044c330b7ee3","urls":["bzz-raw://247a6e56ee102fdefce5e17a54315e348e927dd1f6f9a23348993a52b42585b4","dweb:/ipfs/QmYnrT6j8ueNfVPcohxG1vVrDtCJH4rvqrYShN7jzgvwNn"],"license":"GPL-3.0"},"src/test/solidity/tests/OracleTest.sol":{"keccak256":"0x62fd11cfa155fe3e06754d45c415afa42b5878fc5a4e9326e15b1654c812d244","urls":["bzz-raw://2810d52df76726748002b031cc0588b05b97fa0c6c54122b94b9bbf5c1f59259","dweb:/ipfs/QmNSganZhZ4H3z3vEeoghdPHGGhURR6c7jJaxuJ6QPqUB1"],"license":"UNLICENSED"}},"version":1},"id":34} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testEmitUpdatedDataEvent","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRevertIfDataNotFound","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWriteAndReadData","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"UpdatedData","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"data","type":"string","indexed":false,"internalType":"string"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b506120188061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610171578063e120168a14610189578063e20c9f7114610191578063fa7626d41461019957600080fd5b8063916a17c614610159578063a039461914610161578063b5508aa91461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f5780635946fe431461012757806366d9a9a01461012f57806385226c811461014457600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101a6565b005b61010161021d565b60405161010e9190610fa5565b60405180910390f35b61010161027f565b6101016102df565b6100f761033f565b610137610483565b60405161010e9190610ff2565b61014c610587565b60405161010e919061110d565b610137610657565b6100f7610752565b61014c610965565b610179610a35565b604051901515815260200161010e565b6100f7610b60565b610101610cd2565b6000546101799060ff1681565b601c805473ffffffffffffffffffffffffffffffffffffffff1916301790556040516101d190610f98565b604051809103906000f0801580156101ed573d6000803e3d6000fd5b50601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801561027557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610257575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b604080518082018252600d81527f48656c6c6f2c20776f726c6421000000000000000000000000000000000000006020820152601b54915163238326b560e11b815290916001600160a01b0316906347064d6a906103a190849060040161116f565b600060405180830381600087803b1580156103bb57600080fd5b505af11580156103cf573d6000803e3d6000fd5b505050506000816040516020016103e69190611189565b60408051808303601f190181529082905280516020820120601b546354f6127f60e01b845260048401829052919350916000916001600160a01b0316906354f6127f90602401600060405180830381865afa158015610449573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047191908101906111bb565b905061047d8185610d32565b50505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561057e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561056657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105135790505b505050505081525050815260200190600101906104a7565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561057e5783829060005260206000200180546105ca90611268565b80601f01602080910402602001604051908101604052809291908181526020018280546105f690611268565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050815260200190600101906105ab565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561057e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561073a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116106e75790505b5050505050815250508152602001906001019061067b565b604080518082018252600f81527f48656c6c6f2c20776f726c642031210000000000000000000000000000000000602082015290517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506000601b60009054906101000a90046001600160a01b03166001600160a01b031663d087d2886040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089091906112a2565b90507f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf826040516020016108c49190611189565b60405160208183030381529060405280519060200120838360016108e891906112bb565b6040516108f7939291906112e2565b60405180910390a1601b5460405163238326b560e11b81526001600160a01b03909116906347064d6a9061092f90859060040161116f565b600060405180830381600087803b15801561094957600080fd5b505af115801561095d573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561057e5783829060005260206000200180546109a890611268565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490611268565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b505050505081526020019060010190610989565b60008054610100900460ff1615610a555750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b5b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610ae3917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161130b565b60408051601f1981840301815290829052610afd91611189565b6000604051808303816000865af19150503d8060008114610b3a576040519150601f19603f3d011682016040523d82523d6000602084013e610b3f565b606091505b5091505080806020019051810190610b579190611353565b9150505b919050565b604080517f496e76616c6964204964000000000000000000000000000000000000000000006020808301919091528251600a818403018152602a8301808552815192820192909220606a84018552600e83527f44617461206e6f7420666f756e64000000000000000000000000000000000000604a9094019390935292517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391610c2a919060040161116f565b600060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b5050601b546040516354f6127f60e01b8152600481018590526001600160a01b0390911692506354f6127f9150602401600060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ccd91908101906111bb565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b80604051602001610d439190611189565b6040516020818303038152906040528051906020012082604051602001610d6a9190611189565b6040516020818303038152906040528051906020012014610e88577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610e0a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051610e419190611375565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610e7891906113bc565b60405180910390a1610e88610e8c565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f875760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610f26929160200161130b565b60408051601f1981840301815290829052610f4091611189565b6000604051808303816000865af19150503d8060008114610f7d576040519150601f19603f3d011682016040523d82523d6000602084013e610f82565b606091505b505050505b6000805461ff001916610100179055565b610bdf8061140483390190565b6020808252825182820181905260009190848201906040850190845b81811015610fe65783516001600160a01b031683529284019291840191600101610fc1565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156110ae57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156110995783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611057565b50978a0197955050509187019160010161101a565b50919998505050505050505050565b60005b838110156110d85781810151838201526020016110c0565b50506000910152565b600081518084526110f98160208601602086016110bd565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561116257603f198886030184526111508583516110e1565b94509285019290850190600101611134565b5092979650505050505050565b60208152600061118260208301846110e1565b9392505050565b6000825161119b8184602087016110bd565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156111cd57600080fd5b815167ffffffffffffffff808211156111e557600080fd5b818401915084601f8301126111f957600080fd5b81518181111561120b5761120b6111a5565b604051601f8201601f19908116603f01168101908382118183101715611233576112336111a5565b8160405282815287602084870101111561124c57600080fd5b61125d8360208301602088016110bd565b979650505050505050565b600181811c9082168061127c57607f821691505b60208210810361129c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156112b457600080fd5b5051919050565b808201808211156112dc57634e487b7160e01b600052601160045260246000fd5b92915050565b8381526060602082015260006112fb60608301856110e1565b9050826040830152949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516113458160048501602087016110bd565b919091016004019392505050565b60006020828403121561136557600080fd5b8151801515811461118257600080fd5b60408152600a60408201527f2020202020204c65667400000000000000000000000000000000000000000000606082015260806020820152600061118260808301846110e1565b60408152600a60408201527f2020202020526967687400000000000000000000000000000000000000000000606082015260806020820152600061118260808301846110e156fe6080604052600060025534801561001557600080fd5b50610021600033610052565b5061004c7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef133610052565b506100fe565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166100f4576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100ac3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100f8565b5060005b92915050565b610ad28061010d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806347064d6a11610081578063a217fddf1161005b578063a217fddf146101e0578063d087d288146101e8578063d547741f146101f057600080fd5b806347064d6a1461017657806354f6127f1461018957806391d14854146101a957600080fd5b8063248a9ca3116100b2578063248a9ca31461012b5780632f2ff15d1461014e57806336568abe1461016357600080fd5b806301ffc9a7146100ce57806307e2cea5146100f6575b600080fd5b6100e16100dc366004610720565b610203565b60405190151581526020015b60405180910390f35b61011d7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020016100ed565b61011d610139366004610769565b60009081526020819052604090206001015490565b61016161015c366004610782565b61029c565b005b610161610171366004610782565b6102c7565b6101616101843660046107d4565b610318565b61019c610197366004610769565b6103ef565b6040516100ed91906108d5565b6100e16101b7366004610782565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011d600081565b60025461011d565b6101616101fe366004610782565b61050f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061029657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546102b781610534565b6102c18383610541565b50505050565b6001600160a01b0381163314610309576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031382826105eb565b505050565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161034281610534565b60008260405160200161035591906108e8565b60408051601f1981840301815282825280516020918201208383018352808452838201878152600082815260019384905293909320845181559251909450908201906103a1908261098c565b509050506103ad61066e565b7f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf81846002546040516103e293929190610a4c565b60405180910390a1505050565b6000818152600160205260408120546060910361046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f44617461206e6f7420666f756e6400000000000000000000000000000000000060448201526064015b60405180910390fd5b600082815260016020819052604090912001805461048a90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546104b690610904565b80156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b50505050509050919050565b60008281526020819052604090206001015461052a81610534565b6102c183836105eb565b61053e81336106b0565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166105e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561059b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610296565b506000610296565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156105e3576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610296565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161069881610534565b600280549060006106a883610a75565b919050555050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661071c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610464565b5050565b60006020828403121561073257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461076257600080fd5b9392505050565b60006020828403121561077b57600080fd5b5035919050565b6000806040838503121561079557600080fd5b8235915060208301356001600160a01b03811681146107b357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156107e657600080fd5b813567ffffffffffffffff808211156107fe57600080fd5b818401915084601f83011261081257600080fd5b813581811115610824576108246107be565b604051601f8201601f19908116603f0116810190838211818310171561084c5761084c6107be565b8160405282815287602084870101111561086557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156108a0578181015183820152602001610888565b50506000910152565b600081518084526108c1816020860160208601610885565b601f01601f19169290920160200192915050565b60208152600061076260208301846108a9565b600082516108fa818460208701610885565b9190910192915050565b600181811c9082168061091857607f821691505b60208210810361093857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561031357600081815260208120601f850160051c810160208610156109655750805b601f850160051c820191505b8181101561098457828155600101610971565b505050505050565b815167ffffffffffffffff8111156109a6576109a66107be565b6109ba816109b48454610904565b8461093e565b602080601f8311600181146109ef57600084156109d75750858301515b600019600386901b1c1916600185901b178555610984565b600085815260208120601f198616915b82811015610a1e578886015182559484019460019091019084016109ff565b5085821015610a3c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b838152606060208201526000610a6560608301856108a9565b9050826040830152949350505050565b600060018201610a9557634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201e4465e4522c62caa54368e3ea6d4d76bb0922c24e6d32d041ff75cdf7b06a8864736f6c63430008140033a2646970667358221220d9a4925dca911291e174bd6aeeb4e5f52e8f3d89b4d008544e959eaab275d08864736f6c63430008140033","sourceMap":"175:1208:40:-:0;;;1572:26:17;;;1594:4;-1:-1:-1;;1572:26:17;;;;;;;;3161:44:20;;;;;;;;;;;175:1208:40;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063916a17c61161008c578063ba414fa611610066578063ba414fa614610171578063e120168a14610189578063e20c9f7114610191578063fa7626d41461019957600080fd5b8063916a17c614610159578063a039461914610161578063b5508aa91461016957600080fd5b80633f7286f4116100c85780633f7286f41461011f5780635946fe431461012757806366d9a9a01461012f57806385226c811461014457600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780633e5e3c2314610117575b600080fd5b6100f76101a6565b005b61010161021d565b60405161010e9190610fa5565b60405180910390f35b61010161027f565b6101016102df565b6100f761033f565b610137610483565b60405161010e9190610ff2565b61014c610587565b60405161010e919061110d565b610137610657565b6100f7610752565b61014c610965565b610179610a35565b604051901515815260200161010e565b6100f7610b60565b610101610cd2565b6000546101799060ff1681565b601c805473ffffffffffffffffffffffffffffffffffffffff1916301790556040516101d190610f98565b604051809103906000f0801580156101ed573d6000803e3d6000fd5b50601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801561027557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610257575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b604080518082018252600d81527f48656c6c6f2c20776f726c6421000000000000000000000000000000000000006020820152601b54915163238326b560e11b815290916001600160a01b0316906347064d6a906103a190849060040161116f565b600060405180830381600087803b1580156103bb57600080fd5b505af11580156103cf573d6000803e3d6000fd5b505050506000816040516020016103e69190611189565b60408051808303601f190181529082905280516020820120601b546354f6127f60e01b845260048401829052919350916000916001600160a01b0316906354f6127f90602401600060405180830381865afa158015610449573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047191908101906111bb565b905061047d8185610d32565b50505050565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561057e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561056657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105135790505b505050505081525050815260200190600101906104a7565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561057e5783829060005260206000200180546105ca90611268565b80601f01602080910402602001604051908101604052809291908181526020018280546105f690611268565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050815260200190600101906105ab565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561057e5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561073a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116106e75790505b5050505050815250508152602001906001019061067b565b604080518082018252600f81527f48656c6c6f2c20776f726c642031210000000000000000000000000000000000602082015290517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506000601b60009054906101000a90046001600160a01b03166001600160a01b031663d087d2886040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089091906112a2565b90507f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf826040516020016108c49190611189565b60405160208183030381529060405280519060200120838360016108e891906112bb565b6040516108f7939291906112e2565b60405180910390a1601b5460405163238326b560e11b81526001600160a01b03909116906347064d6a9061092f90859060040161116f565b600060405180830381600087803b15801561094957600080fd5b505af115801561095d573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561057e5783829060005260206000200180546109a890611268565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490611268565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b505050505081526020019060010190610989565b60008054610100900460ff1615610a555750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b5b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b82840152825180830384018152606083019093526000929091610ae3917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161130b565b60408051601f1981840301815290829052610afd91611189565b6000604051808303816000865af19150503d8060008114610b3a576040519150601f19603f3d011682016040523d82523d6000602084013e610b3f565b606091505b5091505080806020019051810190610b579190611353565b9150505b919050565b604080517f496e76616c6964204964000000000000000000000000000000000000000000006020808301919091528251600a818403018152602a8301808552815192820192909220606a84018552600e83527f44617461206e6f7420666f756e64000000000000000000000000000000000000604a9094019390935292517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391610c2a919060040161116f565b600060405180830381600087803b158015610c4457600080fd5b505af1158015610c58573d6000803e3d6000fd5b5050601b546040516354f6127f60e01b8152600481018590526001600160a01b0390911692506354f6127f9150602401600060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ccd91908101906111bb565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015610275576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610257575050505050905090565b80604051602001610d439190611189565b6040516020818303038152906040528051906020012082604051602001610d6a9190611189565b6040516020818303038152906040528051906020012014610e88577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610e0a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051610e419190611375565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610e7891906113bc565b60405180910390a1610e88610e8c565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f875760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052610f26929160200161130b565b60408051601f1981840301815290829052610f4091611189565b6000604051808303816000865af19150503d8060008114610f7d576040519150601f19603f3d011682016040523d82523d6000602084013e610f82565b606091505b505050505b6000805461ff001916610100179055565b610bdf8061140483390190565b6020808252825182820181905260009190848201906040850190845b81811015610fe65783516001600160a01b031683529284019291840191600101610fc1565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156110ae57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156110995783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611057565b50978a0197955050509187019160010161101a565b50919998505050505050505050565b60005b838110156110d85781810151838201526020016110c0565b50506000910152565b600081518084526110f98160208601602086016110bd565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561116257603f198886030184526111508583516110e1565b94509285019290850190600101611134565b5092979650505050505050565b60208152600061118260208301846110e1565b9392505050565b6000825161119b8184602087016110bd565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156111cd57600080fd5b815167ffffffffffffffff808211156111e557600080fd5b818401915084601f8301126111f957600080fd5b81518181111561120b5761120b6111a5565b604051601f8201601f19908116603f01168101908382118183101715611233576112336111a5565b8160405282815287602084870101111561124c57600080fd5b61125d8360208301602088016110bd565b979650505050505050565b600181811c9082168061127c57607f821691505b60208210810361129c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156112b457600080fd5b5051919050565b808201808211156112dc57634e487b7160e01b600052601160045260246000fd5b92915050565b8381526060602082015260006112fb60608301856110e1565b9050826040830152949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516113458160048501602087016110bd565b919091016004019392505050565b60006020828403121561136557600080fd5b8151801515811461118257600080fd5b60408152600a60408201527f2020202020204c65667400000000000000000000000000000000000000000000606082015260806020820152600061118260808301846110e1565b60408152600a60408201527f2020202020526967687400000000000000000000000000000000000000000000606082015260806020820152600061118260808301846110e156fe6080604052600060025534801561001557600080fd5b50610021600033610052565b5061004c7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef133610052565b506100fe565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166100f4576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100ac3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100f8565b5060005b92915050565b610ad28061010d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806347064d6a11610081578063a217fddf1161005b578063a217fddf146101e0578063d087d288146101e8578063d547741f146101f057600080fd5b806347064d6a1461017657806354f6127f1461018957806391d14854146101a957600080fd5b8063248a9ca3116100b2578063248a9ca31461012b5780632f2ff15d1461014e57806336568abe1461016357600080fd5b806301ffc9a7146100ce57806307e2cea5146100f6575b600080fd5b6100e16100dc366004610720565b610203565b60405190151581526020015b60405180910390f35b61011d7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020016100ed565b61011d610139366004610769565b60009081526020819052604090206001015490565b61016161015c366004610782565b61029c565b005b610161610171366004610782565b6102c7565b6101616101843660046107d4565b610318565b61019c610197366004610769565b6103ef565b6040516100ed91906108d5565b6100e16101b7366004610782565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011d600081565b60025461011d565b6101616101fe366004610782565b61050f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061029657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546102b781610534565b6102c18383610541565b50505050565b6001600160a01b0381163314610309576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031382826105eb565b505050565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161034281610534565b60008260405160200161035591906108e8565b60408051601f1981840301815282825280516020918201208383018352808452838201878152600082815260019384905293909320845181559251909450908201906103a1908261098c565b509050506103ad61066e565b7f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf81846002546040516103e293929190610a4c565b60405180910390a1505050565b6000818152600160205260408120546060910361046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f44617461206e6f7420666f756e6400000000000000000000000000000000000060448201526064015b60405180910390fd5b600082815260016020819052604090912001805461048a90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546104b690610904565b80156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b50505050509050919050565b60008281526020819052604090206001015461052a81610534565b6102c183836105eb565b61053e81336106b0565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166105e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561059b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610296565b506000610296565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156105e3576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610296565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161069881610534565b600280549060006106a883610a75565b919050555050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661071c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610464565b5050565b60006020828403121561073257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461076257600080fd5b9392505050565b60006020828403121561077b57600080fd5b5035919050565b6000806040838503121561079557600080fd5b8235915060208301356001600160a01b03811681146107b357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156107e657600080fd5b813567ffffffffffffffff808211156107fe57600080fd5b818401915084601f83011261081257600080fd5b813581811115610824576108246107be565b604051601f8201601f19908116603f0116810190838211818310171561084c5761084c6107be565b8160405282815287602084870101111561086557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156108a0578181015183820152602001610888565b50506000910152565b600081518084526108c1816020860160208601610885565b601f01601f19169290920160200192915050565b60208152600061076260208301846108a9565b600082516108fa818460208701610885565b9190910192915050565b600181811c9082168061091857607f821691505b60208210810361093857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561031357600081815260208120601f850160051c810160208610156109655750805b601f850160051c820191505b8181101561098457828155600101610971565b505050505050565b815167ffffffffffffffff8111156109a6576109a66107be565b6109ba816109b48454610904565b8461093e565b602080601f8311600181146109ef57600084156109d75750858301515b600019600386901b1c1916600185901b178555610984565b600085815260208120601f198616915b82811015610a1e578886015182559484019460019091019084016109ff565b5085821015610a3c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b838152606060208201526000610a6560608301856108a9565b9050826040830152949350505050565b600060018201610a9557634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201e4465e4522c62caa54368e3ea6d4d76bb0922c24e6d32d041ff75cdf7b06a8864736f6c63430008140033a2646970667358221220d9a4925dca911291e174bd6aeeb4e5f52e8f3d89b4d008544e959eaab275d08864736f6c63430008140033","sourceMap":"175:1208:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;324:105;;;:::i;:::-;;2161:134:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;435:343:40:-;;;:::i;2447:178:23:-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;784:320:40:-;;;:::i;1866:141:23:-;;;:::i;1819:584:17:-;;;:::i;:::-;;;3847:14:45;;3840:22;3822:41;;3810:2;3795:18;1819:584:17;3682:187:45;1110:271:40;;;:::i;2013:142:23:-;;;:::i;1572:26:17:-;;;;;;;;;324:105:40;358:5;:21;;-1:-1:-1;;358:21:40;374:4;358:21;;;398:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;389:6:40;:33;;-1:-1:-1;;389:33:40;-1:-1:-1;;;;;389:33:40;;;;;;;;;;324:105::o;2161:134:23:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:23;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:23;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:23;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;435:343:40:-;484:39;;;;;;;;;;;;;;;;533:6;;:23;;-1:-1:-1;;;533:23:40;;484:39;;-1:-1:-1;;;;;533:6:40;;:14;;:23;;484:39;;533:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;567:24;611:7;594:25;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;594:25:40;;;;;;;652:22;;594:25;652:22;;;708:6;;-1:-1:-1;;;708:28:40;;;;;4539:25:45;;;594::40;;-1:-1:-1;652:22:40;629:20;;-1:-1:-1;;;;;708:6:40;;:14;;4512:18:45;;708:28:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;708:28:40;;;;;;;;;;;;:::i;:::-;685:51;;746:25;755:6;763:7;746:8;:25::i;:::-;474:304;;;;435:343::o;2447:178:23:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:320:40;837:41;;;;;;;;;;;;;;;;888:37;;;;;902:4;888:37;;;6315:41:45;;;6372:18;;;6365:50;;;6431:18;;;6424:50;;;6490:18;;;6483:50;888:13:40;;;;6287:19:45;;888:37:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;935:19;957:6;;;;;;;;;-1:-1:-1;;;;;957:6:40;-1:-1:-1;;;;;957:15:40;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;935:39;;989:75;1028:7;1011:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;1001:36;;;;;;1039:7;1048:11;1062:1;1048:15;;;;:::i;:::-;989:75;;;;;;;;:::i;:::-;;;;;;;;1074:6;;:23;;-1:-1:-1;;;1074:23:40;;-1:-1:-1;;;;;1074:6:40;;;;:14;;:23;;1089:7;;1074:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:277;;784:320::o;1866:141:23:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:17;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:17;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;7558:74:45;;;-1:-1:-1;;;7648:18:45;;;7641:34;2196:43:17;;;;;;;;;7531:18:45;;;2196:43:17;;;-1:-1:-1;;1671:64:17;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:17;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:17:o;1110:271:40:-;1190:30;;;8909:12:45;1190:30:40;;;;8897:25:45;;;;1190:30:40;;;;;;;;;8938:12:45;;;1190:30:40;;;1258:22;;;;;;;;;1307:23;;;;;;;;;;;;;;;;;1291:40;;;;;:15;;;;:40;;8938:12:45;1291:40:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1341:6:40;;:33;;-1:-1:-1;;;1341:33:40;;;;;4539:25:45;;;-1:-1:-1;;;;;1341:6:40;;;;-1:-1:-1;1341:14:40;;-1:-1:-1;4512:18:45;;1341:33:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1341:33:40;;;;;;;;;;;;:::i;:::-;;1153:228;;1110:271::o;2013:142:23:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:23;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;17902:344:17:-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;9386:2:45;9368:21;;;9425:2;9405:18;;;9398:30;9464:34;9459:2;9444:18;;9437:62;9535:6;9530:2;9515:18;;9508:34;9574:3;9559:19;;9184:400;18062:43:17;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;:::-;17902:344;;:::o;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;10705:74:45;;;-1:-1:-1;;;10795:18:45;;;10788:34;;;;2712:4:17;10838:18:45;;;10831:34;2489:11:17;;1671:64;2586:43;;10678:18:45;;2652:67:17;;;-1:-1:-1;;2652:67:17;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:17;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:17;2820:7;:14;;-1:-1:-1;;2820:14:17;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;14:681:45:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:45;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:45;;14:681;-1:-1:-1;;;;;;14:681:45:o;700:1638::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1006;1319:6;1314:3;1311:15;1303:1006;;;1388:22;;;-1:-1:-1;;1384:36:45;1372:49;;1444:13;;1531:9;;-1:-1:-1;;;;;1527:58:45;1512:74;;1625:11;;1619:18;1657:15;;;1650:27;;;1738:19;;1484:15;;;1770:24;;;1860:21;;;;1905:1;;1828:2;1816:15;;;1919:282;1935:8;1930:3;1927:17;1919:282;;;2016:15;;2033:66;2012:88;1998:103;;2170:17;;;;1963:1;1954:11;;;;;2127:14;;;;1919:282;;;-1:-1:-1;2287:12:45;;;;2224:5;-1:-1:-1;;;2252:15:45;;;;1345:1;1336:11;1303:1006;;;-1:-1:-1;2326:6:45;;700:1638;-1:-1:-1;;;;;;;;;700:1638:45:o;2343:250::-;2428:1;2438:113;2452:6;2449:1;2446:13;2438:113;;;2528:11;;;2522:18;2509:11;;;2502:39;2474:2;2467:10;2438:113;;;-1:-1:-1;;2585:1:45;2567:16;;2560:27;2343:250::o;2598:271::-;2640:3;2678:5;2672:12;2705:6;2700:3;2693:19;2721:76;2790:6;2783:4;2778:3;2774:14;2767:4;2760:5;2756:16;2721:76;:::i;:::-;2851:2;2830:15;-1:-1:-1;;2826:29:45;2817:39;;;;2858:4;2813:50;;2598:271;-1:-1:-1;;2598:271:45:o;2874:803::-;3036:4;3065:2;3105;3094:9;3090:18;3135:2;3124:9;3117:21;3158:6;3193;3187:13;3224:6;3216;3209:22;3262:2;3251:9;3247:18;3240:25;;3324:2;3314:6;3311:1;3307:14;3296:9;3292:30;3288:39;3274:53;;3362:2;3354:6;3350:15;3383:1;3393:255;3407:6;3404:1;3401:13;3393:255;;;3500:2;3496:7;3484:9;3476:6;3472:22;3468:36;3463:3;3456:49;3528:40;3561:6;3552;3546:13;3528:40;:::i;:::-;3518:50;-1:-1:-1;3626:12:45;;;;3591:15;;;;3429:1;3422:9;3393:255;;;-1:-1:-1;3665:6:45;;2874:803;-1:-1:-1;;;;;;;2874:803:45:o;3874:220::-;4023:2;4012:9;4005:21;3986:4;4043:45;4084:2;4073:9;4069:18;4061:6;4043:45;:::i;:::-;4035:53;3874:220;-1:-1:-1;;;3874:220:45:o;4099:289::-;4230:3;4268:6;4262:13;4284:66;4343:6;4338:3;4331:4;4323:6;4319:17;4284:66;:::i;:::-;4366:16;;;;;4099:289;-1:-1:-1;;4099:289:45:o;4575:184::-;-1:-1:-1;;;4624:1:45;4617:88;4724:4;4721:1;4714:15;4748:4;4745:1;4738:15;4764:897;4844:6;4897:2;4885:9;4876:7;4872:23;4868:32;4865:52;;;4913:1;4910;4903:12;4865:52;4946:9;4940:16;4975:18;5016:2;5008:6;5005:14;5002:34;;;5032:1;5029;5022:12;5002:34;5070:6;5059:9;5055:22;5045:32;;5115:7;5108:4;5104:2;5100:13;5096:27;5086:55;;5137:1;5134;5127:12;5086:55;5166:2;5160:9;5188:2;5184;5181:10;5178:36;;;5194:18;;:::i;:::-;5269:2;5263:9;5237:2;5323:13;;-1:-1:-1;;5319:22:45;;;5343:2;5315:31;5311:40;5299:53;;;5367:18;;;5387:22;;;5364:46;5361:72;;;5413:18;;:::i;:::-;5453:10;5449:2;5442:22;5488:2;5480:6;5473:18;5528:7;5523:2;5518;5514;5510:11;5506:20;5503:33;5500:53;;;5549:1;5546;5539:12;5500:53;5562:68;5627:2;5622;5614:6;5610:15;5605:2;5601;5597:11;5562:68;:::i;:::-;5649:6;4764:897;-1:-1:-1;;;;;;;4764:897:45:o;5666:437::-;5745:1;5741:12;;;;5788;;;5809:61;;5863:4;5855:6;5851:17;5841:27;;5809:61;5916:2;5908:6;5905:14;5885:18;5882:38;5879:218;;-1:-1:-1;;;5950:1:45;5943:88;6054:4;6051:1;6044:15;6082:4;6079:1;6072:15;5879:218;;5666:437;;;:::o;6544:184::-;6614:6;6667:2;6655:9;6646:7;6642:23;6638:32;6635:52;;;6683:1;6680;6673:12;6635:52;-1:-1:-1;6706:16:45;;6544:184;-1:-1:-1;6544:184:45:o;6733:279::-;6798:9;;;6819:10;;;6816:190;;;-1:-1:-1;;;6859:1:45;6852:88;6963:4;6960:1;6953:15;6991:4;6988:1;6981:15;6816:190;6733:279;;;;:::o;7017:362::-;7222:6;7211:9;7204:25;7265:2;7260;7249:9;7245:18;7238:30;7185:4;7285:45;7326:2;7315:9;7311:18;7303:6;7285:45;:::i;:::-;7277:53;;7366:6;7361:2;7350:9;7346:18;7339:34;7017:362;;;;;;:::o;7686:430::-;7883:66;7875:6;7871:79;7866:3;7859:92;7841:3;7980:6;7974:13;7996:74;8063:6;8059:1;8054:3;8050:11;8043:4;8035:6;8031:17;7996:74;:::i;:::-;8090:16;;;;8108:1;8086:24;;7686:430;-1:-1:-1;;;7686:430:45:o;8413:277::-;8480:6;8533:2;8521:9;8512:7;8508:23;8504:32;8501:52;;;8549:1;8546;8539:12;8501:52;8581:9;8575:16;8634:5;8627:13;8620:21;8613:5;8610:32;8600:60;;8656:1;8653;8646:12;9589:452;9839:2;9828:9;9821:21;9878:2;9873;9862:9;9858:18;9851:30;9917:12;9912:2;9901:9;9897:18;9890:40;9968:3;9961:4;9950:9;9946:20;9939:33;9802:4;9989:46;10030:3;10019:9;10015:19;10007:6;9989:46;:::i;10046:452::-;10296:2;10285:9;10278:21;10335:2;10330;10319:9;10315:18;10308:30;10374:12;10369:2;10358:9;10354:18;10347:40;10425:3;10418:4;10407:9;10403:20;10396:33;10259:4;10446:46;10487:3;10476:9;10472:19;10464:6;10446:46;:::i","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testEmitUpdatedDataEvent()":"a0394619","testRevertIfDataNotFound()":"e120168a","testWriteAndReadData()":"5946fe43"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"UpdatedData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEmitUpdatedDataEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRevertIfDataNotFound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWriteAndReadData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/tests/OracleTest.sol\":\"OracleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"src/test/solidity/contracts/OracleTestContract.sol\":{\"keccak256\":\"0xe3647f91f50bbda738ddad4744ee73238f6cffadabef4d6567d7044c330b7ee3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://247a6e56ee102fdefce5e17a54315e348e927dd1f6f9a23348993a52b42585b4\",\"dweb:/ipfs/QmYnrT6j8ueNfVPcohxG1vVrDtCJH4rvqrYShN7jzgvwNn\"]},\"src/test/solidity/tests/OracleTest.sol\":{\"keccak256\":\"0x62fd11cfa155fe3e06754d45c415afa42b5878fc5a4e9326e15b1654c812d244\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2810d52df76726748002b031cc0588b05b97fa0c6c54122b94b9bbf5c1f59259\",\"dweb:/ipfs/QmNSganZhZ4H3z3vEeoghdPHGGhURR6c7jJaxuJ6QPqUB1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"string","name":"data","type":"string","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"UpdatedData","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEmitUpdatedDataEvent"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRevertIfDataNotFound"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWriteAndReadData"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/tests/OracleTest.sol":"OracleTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"src/test/solidity/contracts/OracleTestContract.sol":{"keccak256":"0xe3647f91f50bbda738ddad4744ee73238f6cffadabef4d6567d7044c330b7ee3","urls":["bzz-raw://247a6e56ee102fdefce5e17a54315e348e927dd1f6f9a23348993a52b42585b4","dweb:/ipfs/QmYnrT6j8ueNfVPcohxG1vVrDtCJH4rvqrYShN7jzgvwNn"],"license":"GPL-3.0"},"src/test/solidity/tests/OracleTest.sol":{"keccak256":"0x62fd11cfa155fe3e06754d45c415afa42b5878fc5a4e9326e15b1654c812d244","urls":["bzz-raw://2810d52df76726748002b031cc0588b05b97fa0c6c54122b94b9bbf5c1f59259","dweb:/ipfs/QmNSganZhZ4H3z3vEeoghdPHGGhURR6c7jJaxuJ6QPqUB1"],"license":"UNLICENSED"}},"version":1},"id":40} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/OracleTestContract.sol/OracleTestContract.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/OracleTestContract.sol/OracleTestContract.json index 225a41e13a..4284294ac8 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/OracleTestContract.sol/OracleTestContract.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/OracleTestContract.sol/OracleTestContract.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ORACLE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getData","inputs":[{"name":"id","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setData","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UpdatedData","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"data","type":"string","indexed":false,"internalType":"string"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x6080604052600060025534801561001557600080fd5b50610021600033610052565b5061004c7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef133610052565b506100fe565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166100f4576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100ac3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100f8565b5060005b92915050565b610ad28061010d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806347064d6a11610081578063a217fddf1161005b578063a217fddf146101e0578063d087d288146101e8578063d547741f146101f057600080fd5b806347064d6a1461017657806354f6127f1461018957806391d14854146101a957600080fd5b8063248a9ca3116100b2578063248a9ca31461012b5780632f2ff15d1461014e57806336568abe1461016357600080fd5b806301ffc9a7146100ce57806307e2cea5146100f6575b600080fd5b6100e16100dc366004610720565b610203565b60405190151581526020015b60405180910390f35b61011d7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020016100ed565b61011d610139366004610769565b60009081526020819052604090206001015490565b61016161015c366004610782565b61029c565b005b610161610171366004610782565b6102c7565b6101616101843660046107d4565b610318565b61019c610197366004610769565b6103ef565b6040516100ed91906108d5565b6100e16101b7366004610782565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011d600081565b60025461011d565b6101616101fe366004610782565b61050f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061029657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546102b781610534565b6102c18383610541565b50505050565b6001600160a01b0381163314610309576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031382826105eb565b505050565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161034281610534565b60008260405160200161035591906108e8565b60408051601f1981840301815282825280516020918201208383018352808452838201878152600082815260019384905293909320845181559251909450908201906103a1908261098c565b509050506103ad61066e565b7f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf81846002546040516103e293929190610a4c565b60405180910390a1505050565b6000818152600160205260408120546060910361046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f44617461206e6f7420666f756e6400000000000000000000000000000000000060448201526064015b60405180910390fd5b600082815260016020819052604090912001805461048a90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546104b690610904565b80156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b50505050509050919050565b60008281526020819052604090206001015461052a81610534565b6102c183836105eb565b61053e81336106b0565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166105e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561059b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610296565b506000610296565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156105e3576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610296565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161069881610534565b600280549060006106a883610a75565b919050555050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661071c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610464565b5050565b60006020828403121561073257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461076257600080fd5b9392505050565b60006020828403121561077b57600080fd5b5035919050565b6000806040838503121561079557600080fd5b8235915060208301356001600160a01b03811681146107b357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156107e657600080fd5b813567ffffffffffffffff808211156107fe57600080fd5b818401915084601f83011261081257600080fd5b813581811115610824576108246107be565b604051601f8201601f19908116603f0116810190838211818310171561084c5761084c6107be565b8160405282815287602084870101111561086557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156108a0578181015183820152602001610888565b50506000910152565b600081518084526108c1816020860160208601610885565b601f01601f19169290920160200192915050565b60208152600061076260208301846108a9565b600082516108fa818460208701610885565b9190910192915050565b600181811c9082168061091857607f821691505b60208210810361093857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561031357600081815260208120601f850160051c810160208610156109655750805b601f850160051c820191505b8181101561098457828155600101610971565b505050505050565b815167ffffffffffffffff8111156109a6576109a66107be565b6109ba816109b48454610904565b8461093e565b602080601f8311600181146109ef57600084156109d75750858301515b600019600386901b1c1916600185901b178555610984565b600085815260208120601f198616915b82811015610a1e578886015182559484019460019091019084016109ff565b5085821015610a3c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b838152606060208201526000610a6560608301856108a9565b9050826040830152949350505050565b600060018201610a9557634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201e4465e4522c62caa54368e3ea6d4d76bb0922c24e6d32d041ff75cdf7b06a8864736f6c63430008140033","sourceMap":"325:1102:13:-:0;;;659:1;635:25;;841:118;;;;;;;;;-1:-1:-1;865:42:13;2232:4:0;896:10:13;865;:42::i;:::-;-1:-1:-1;917:35:13;415:24;941:10;917;:35::i;:::-;;325:1102;;6179:316:0;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:6;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6272:217;6179:316;;;;:::o;325:1102:13:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100c95760003560e01c806347064d6a11610081578063a217fddf1161005b578063a217fddf146101e0578063d087d288146101e8578063d547741f146101f057600080fd5b806347064d6a1461017657806354f6127f1461018957806391d14854146101a957600080fd5b8063248a9ca3116100b2578063248a9ca31461012b5780632f2ff15d1461014e57806336568abe1461016357600080fd5b806301ffc9a7146100ce57806307e2cea5146100f6575b600080fd5b6100e16100dc366004610720565b610203565b60405190151581526020015b60405180910390f35b61011d7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020016100ed565b61011d610139366004610769565b60009081526020819052604090206001015490565b61016161015c366004610782565b61029c565b005b610161610171366004610782565b6102c7565b6101616101843660046107d4565b610318565b61019c610197366004610769565b6103ef565b6040516100ed91906108d5565b6100e16101b7366004610782565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011d600081565b60025461011d565b6101616101fe366004610782565b61050f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061029657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546102b781610534565b6102c18383610541565b50505050565b6001600160a01b0381163314610309576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031382826105eb565b505050565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161034281610534565b60008260405160200161035591906108e8565b60408051601f1981840301815282825280516020918201208383018352808452838201878152600082815260019384905293909320845181559251909450908201906103a1908261098c565b509050506103ad61066e565b7f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf81846002546040516103e293929190610a4c565b60405180910390a1505050565b6000818152600160205260408120546060910361046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f44617461206e6f7420666f756e6400000000000000000000000000000000000060448201526064015b60405180910390fd5b600082815260016020819052604090912001805461048a90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546104b690610904565b80156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b50505050509050919050565b60008281526020819052604090206001015461052a81610534565b6102c183836105eb565b61053e81336106b0565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166105e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561059b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610296565b506000610296565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156105e3576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610296565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161069881610534565b600280549060006106a883610a75565b919050555050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661071c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610464565b5050565b60006020828403121561073257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461076257600080fd5b9392505050565b60006020828403121561077b57600080fd5b5035919050565b6000806040838503121561079557600080fd5b8235915060208301356001600160a01b03811681146107b357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156107e657600080fd5b813567ffffffffffffffff808211156107fe57600080fd5b818401915084601f83011261081257600080fd5b813581811115610824576108246107be565b604051601f8201601f19908116603f0116810190838211818310171561084c5761084c6107be565b8160405282815287602084870101111561086557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156108a0578181015183820152602001610888565b50506000910152565b600081518084526108c1816020860160208601610885565b601f01601f19169290920160200192915050565b60208152600061076260208301846108a9565b600082516108fa818460208701610885565b9190910192915050565b600181811c9082168061091857607f821691505b60208210810361093857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561031357600081815260208120601f850160051c810160208610156109655750805b601f850160051c820191505b8181101561098457828155600101610971565b505050505050565b815167ffffffffffffffff8111156109a6576109a66107be565b6109ba816109b48454610904565b8461093e565b602080601f8311600181146109ef57600084156109d75750858301515b600019600386901b1c1916600185901b178555610984565b600085815260208120601f198616915b82811015610a1e578886015182559484019460019091019084016109ff565b5085821015610a3c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b838152606060208201526000610a6560608301856108a9565b9050826040830152949350505050565b600060018201610a9557634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201e4465e4522c62caa54368e3ea6d4d76bb0922c24e6d32d041ff75cdf7b06a8864736f6c63430008140033","sourceMap":"325:1102:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:202:0;;;;;;:::i;:::-;;:::i;:::-;;;516:14:15;;509:22;491:41;;479:2;464:18;2565:202:0;;;;;;;;377:62:13;;415:24;377:62;;;;;689:25:15;;;677:2;662:18;377:62:13;543:177:15;3810:120:0;;;;;;:::i;:::-;3875:7;3901:12;;;;;;;;;;:22;;;;3810:120;4226:136;;;;;;:::i;:::-;;:::i;:::-;;5328:245;;;;;;:::i;:::-;;:::i;965:264:13:-;;;;;;:::i;:::-;;:::i;1235:190::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2854:136:0:-;;;;;;:::i;:::-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;;;;2854:136;2187:49;;2232:4;2187:49;;667:81:13;736:5;;667:81;;4642:138:0;;;;;;:::i;:::-;;:::i;2565:202::-;2650:4;2673:47;;;2688:32;2673:47;;:87;;-1:-1:-1;876:25:8;861:40;;;;2724:36:0;2666:94;2565:202;-1:-1:-1;;2565:202:0:o;4226:136::-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;:::-;;4226:136:::0;;;:::o;5328:245::-;-1:-1:-1;;;;;5421:34:0;;735:10:6;5421:34:0;5417:102;;5478:30;;;;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;965:264:13:-;415:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1044:14:13::1;1088:4;1071:22;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;1071:22:13;;::::1;::::0;;;;;;1061:33;;1071:22:::1;1061:33:::0;;::::1;::::0;1123:24;;::::1;::::0;;;;;;;::::1;::::0;;;-1:-1:-1;1105:15:13;;;:7:::1;:15:::0;;;;;;;;:42;;;;;;1061:33;;-1:-1:-1;1105:42:13;;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;;;;;1158:16;:14;:16::i;:::-;1190:32;1202:6;1210:4;1216:5;;1190:32;;;;;;;;:::i;:::-;;;;;;;;1034:195;965:264:::0;;:::o;1235:190::-;1316:11;;;;:7;:11;;;;;:14;1287:13;;1316:19;1312:74;;1351:24;;;;;6855:2:15;1351:24:13;;;6837:21:15;6894:2;6874:18;;;6867:30;6933:16;6913:18;;;6906:44;6967:18;;1351:24:13;;;;;;;;1312:74;1402:11;;;;:7;:11;;;;;;;;:16;1395:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:190;;;:::o;4642:138:0:-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;3199:103::-:0;3265:30;3276:4;735:10:6;3265::0;:30::i;:::-;3199:103;:::o;6179:316::-;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:6;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6466:12;;6730:317;6808:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6824:217;;;6898:5;6866:12;;;;;;;;;;;-1:-1:-1;;;;;6866:29:0;;;;;;;;;;:37;;-1:-1:-1;;6866:37:0;;;6922:40;735:10:6;;6866:12:0;;6922:40;;6898:5;6922:40;-1:-1:-1;6983:4:0;6976:11;;754:81:13;415:24;2464:16:0;2475:4;2464:10;:16::i;:::-;821:5:13::1;:7:::0;;;:5:::1;:7;::::0;::::1;:::i;:::-;;;;;;754:81:::0;:::o;3432:197:0:-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;3515:108;;3565:47;;;;;-1:-1:-1;;;;;7482:55:15;;3565:47:0;;;7464:74:15;7554:18;;;7547:34;;;7437:18;;3565:47:0;7290:297:15;3515:108:0;3432:197;;:::o;14:332:15:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:15:o;725:180::-;784:6;837:2;825:9;816:7;812:23;808:32;805:52;;;853:1;850;843:12;805:52;-1:-1:-1;876:23:15;;725:180;-1:-1:-1;725:180:15:o;910:377::-;978:6;986;1039:2;1027:9;1018:7;1014:23;1010:32;1007:52;;;1055:1;1052;1045:12;1007:52;1091:9;1078:23;1068:33;;1151:2;1140:9;1136:18;1123:32;-1:-1:-1;;;;;1188:5:15;1184:54;1177:5;1174:65;1164:93;;1253:1;1250;1243:12;1164:93;1276:5;1266:15;;;910:377;;;;;:::o;1292:184::-;-1:-1:-1;;;1341:1:15;1334:88;1441:4;1438:1;1431:15;1465:4;1462:1;1455:15;1481:922;1550:6;1603:2;1591:9;1582:7;1578:23;1574:32;1571:52;;;1619:1;1616;1609:12;1571:52;1659:9;1646:23;1688:18;1729:2;1721:6;1718:14;1715:34;;;1745:1;1742;1735:12;1715:34;1783:6;1772:9;1768:22;1758:32;;1828:7;1821:4;1817:2;1813:13;1809:27;1799:55;;1850:1;1847;1840:12;1799:55;1886:2;1873:16;1908:2;1904;1901:10;1898:36;;;1914:18;;:::i;:::-;1989:2;1983:9;1957:2;2043:13;;-1:-1:-1;;2039:22:15;;;2063:2;2035:31;2031:40;2019:53;;;2087:18;;;2107:22;;;2084:46;2081:72;;;2133:18;;:::i;:::-;2173:10;2169:2;2162:22;2208:2;2200:6;2193:18;2248:7;2243:2;2238;2234;2230:11;2226:20;2223:33;2220:53;;;2269:1;2266;2259:12;2220:53;2325:2;2320;2316;2312:11;2307:2;2299:6;2295:15;2282:46;2370:1;2348:15;;;2365:2;2344:24;2337:35;;;;-1:-1:-1;2352:6:15;1481:922;-1:-1:-1;;;;;1481:922:15:o;2408:250::-;2493:1;2503:113;2517:6;2514:1;2511:13;2503:113;;;2593:11;;;2587:18;2574:11;;;2567:39;2539:2;2532:10;2503:113;;;-1:-1:-1;;2650:1:15;2632:16;;2625:27;2408:250::o;2663:271::-;2705:3;2743:5;2737:12;2770:6;2765:3;2758:19;2786:76;2855:6;2848:4;2843:3;2839:14;2832:4;2825:5;2821:16;2786:76;:::i;:::-;2916:2;2895:15;-1:-1:-1;;2891:29:15;2882:39;;;;2923:4;2878:50;;2663:271;-1:-1:-1;;2663:271:15:o;2939:220::-;3088:2;3077:9;3070:21;3051:4;3108:45;3149:2;3138:9;3134:18;3126:6;3108:45;:::i;3346:289::-;3477:3;3515:6;3509:13;3531:66;3590:6;3585:3;3578:4;3570:6;3566:17;3531:66;:::i;:::-;3613:16;;;;;3346:289;-1:-1:-1;;3346:289:15:o;3640:437::-;3719:1;3715:12;;;;3762;;;3783:61;;3837:4;3829:6;3825:17;3815:27;;3783:61;3890:2;3882:6;3879:14;3859:18;3856:38;3853:218;;-1:-1:-1;;;3924:1:15;3917:88;4028:4;4025:1;4018:15;4056:4;4053:1;4046:15;3853:218;;3640:437;;;:::o;4208:545::-;4310:2;4305:3;4302:11;4299:448;;;4346:1;4371:5;4367:2;4360:17;4416:4;4412:2;4402:19;4486:2;4474:10;4470:19;4467:1;4463:27;4457:4;4453:38;4522:4;4510:10;4507:20;4504:47;;;-1:-1:-1;4545:4:15;4504:47;4600:2;4595:3;4591:12;4588:1;4584:20;4578:4;4574:31;4564:41;;4655:82;4673:2;4666:5;4663:13;4655:82;;;4718:17;;;4699:1;4688:13;4655:82;;;4659:3;;;4208:545;;;:::o;4929:1352::-;5055:3;5049:10;5082:18;5074:6;5071:30;5068:56;;;5104:18;;:::i;:::-;5133:97;5223:6;5183:38;5215:4;5209:11;5183:38;:::i;:::-;5177:4;5133:97;:::i;:::-;5285:4;;5349:2;5338:14;;5366:1;5361:663;;;;6068:1;6085:6;6082:89;;;-1:-1:-1;6137:19:15;;;6131:26;6082:89;-1:-1:-1;;4886:1:15;4882:11;;;4878:24;4874:29;4864:40;4910:1;4906:11;;;4861:57;6184:81;;5331:944;;5361:663;4155:1;4148:14;;;4192:4;4179:18;;-1:-1:-1;;5397:20:15;;;5515:236;5529:7;5526:1;5523:14;5515:236;;;5618:19;;;5612:26;5597:42;;5710:27;;;;5678:1;5666:14;;;;5545:19;;5515:236;;;5519:3;5779:6;5770:7;5767:19;5764:201;;;5840:19;;;5834:26;-1:-1:-1;;5923:1:15;5919:14;;;5935:3;5915:24;5911:37;5907:42;5892:58;5877:74;;5764:201;-1:-1:-1;;;;;6011:1:15;5995:14;;;5991:22;5978:36;;-1:-1:-1;4929:1352:15:o;6286:362::-;6491:6;6480:9;6473:25;6534:2;6529;6518:9;6514:18;6507:30;6454:4;6554:45;6595:2;6584:9;6580:18;6572:6;6554:45;:::i;:::-;6546:53;;6635:6;6630:2;6619:9;6615:18;6608:34;6286:362;;;;;;:::o;6996:289::-;7035:3;7056:17;;;7053:197;;-1:-1:-1;;;7103:1:15;7096:88;7207:4;7204:1;7197:15;7235:4;7232:1;7225:15;7053:197;-1:-1:-1;7277:1:15;7266:13;;6996:289::o","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","ORACLE_ROLE()":"07e2cea5","getData(bytes32)":"54f6127f","getNonce()":"d087d288","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setData(string)":"47064d6a","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"UpdatedData\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ORACLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getData\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"setData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"OracleTestContract The OracleTestContract is a example costum contract .\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/contracts/OracleTestContract.sol\":\"OracleTestContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/test/solidity/contracts/OracleTestContract.sol\":{\"keccak256\":\"0xe3647f91f50bbda738ddad4744ee73238f6cffadabef4d6567d7044c330b7ee3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://247a6e56ee102fdefce5e17a54315e348e927dd1f6f9a23348993a52b42585b4\",\"dweb:/ipfs/QmYnrT6j8ueNfVPcohxG1vVrDtCJH4rvqrYShN7jzgvwNn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"string","name":"data","type":"string","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"UpdatedData","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ORACLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getData","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setData"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/contracts/OracleTestContract.sol":"OracleTestContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/test/solidity/contracts/OracleTestContract.sol":{"keccak256":"0xe3647f91f50bbda738ddad4744ee73238f6cffadabef4d6567d7044c330b7ee3","urls":["bzz-raw://247a6e56ee102fdefce5e17a54315e348e927dd1f6f9a23348993a52b42585b4","dweb:/ipfs/QmYnrT6j8ueNfVPcohxG1vVrDtCJH4rvqrYShN7jzgvwNn"],"license":"GPL-3.0"}},"version":1},"id":13} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ORACLE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getData","inputs":[{"name":"id","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setData","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UpdatedData","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"data","type":"string","indexed":false,"internalType":"string"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x6080604052600060025534801561001557600080fd5b50610021600033610052565b5061004c7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef133610052565b506100fe565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166100f4576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100ac3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016100f8565b5060005b92915050565b610ad28061010d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806347064d6a11610081578063a217fddf1161005b578063a217fddf146101e0578063d087d288146101e8578063d547741f146101f057600080fd5b806347064d6a1461017657806354f6127f1461018957806391d14854146101a957600080fd5b8063248a9ca3116100b2578063248a9ca31461012b5780632f2ff15d1461014e57806336568abe1461016357600080fd5b806301ffc9a7146100ce57806307e2cea5146100f6575b600080fd5b6100e16100dc366004610720565b610203565b60405190151581526020015b60405180910390f35b61011d7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020016100ed565b61011d610139366004610769565b60009081526020819052604090206001015490565b61016161015c366004610782565b61029c565b005b610161610171366004610782565b6102c7565b6101616101843660046107d4565b610318565b61019c610197366004610769565b6103ef565b6040516100ed91906108d5565b6100e16101b7366004610782565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011d600081565b60025461011d565b6101616101fe366004610782565b61050f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061029657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546102b781610534565b6102c18383610541565b50505050565b6001600160a01b0381163314610309576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031382826105eb565b505050565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161034281610534565b60008260405160200161035591906108e8565b60408051601f1981840301815282825280516020918201208383018352808452838201878152600082815260019384905293909320845181559251909450908201906103a1908261098c565b509050506103ad61066e565b7f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf81846002546040516103e293929190610a4c565b60405180910390a1505050565b6000818152600160205260408120546060910361046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f44617461206e6f7420666f756e6400000000000000000000000000000000000060448201526064015b60405180910390fd5b600082815260016020819052604090912001805461048a90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546104b690610904565b80156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b50505050509050919050565b60008281526020819052604090206001015461052a81610534565b6102c183836105eb565b61053e81336106b0565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166105e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561059b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610296565b506000610296565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156105e3576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610296565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161069881610534565b600280549060006106a883610a75565b919050555050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661071c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610464565b5050565b60006020828403121561073257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461076257600080fd5b9392505050565b60006020828403121561077b57600080fd5b5035919050565b6000806040838503121561079557600080fd5b8235915060208301356001600160a01b03811681146107b357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156107e657600080fd5b813567ffffffffffffffff808211156107fe57600080fd5b818401915084601f83011261081257600080fd5b813581811115610824576108246107be565b604051601f8201601f19908116603f0116810190838211818310171561084c5761084c6107be565b8160405282815287602084870101111561086557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156108a0578181015183820152602001610888565b50506000910152565b600081518084526108c1816020860160208601610885565b601f01601f19169290920160200192915050565b60208152600061076260208301846108a9565b600082516108fa818460208701610885565b9190910192915050565b600181811c9082168061091857607f821691505b60208210810361093857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561031357600081815260208120601f850160051c810160208610156109655750805b601f850160051c820191505b8181101561098457828155600101610971565b505050505050565b815167ffffffffffffffff8111156109a6576109a66107be565b6109ba816109b48454610904565b8461093e565b602080601f8311600181146109ef57600084156109d75750858301515b600019600386901b1c1916600185901b178555610984565b600085815260208120601f198616915b82811015610a1e578886015182559484019460019091019084016109ff565b5085821015610a3c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b838152606060208201526000610a6560608301856108a9565b9050826040830152949350505050565b600060018201610a9557634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201e4465e4522c62caa54368e3ea6d4d76bb0922c24e6d32d041ff75cdf7b06a8864736f6c63430008140033","sourceMap":"325:1102:18:-:0;;;659:1;635:25;;841:118;;;;;;;;;-1:-1:-1;865:42:18;2232:4:0;896:10:18;865;:42::i;:::-;-1:-1:-1;917:35:18;415:24;941:10;917;:35::i;:::-;;325:1102;;6179:316:0;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:10;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6272:217;6179:316;;;;:::o;325:1102:18:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100c95760003560e01c806347064d6a11610081578063a217fddf1161005b578063a217fddf146101e0578063d087d288146101e8578063d547741f146101f057600080fd5b806347064d6a1461017657806354f6127f1461018957806391d14854146101a957600080fd5b8063248a9ca3116100b2578063248a9ca31461012b5780632f2ff15d1461014e57806336568abe1461016357600080fd5b806301ffc9a7146100ce57806307e2cea5146100f6575b600080fd5b6100e16100dc366004610720565b610203565b60405190151581526020015b60405180910390f35b61011d7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef181565b6040519081526020016100ed565b61011d610139366004610769565b60009081526020819052604090206001015490565b61016161015c366004610782565b61029c565b005b610161610171366004610782565b6102c7565b6101616101843660046107d4565b610318565b61019c610197366004610769565b6103ef565b6040516100ed91906108d5565b6100e16101b7366004610782565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011d600081565b60025461011d565b6101616101fe366004610782565b61050f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061029657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546102b781610534565b6102c18383610541565b50505050565b6001600160a01b0381163314610309576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031382826105eb565b505050565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161034281610534565b60008260405160200161035591906108e8565b60408051601f1981840301815282825280516020918201208383018352808452838201878152600082815260019384905293909320845181559251909450908201906103a1908261098c565b509050506103ad61066e565b7f5b3a25e3ed3193b2faaddbd057f69843f115c62a4cd660ef6e67bb5397e111bf81846002546040516103e293929190610a4c565b60405180910390a1505050565b6000818152600160205260408120546060910361046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f44617461206e6f7420666f756e6400000000000000000000000000000000000060448201526064015b60405180910390fd5b600082815260016020819052604090912001805461048a90610904565b80601f01602080910402602001604051908101604052809291908181526020018280546104b690610904565b80156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b50505050509050919050565b60008281526020819052604090206001015461052a81610534565b6102c183836105eb565b61053e81336106b0565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166105e3576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561059b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610296565b506000610296565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156105e3576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610296565b7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef161069881610534565b600280549060006106a883610a75565b919050555050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661071c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610464565b5050565b60006020828403121561073257600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461076257600080fd5b9392505050565b60006020828403121561077b57600080fd5b5035919050565b6000806040838503121561079557600080fd5b8235915060208301356001600160a01b03811681146107b357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156107e657600080fd5b813567ffffffffffffffff808211156107fe57600080fd5b818401915084601f83011261081257600080fd5b813581811115610824576108246107be565b604051601f8201601f19908116603f0116810190838211818310171561084c5761084c6107be565b8160405282815287602084870101111561086557600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b838110156108a0578181015183820152602001610888565b50506000910152565b600081518084526108c1816020860160208601610885565b601f01601f19169290920160200192915050565b60208152600061076260208301846108a9565b600082516108fa818460208701610885565b9190910192915050565b600181811c9082168061091857607f821691505b60208210810361093857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561031357600081815260208120601f850160051c810160208610156109655750805b601f850160051c820191505b8181101561098457828155600101610971565b505050505050565b815167ffffffffffffffff8111156109a6576109a66107be565b6109ba816109b48454610904565b8461093e565b602080601f8311600181146109ef57600084156109d75750858301515b600019600386901b1c1916600185901b178555610984565b600085815260208120601f198616915b82811015610a1e578886015182559484019460019091019084016109ff565b5085821015610a3c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b838152606060208201526000610a6560608301856108a9565b9050826040830152949350505050565b600060018201610a9557634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201e4465e4522c62caa54368e3ea6d4d76bb0922c24e6d32d041ff75cdf7b06a8864736f6c63430008140033","sourceMap":"325:1102:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:202:0;;;;;;:::i;:::-;;:::i;:::-;;;516:14:21;;509:22;491:41;;479:2;464:18;2565:202:0;;;;;;;;377:62:18;;415:24;377:62;;;;;689:25:21;;;677:2;662:18;377:62:18;543:177:21;3810:120:0;;;;;;:::i;:::-;3875:7;3901:12;;;;;;;;;;:22;;;;3810:120;4226:136;;;;;;:::i;:::-;;:::i;:::-;;5328:245;;;;;;:::i;:::-;;:::i;965:264:18:-;;;;;;:::i;:::-;;:::i;1235:190::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2854:136:0:-;;;;;;:::i;:::-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;;;;2854:136;2187:49;;2232:4;2187:49;;667:81:18;736:5;;667:81;;4642:138:0;;;;;;:::i;:::-;;:::i;2565:202::-;2650:4;2673:47;;;2688:32;2673:47;;:87;;-1:-1:-1;876:25:12;861:40;;;;2724:36:0;2666:94;2565:202;-1:-1:-1;;2565:202:0:o;4226:136::-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;:::-;;4226:136:::0;;;:::o;5328:245::-;-1:-1:-1;;;;;5421:34:0;;735:10:10;5421:34:0;5417:102;;5478:30;;;;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;965:264:18:-;415:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1044:14:18::1;1088:4;1071:22;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;1071:22:18;;::::1;::::0;;;;;;1061:33;;1071:22:::1;1061:33:::0;;::::1;::::0;1123:24;;::::1;::::0;;;;;;;::::1;::::0;;;-1:-1:-1;1105:15:18;;;:7:::1;:15:::0;;;;;;;;:42;;;;;;1061:33;;-1:-1:-1;1105:42:18;;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;;;;;1158:16;:14;:16::i;:::-;1190:32;1202:6;1210:4;1216:5;;1190:32;;;;;;;;:::i;:::-;;;;;;;;1034:195;965:264:::0;;:::o;1235:190::-;1316:11;;;;:7;:11;;;;;:14;1287:13;;1316:19;1312:74;;1351:24;;;;;6855:2:21;1351:24:18;;;6837:21:21;6894:2;6874:18;;;6867:30;6933:16;6913:18;;;6906:44;6967:18;;1351:24:18;;;;;;;;1312:74;1402:11;;;;:7;:11;;;;;;;;:16;1395:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:190;;;:::o;4642:138:0:-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;3199:103::-:0;3265:30;3276:4;735:10:10;3265::0;:30::i;:::-;3199:103;:::o;6179:316::-;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:10;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6466:12;;6730:317;6808:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6824:217;;;6898:5;6866:12;;;;;;;;;;;-1:-1:-1;;;;;6866:29:0;;;;;;;;;;:37;;-1:-1:-1;;6866:37:0;;;6922:40;735:10:10;;6866:12:0;;6922:40;;6898:5;6922:40;-1:-1:-1;6983:4:0;6976:11;;754:81:18;415:24;2464:16:0;2475:4;2464:10;:16::i;:::-;821:5:18::1;:7:::0;;;:5:::1;:7;::::0;::::1;:::i;:::-;;;;;;754:81:::0;:::o;3432:197:0:-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;3515:108;;3565:47;;;;;-1:-1:-1;;;;;7482:55:21;;3565:47:0;;;7464:74:21;7554:18;;;7547:34;;;7437:18;;3565:47:0;7290:297:21;3515:108:0;3432:197;;:::o;14:332:21:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:21:o;725:180::-;784:6;837:2;825:9;816:7;812:23;808:32;805:52;;;853:1;850;843:12;805:52;-1:-1:-1;876:23:21;;725:180;-1:-1:-1;725:180:21:o;910:377::-;978:6;986;1039:2;1027:9;1018:7;1014:23;1010:32;1007:52;;;1055:1;1052;1045:12;1007:52;1091:9;1078:23;1068:33;;1151:2;1140:9;1136:18;1123:32;-1:-1:-1;;;;;1188:5:21;1184:54;1177:5;1174:65;1164:93;;1253:1;1250;1243:12;1164:93;1276:5;1266:15;;;910:377;;;;;:::o;1292:184::-;-1:-1:-1;;;1341:1:21;1334:88;1441:4;1438:1;1431:15;1465:4;1462:1;1455:15;1481:922;1550:6;1603:2;1591:9;1582:7;1578:23;1574:32;1571:52;;;1619:1;1616;1609:12;1571:52;1659:9;1646:23;1688:18;1729:2;1721:6;1718:14;1715:34;;;1745:1;1742;1735:12;1715:34;1783:6;1772:9;1768:22;1758:32;;1828:7;1821:4;1817:2;1813:13;1809:27;1799:55;;1850:1;1847;1840:12;1799:55;1886:2;1873:16;1908:2;1904;1901:10;1898:36;;;1914:18;;:::i;:::-;1989:2;1983:9;1957:2;2043:13;;-1:-1:-1;;2039:22:21;;;2063:2;2035:31;2031:40;2019:53;;;2087:18;;;2107:22;;;2084:46;2081:72;;;2133:18;;:::i;:::-;2173:10;2169:2;2162:22;2208:2;2200:6;2193:18;2248:7;2243:2;2238;2234;2230:11;2226:20;2223:33;2220:53;;;2269:1;2266;2259:12;2220:53;2325:2;2320;2316;2312:11;2307:2;2299:6;2295:15;2282:46;2370:1;2348:15;;;2365:2;2344:24;2337:35;;;;-1:-1:-1;2352:6:21;1481:922;-1:-1:-1;;;;;1481:922:21:o;2408:250::-;2493:1;2503:113;2517:6;2514:1;2511:13;2503:113;;;2593:11;;;2587:18;2574:11;;;2567:39;2539:2;2532:10;2503:113;;;-1:-1:-1;;2650:1:21;2632:16;;2625:27;2408:250::o;2663:271::-;2705:3;2743:5;2737:12;2770:6;2765:3;2758:19;2786:76;2855:6;2848:4;2843:3;2839:14;2832:4;2825:5;2821:16;2786:76;:::i;:::-;2916:2;2895:15;-1:-1:-1;;2891:29:21;2882:39;;;;2923:4;2878:50;;2663:271;-1:-1:-1;;2663:271:21:o;2939:220::-;3088:2;3077:9;3070:21;3051:4;3108:45;3149:2;3138:9;3134:18;3126:6;3108:45;:::i;3346:289::-;3477:3;3515:6;3509:13;3531:66;3590:6;3585:3;3578:4;3570:6;3566:17;3531:66;:::i;:::-;3613:16;;;;;3346:289;-1:-1:-1;;3346:289:21:o;3640:437::-;3719:1;3715:12;;;;3762;;;3783:61;;3837:4;3829:6;3825:17;3815:27;;3783:61;3890:2;3882:6;3879:14;3859:18;3856:38;3853:218;;-1:-1:-1;;;3924:1:21;3917:88;4028:4;4025:1;4018:15;4056:4;4053:1;4046:15;3853:218;;3640:437;;;:::o;4208:545::-;4310:2;4305:3;4302:11;4299:448;;;4346:1;4371:5;4367:2;4360:17;4416:4;4412:2;4402:19;4486:2;4474:10;4470:19;4467:1;4463:27;4457:4;4453:38;4522:4;4510:10;4507:20;4504:47;;;-1:-1:-1;4545:4:21;4504:47;4600:2;4595:3;4591:12;4588:1;4584:20;4578:4;4574:31;4564:41;;4655:82;4673:2;4666:5;4663:13;4655:82;;;4718:17;;;4699:1;4688:13;4655:82;;;4659:3;;;4208:545;;;:::o;4929:1352::-;5055:3;5049:10;5082:18;5074:6;5071:30;5068:56;;;5104:18;;:::i;:::-;5133:97;5223:6;5183:38;5215:4;5209:11;5183:38;:::i;:::-;5177:4;5133:97;:::i;:::-;5285:4;;5349:2;5338:14;;5366:1;5361:663;;;;6068:1;6085:6;6082:89;;;-1:-1:-1;6137:19:21;;;6131:26;6082:89;-1:-1:-1;;4886:1:21;4882:11;;;4878:24;4874:29;4864:40;4910:1;4906:11;;;4861:57;6184:81;;5331:944;;5361:663;4155:1;4148:14;;;4192:4;4179:18;;-1:-1:-1;;5397:20:21;;;5515:236;5529:7;5526:1;5523:14;5515:236;;;5618:19;;;5612:26;5597:42;;5710:27;;;;5678:1;5666:14;;;;5545:19;;5515:236;;;5519:3;5779:6;5770:7;5767:19;5764:201;;;5840:19;;;5834:26;-1:-1:-1;;5923:1:21;5919:14;;;5935:3;5915:24;5911:37;5907:42;5892:58;5877:74;;5764:201;-1:-1:-1;;;;;6011:1:21;5995:14;;;5991:22;5978:36;;-1:-1:-1;4929:1352:21:o;6286:362::-;6491:6;6480:9;6473:25;6534:2;6529;6518:9;6514:18;6507:30;6454:4;6554:45;6595:2;6584:9;6580:18;6572:6;6554:45;:::i;:::-;6546:53;;6635:6;6630:2;6619:9;6615:18;6608:34;6286:362;;;;;;:::o;6996:289::-;7035:3;7056:17;;;7053:197;;-1:-1:-1;;;7103:1:21;7096:88;7207:4;7204:1;7197:15;7235:4;7232:1;7225:15;7053:197;-1:-1:-1;7277:1:21;7266:13;;6996:289::o","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","ORACLE_ROLE()":"07e2cea5","getData(bytes32)":"54f6127f","getNonce()":"d087d288","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setData(string)":"47064d6a","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"UpdatedData\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ORACLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getData\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"setData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"OracleTestContract The OracleTestContract is a example costum contract .\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/contracts/OracleTestContract.sol\":\"OracleTestContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/test/solidity/contracts/OracleTestContract.sol\":{\"keccak256\":\"0xe3647f91f50bbda738ddad4744ee73238f6cffadabef4d6567d7044c330b7ee3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://247a6e56ee102fdefce5e17a54315e348e927dd1f6f9a23348993a52b42585b4\",\"dweb:/ipfs/QmYnrT6j8ueNfVPcohxG1vVrDtCJH4rvqrYShN7jzgvwNn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"string","name":"data","type":"string","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"UpdatedData","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ORACLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getData","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setData"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/contracts/OracleTestContract.sol":"OracleTestContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/test/solidity/contracts/OracleTestContract.sol":{"keccak256":"0xe3647f91f50bbda738ddad4744ee73238f6cffadabef4d6567d7044c330b7ee3","urls":["bzz-raw://247a6e56ee102fdefce5e17a54315e348e927dd1f6f9a23348993a52b42585b4","dweb:/ipfs/QmYnrT6j8ueNfVPcohxG1vVrDtCJH4rvqrYShN7jzgvwNn"],"license":"GPL-3.0"}},"version":1},"id":18} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPNFTokenContract.sol/SATPNFTokenContract.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPNFTokenContract.sol/SATPNFTokenContract.json new file mode 100644 index 0000000000..69e03e3bce --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPNFTokenContract.sol/SATPNFTokenContract.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BRIDGE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OWNER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assign","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"uniqueDescriptor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"uniqueDescriptor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantBridgeRole","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasBridgeRole","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasPermission","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"uniqueDescriptor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApproved","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"uniqueDescriptor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lock","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"uniqueDescriptor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"uniqueDescriptor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"obtainBalance","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"uniqueDescriptor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"noPermission","inputs":[{"name":"adr","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162001d2b38038062001d2b8339810160408190526200003491620001b1565b6040518060400160405280600b81526020016a29a0aa2827232a37b5b2b760a91b8152506040518060400160405280600781526020016614d0551413919560ca1b815250816001908162000089919062000288565b50600262000098828262000288565b505050620000cd7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e826200010260201b60201c565b50620000fa7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f8262000102565b505062000354565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a7576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200015e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001ab565b5060005b92915050565b600060208284031215620001c457600080fd5b81516001600160a01b0381168114620001dc57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020e57607f821691505b6020821081036200022f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028357600081815260208120601f850160051c810160208610156200025e5750805b601f850160051c820191505b818110156200027f578281556001016200026a565b5050505b505050565b81516001600160401b03811115620002a457620002a4620001e3565b620002bc81620002b58454620001f9565b8462000235565b602080601f831160018114620002f45760008415620002db5750858301515b600019600386901b1c1916600185901b1785556200027f565b600085815260208120601f198616915b82811015620003255788860151825594840194600190910190840162000304565b5085821015620003445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6119c780620003646000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b5bfddea116100a2578063d547741f11610071578063d547741f146104a5578063e58378bb146104b8578063e985e9c5146104df578063ea1340711461051b57600080fd5b8063b5bfddea14610445578063b88d4fde1461046c578063be7604881461047f578063c87b56dd1461049257600080fd5b806395d89b41116100de57806395d89b411461040f578063a217fddf14610417578063a22cb4651461041f578063a5e99b8e1461043257600080fd5b806370a08231146103b25780637750c9f01461038c5780638d944fd9146103c557806391d14854146103d857600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e1461036657806342966c681461037957806359508f8f1461038c5780636352211e1461039f57600080fd5b80632f2ff15d1461031a57806336568abe1461032d5780633ae9449d1461034057806340c10f191461035357600080fd5b8063150b7a02116101c3578063150b7a021461027357806323b872dd146102c3578063248a9ca3146102d65780632a16cca41461030757600080fd5b806301ffc9a7146101f557806306fdde031461021e578063081812fc14610233578063095ea7b31461025e575b600080fd5b610209610203366004611580565b50600090565b60405190151581526020015b60405180910390f35b61022661052e565b60405161021591906115ed565b610246610241366004611600565b6105c0565b6040516001600160a01b039091168152602001610215565b61027161026c366004611635565b6105eb565b005b61029261028136600461165f565b630a85bd0160e11b95945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b6102716102d13660046116fa565b6105fa565b6102f96102e4366004611600565b60009081526020819052604090206001015490565b604051908152602001610215565b610209610315366004611635565b6106a3565b610271610328366004611736565b61071e565b61027161033b366004611736565b610743565b6102f961034e366004611762565b610794565b610209610361366004611635565b6107a7565b6102716103743660046116fa565b6107e7565b610209610387366004611600565b610802565b61020961039a3660046116fa565b610917565b6102466103ad366004611600565b610924565b6102f96103c0366004611762565b61092f565b6102096103d3366004611635565b610990565b6102096103e6366004611736565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102266109ea565b6102f9600081565b61027161042d36600461177d565b6109f9565b610209610440366004611762565b610a04565b6102f97f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61027161047a3660046117cf565b610a5a565b61020961048d366004611635565b610a71565b6102266104a0366004611600565b610a8f565b6102716104b3366004611736565b610b03565b6102f97fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b6102096104ed3660046118ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b610209610529366004611762565b610b28565b60606001805461053d906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906118d5565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b60006105cb82610bad565b506000828152600560205260409020546001600160a01b03165b92915050565b6105f6828233610be6565b5050565b6001600160a01b03821661062957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610636838333610bf3565b9050836001600160a01b0316816001600160a01b03161461069d576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610620565b50505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6106cf81610cf9565b60006106da846105c0565b9050806001600160a01b0316856001600160a01b03161480610715575061070084610924565b6001600160a01b0316856001600160a01b0316145b95945050505050565b60008281526020819052604090206001015461073981610cf9565b61069d8383610d06565b6001600160a01b0381163314610785576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078f8282610db0565b505050565b6000806107a08361092f565b9392505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6107d381610cf9565b6107dd8484610e33565b5060019392505050565b61078f83838360405180602001604052806000815250610a5a565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61082e81610cf9565b33600061083a856105c0565b9050806001600160a01b0316826001600160a01b03161480610875575061086085610924565b6001600160a01b0316826001600160a01b0316145b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616c6c6572206973206e6f7420617070726f76656420746f206f706572617460448201527f65206f6e207468697320746f6b656e00000000000000000000000000000000006064820152608401610620565b61090a85610e4d565b6001935050505b50919050565b60006107dd8484846107e7565b60006105e582610bad565b60006001600160a01b038216610974576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b506001600160a01b031660009081526004602052604090205490565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6109bc81610cf9565b6000838152600360205260409020546001600160a01b03166109df818686610e88565b506001949350505050565b60606002805461053d906118d5565b6105f6338383610f05565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e610a3081610cf9565b6107dd7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610d06565b610a658484846105fa565b61069d84848484610fbd565b6000610a86610a7f83610924565b84846107e7565b50600192915050565b6060610a9a82610bad565b506000610ab260408051602081019091526000815290565b90506000815111610ad257604051806020016040528060008152506107a0565b80610adc846110fe565b604051602001610aed929190611909565b6040516020818303038152906040529392505050565b600082815260208190526040902060010154610b1e81610cf9565b61069d8383610db0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff1615610b7057506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6000818152600360205260408120546001600160a01b0316806105e557604051637e27328960e01b815260048101849052602401610620565b61078f838383600161119e565b6000828152600360205260408120546001600160a01b0390811690831615610c2057610c20818486610e88565b6001600160a01b03811615610c5e57610c3d60008560008061119e565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610c8d576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610d0381336112e9565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610da8576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610d603390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e5565b5060006105e5565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610da8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e5565b6105f6828260405180602001604052806000815250611355565b6000610e5c6000836000610bf3565b90506001600160a01b0381166105f657604051637e27328960e01b815260048101839052602401610620565b610e9383838361136c565b61078f576001600160a01b038316610ec157604051637e27328960e01b815260048101829052602401610620565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610620565b6001600160a01b038216610f50576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610fff903390889087908790600401611938565b6020604051808303816000875af192505050801561103a575060408051601f3d908101601f1916820190925261103791810190611974565b60015b6110a3573d808015611068576040519150601f19603f3d011682016040523d82523d6000602084013e61106d565b606091505b50805160000361109b57604051633250574960e11b81526001600160a01b0385166004820152602401610620565b805181602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116630a85bd0160e11b146110f757604051633250574960e11b81526001600160a01b0385166004820152602401610620565b5050505050565b6060600061110b836113f2565b600101905060008167ffffffffffffffff81111561112b5761112b6117b9565b6040519080825280601f01601f191660200182016040528015611155576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461115f57509392505050565b80806111b257506001600160a01b03821615155b156112ac5760006111c284610bad565b90506001600160a01b038316158015906111ee5750826001600160a01b0316816001600160a01b031614155b801561122057506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15611262576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610620565b81156112aa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166105f6576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610620565b61135f83836114d4565b61078f6000848484610fbd565b60006001600160a01b038316158015906113ea5750826001600160a01b0316846001600160a01b031614806113c657506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806113ea57506000828152600560205260409020546001600160a01b038481169116145b949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061143b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611467576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061148557662386f26fc10000830492506010015b6305f5e100831061149d576305f5e100830492506008015b61271083106114b157612710830492506004015b606483106114c3576064830492506002015b600a83106105e55760010192915050565b6001600160a01b0382166114fe57604051633250574960e11b815260006004820152602401610620565b600061150c83836000610bf3565b90506001600160a01b0381161561078f576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0357600080fd5b60006020828403121561159257600080fd5b81356107a081611552565b60005b838110156115b85781810151838201526020016115a0565b50506000910152565b600081518084526115d981602086016020860161159d565b601f01601f19169290920160200192915050565b6020815260006107a060208301846115c1565b60006020828403121561161257600080fd5b5035919050565b80356001600160a01b038116811461163057600080fd5b919050565b6000806040838503121561164857600080fd5b61165183611619565b946020939093013593505050565b60008060008060006080868803121561167757600080fd5b61168086611619565b945061168e60208701611619565b935060408601359250606086013567ffffffffffffffff808211156116b257600080fd5b818801915088601f8301126116c657600080fd5b8135818111156116d557600080fd5b8960208285010111156116e757600080fd5b9699959850939650602001949392505050565b60008060006060848603121561170f57600080fd5b61171884611619565b925061172660208501611619565b9150604084013590509250925092565b6000806040838503121561174957600080fd5b8235915061175960208401611619565b90509250929050565b60006020828403121561177457600080fd5b6107a082611619565b6000806040838503121561179057600080fd5b61179983611619565b9150602083013580151581146117ae57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156117e557600080fd5b6117ee85611619565b93506117fc60208601611619565b925060408501359150606085013567ffffffffffffffff8082111561182057600080fd5b818701915087601f83011261183457600080fd5b813581811115611846576118466117b9565b604051601f8201601f19908116603f0116810190838211818310171561186e5761186e6117b9565b816040528281528a602084870101111561188757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118be57600080fd5b6118c783611619565b915061175960208401611619565b600181811c908216806118e957607f821691505b60208210810361091157634e487b7160e01b600052602260045260246000fd5b6000835161191b81846020880161159d565b83519083019061192f81836020880161159d565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261196a60808301846115c1565b9695505050505050565b60006020828403121561198657600080fd5b81516107a08161155256fea26469706673582212203f5ab80dc6f0b3ee871144587f727bf6705f6dba123b4717d2615eebae48e21064736f6c63430008140033","sourceMap":"671:6324:19:-:0;;;867:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1381:113:6;;;;;;;;;;;;;-1:-1:-1;;;1381:113:6;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:6;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:6;:17;1480:7;1470;:17;:::i;:::-;;1381:113;;938:30:19::1;837:23;961:6;938:10;;;:30;;:::i;:::-;-1:-1:-1::0;978:31:19::1;770:24;1002:6:::0;978:10:::1;:31::i;:::-;;867:149:::0;671:6324;;6179:316:0;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:10;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6272:217;6179:316;;;;:::o;14:290:21:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:21;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:21:o;309:127::-;370:10;365:3;361:20;358:1;351:31;401:4;398:1;391:15;425:4;422:1;415:15;441:380;520:1;516:12;;;;563;;;584:61;;638:4;630:6;626:17;616:27;;584:61;691:2;683:6;680:14;660:18;657:38;654:161;;737:10;732:3;728:20;725:1;718:31;772:4;769:1;762:15;800:4;797:1;790:15;654:161;;441:380;;;:::o;952:545::-;1054:2;1049:3;1046:11;1043:448;;;1090:1;1115:5;1111:2;1104:17;1160:4;1156:2;1146:19;1230:2;1218:10;1214:19;1211:1;1207:27;1201:4;1197:38;1266:4;1254:10;1251:20;1248:47;;;-1:-1:-1;1289:4:21;1248:47;1344:2;1339:3;1335:12;1332:1;1328:20;1322:4;1318:31;1308:41;;1399:82;1417:2;1410:5;1407:13;1399:82;;;1462:17;;;1443:1;1432:13;1399:82;;;1403:3;;;1043:448;952:545;;;:::o;1673:1352::-;1793:10;;-1:-1:-1;;;;;1815:30:21;;1812:56;;;1848:18;;:::i;:::-;1877:97;1967:6;1927:38;1959:4;1953:11;1927:38;:::i;:::-;1921:4;1877:97;:::i;:::-;2029:4;;2093:2;2082:14;;2110:1;2105:663;;;;2812:1;2829:6;2826:89;;;-1:-1:-1;2881:19:21;;;2875:26;2826:89;-1:-1:-1;;1630:1:21;1626:11;;;1622:24;1618:29;1608:40;1654:1;1650:11;;;1605:57;2928:81;;2075:944;;2105:663;899:1;892:14;;;936:4;923:18;;-1:-1:-1;;2141:20:21;;;2259:236;2273:7;2270:1;2267:14;2259:236;;;2362:19;;;2356:26;2341:42;;2454:27;;;;2422:1;2410:14;;;;2289:19;;2259:236;;;2263:3;2523:6;2514:7;2511:19;2508:201;;;2584:19;;;2578:26;-1:-1:-1;;2667:1:21;2663:14;;;2679:3;2659:24;2655:37;2651:42;2636:58;2621:74;;2508:201;-1:-1:-1;;;;;2755:1:21;2739:14;;;2735:22;2722:36;;-1:-1:-1;1673:1352:21:o;:::-;671:6324:19;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b5bfddea116100a2578063d547741f11610071578063d547741f146104a5578063e58378bb146104b8578063e985e9c5146104df578063ea1340711461051b57600080fd5b8063b5bfddea14610445578063b88d4fde1461046c578063be7604881461047f578063c87b56dd1461049257600080fd5b806395d89b41116100de57806395d89b411461040f578063a217fddf14610417578063a22cb4651461041f578063a5e99b8e1461043257600080fd5b806370a08231146103b25780637750c9f01461038c5780638d944fd9146103c557806391d14854146103d857600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e1461036657806342966c681461037957806359508f8f1461038c5780636352211e1461039f57600080fd5b80632f2ff15d1461031a57806336568abe1461032d5780633ae9449d1461034057806340c10f191461035357600080fd5b8063150b7a02116101c3578063150b7a021461027357806323b872dd146102c3578063248a9ca3146102d65780632a16cca41461030757600080fd5b806301ffc9a7146101f557806306fdde031461021e578063081812fc14610233578063095ea7b31461025e575b600080fd5b610209610203366004611580565b50600090565b60405190151581526020015b60405180910390f35b61022661052e565b60405161021591906115ed565b610246610241366004611600565b6105c0565b6040516001600160a01b039091168152602001610215565b61027161026c366004611635565b6105eb565b005b61029261028136600461165f565b630a85bd0160e11b95945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b6102716102d13660046116fa565b6105fa565b6102f96102e4366004611600565b60009081526020819052604090206001015490565b604051908152602001610215565b610209610315366004611635565b6106a3565b610271610328366004611736565b61071e565b61027161033b366004611736565b610743565b6102f961034e366004611762565b610794565b610209610361366004611635565b6107a7565b6102716103743660046116fa565b6107e7565b610209610387366004611600565b610802565b61020961039a3660046116fa565b610917565b6102466103ad366004611600565b610924565b6102f96103c0366004611762565b61092f565b6102096103d3366004611635565b610990565b6102096103e6366004611736565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102266109ea565b6102f9600081565b61027161042d36600461177d565b6109f9565b610209610440366004611762565b610a04565b6102f97f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61027161047a3660046117cf565b610a5a565b61020961048d366004611635565b610a71565b6102266104a0366004611600565b610a8f565b6102716104b3366004611736565b610b03565b6102f97fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b6102096104ed3660046118ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b610209610529366004611762565b610b28565b60606001805461053d906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906118d5565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b60006105cb82610bad565b506000828152600560205260409020546001600160a01b03165b92915050565b6105f6828233610be6565b5050565b6001600160a01b03821661062957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610636838333610bf3565b9050836001600160a01b0316816001600160a01b03161461069d576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610620565b50505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6106cf81610cf9565b60006106da846105c0565b9050806001600160a01b0316856001600160a01b03161480610715575061070084610924565b6001600160a01b0316856001600160a01b0316145b95945050505050565b60008281526020819052604090206001015461073981610cf9565b61069d8383610d06565b6001600160a01b0381163314610785576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078f8282610db0565b505050565b6000806107a08361092f565b9392505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6107d381610cf9565b6107dd8484610e33565b5060019392505050565b61078f83838360405180602001604052806000815250610a5a565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61082e81610cf9565b33600061083a856105c0565b9050806001600160a01b0316826001600160a01b03161480610875575061086085610924565b6001600160a01b0316826001600160a01b0316145b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616c6c6572206973206e6f7420617070726f76656420746f206f706572617460448201527f65206f6e207468697320746f6b656e00000000000000000000000000000000006064820152608401610620565b61090a85610e4d565b6001935050505b50919050565b60006107dd8484846107e7565b60006105e582610bad565b60006001600160a01b038216610974576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b506001600160a01b031660009081526004602052604090205490565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6109bc81610cf9565b6000838152600360205260409020546001600160a01b03166109df818686610e88565b506001949350505050565b60606002805461053d906118d5565b6105f6338383610f05565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e610a3081610cf9565b6107dd7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610d06565b610a658484846105fa565b61069d84848484610fbd565b6000610a86610a7f83610924565b84846107e7565b50600192915050565b6060610a9a82610bad565b506000610ab260408051602081019091526000815290565b90506000815111610ad257604051806020016040528060008152506107a0565b80610adc846110fe565b604051602001610aed929190611909565b6040516020818303038152906040529392505050565b600082815260208190526040902060010154610b1e81610cf9565b61069d8383610db0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff1615610b7057506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6000818152600360205260408120546001600160a01b0316806105e557604051637e27328960e01b815260048101849052602401610620565b61078f838383600161119e565b6000828152600360205260408120546001600160a01b0390811690831615610c2057610c20818486610e88565b6001600160a01b03811615610c5e57610c3d60008560008061119e565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610c8d576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610d0381336112e9565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610da8576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610d603390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e5565b5060006105e5565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610da8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e5565b6105f6828260405180602001604052806000815250611355565b6000610e5c6000836000610bf3565b90506001600160a01b0381166105f657604051637e27328960e01b815260048101839052602401610620565b610e9383838361136c565b61078f576001600160a01b038316610ec157604051637e27328960e01b815260048101829052602401610620565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610620565b6001600160a01b038216610f50576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610fff903390889087908790600401611938565b6020604051808303816000875af192505050801561103a575060408051601f3d908101601f1916820190925261103791810190611974565b60015b6110a3573d808015611068576040519150601f19603f3d011682016040523d82523d6000602084013e61106d565b606091505b50805160000361109b57604051633250574960e11b81526001600160a01b0385166004820152602401610620565b805181602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116630a85bd0160e11b146110f757604051633250574960e11b81526001600160a01b0385166004820152602401610620565b5050505050565b6060600061110b836113f2565b600101905060008167ffffffffffffffff81111561112b5761112b6117b9565b6040519080825280601f01601f191660200182016040528015611155576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461115f57509392505050565b80806111b257506001600160a01b03821615155b156112ac5760006111c284610bad565b90506001600160a01b038316158015906111ee5750826001600160a01b0316816001600160a01b031614155b801561122057506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15611262576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610620565b81156112aa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166105f6576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610620565b61135f83836114d4565b61078f6000848484610fbd565b60006001600160a01b038316158015906113ea5750826001600160a01b0316846001600160a01b031614806113c657506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806113ea57506000828152600560205260409020546001600160a01b038481169116145b949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061143b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611467576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061148557662386f26fc10000830492506010015b6305f5e100831061149d576305f5e100830492506008015b61271083106114b157612710830492506004015b606483106114c3576064830492506002015b600a83106105e55760010192915050565b6001600160a01b0382166114fe57604051633250574960e11b815260006004820152602401610620565b600061150c83836000610bf3565b90506001600160a01b0381161561078f576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0357600080fd5b60006020828403121561159257600080fd5b81356107a081611552565b60005b838110156115b85781810151838201526020016115a0565b50506000910152565b600081518084526115d981602086016020860161159d565b601f01601f19169290920160200192915050565b6020815260006107a060208301846115c1565b60006020828403121561161257600080fd5b5035919050565b80356001600160a01b038116811461163057600080fd5b919050565b6000806040838503121561164857600080fd5b61165183611619565b946020939093013593505050565b60008060008060006080868803121561167757600080fd5b61168086611619565b945061168e60208701611619565b935060408601359250606086013567ffffffffffffffff808211156116b257600080fd5b818801915088601f8301126116c657600080fd5b8135818111156116d557600080fd5b8960208285010111156116e757600080fd5b9699959850939650602001949392505050565b60008060006060848603121561170f57600080fd5b61171884611619565b925061172660208501611619565b9150604084013590509250925092565b6000806040838503121561174957600080fd5b8235915061175960208401611619565b90509250929050565b60006020828403121561177457600080fd5b6107a082611619565b6000806040838503121561179057600080fd5b61179983611619565b9150602083013580151581146117ae57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156117e557600080fd5b6117ee85611619565b93506117fc60208601611619565b925060408501359150606085013567ffffffffffffffff8082111561182057600080fd5b818701915087601f83011261183457600080fd5b813581811115611846576118466117b9565b604051601f8201601f19908116603f0116810190838211818310171561186e5761186e6117b9565b816040528281528a602084870101111561188757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118be57600080fd5b6118c783611619565b915061175960208401611619565b600181811c908216806118e957607f821691505b60208210810361091157634e487b7160e01b600052602260045260246000fd5b6000835161191b81846020880161159d565b83519083019061192f81836020880161159d565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261196a60808301846115c1565b9695505050505050565b60006020828403121561198657600080fd5b81516107a08161155256fea26469706673582212203f5ab80dc6f0b3ee871144587f727bf6705f6dba123b4717d2615eebae48e21064736f6c63430008140033","sourceMap":"671:6324:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6117:131;;;;;;:::i;:::-;-1:-1:-1;6205:12:19;;6117:131;;;;611:14:21;;604:22;586:41;;574:2;559:18;6117:131:19;;;;;;;;2365:89:6;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1743:55:21;;;1725:74;;1713:2;1698:18;3497:154:6;1579:226:21;3323:113:6;;;;;;:::i;:::-;;:::i;:::-;;4508:164:19;;;;;;:::i;:::-;-1:-1:-1;;;4508:164:19;;;;;;;;;;;3257:66:21;3245:79;;;3227:98;;3215:2;3200:18;4508:164:19;3083:248:21;4143:578:6;;;;;;:::i;:::-;;:::i;3810:120:0:-;;;;;;:::i;:::-;3875:7;3901:12;;;;;;;;;;:22;;;;3810:120;;;;4000:25:21;;;3988:2;3973:18;3810:120:0;3854:177:21;5610:277:19;;;;;;:::i;:::-;;:::i;4226:136:0:-;;;;;;:::i;:::-;;:::i;5328:245::-;;;;;;:::i;:::-;;:::i;6848:145:19:-;;;;;;:::i;:::-;;:::i;1379:185::-;;;;;;:::i;:::-;;:::i;4787:132:6:-;;;;;;:::i;:::-;;:::i;1797:397:19:-;;;;;;:::i;:::-;;:::i;4129:182::-;;;;;;:::i;:::-;;:::i;2185:118:6:-;;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;:::i;:::-;;:::i;4985:275:19:-;;;;;;:::i;:::-;;:::i;2854:136:0:-;;;;;;:::i;:::-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;;;;2854:136;2518:93:6;;;:::i;2187:49:0:-;;2232:4;2187:49;;3718:144:6;;;;;;:::i;:::-;;:::i;2434:165:19:-;;;;;;:::i;:::-;;:::i;732:62::-;;770:24;732:62;;4985:208:6;;;;;;:::i;:::-;;:::i;3514:189:19:-;;;;;;:::i;:::-;;:::i;2677:255:6:-;;;;;;:::i;:::-;;:::i;4642:138:0:-;;;;;;:::i;:::-;;:::i;800:60:19:-;;837:23;800:60;;3928:153:6;;;;;;:::i;:::-;-1:-1:-1;;;;;4039:25:6;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153;6454:205:19;;;;;;:::i;:::-;;:::i;2365:89:6:-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:6;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:6;3623:21;3616:28;3497:154;-1:-1:-1;;3497:154:6:o;3323:113::-;3394:35;3403:2;3407:7;735:10:10;3394:8:6;:35::i;:::-;3323:113;;:::o;4143:578::-;-1:-1:-1;;;;;4237:16:6;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:6;;4306:1;4276:33;;;1725:74:21;1698:18;;4276:33:6;;;;;;;;4233:87;4538:21;4562:34;4570:2;4574:7;735:10:10;4562:7:6;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:6;:13;-1:-1:-1;;;;;4610:21:6;;4606:109;;4654:50;;;;;-1:-1:-1;;;;;7340:15:21;;;4654:50:6;;;7322:34:21;7372:18;;;7365:34;;;7435:15;;7415:18;;;7408:43;7234:18;;4654:50:6;7059:398:21;4606:109:6;4223:498;4143:578;;;:::o;5610:277:19:-;5718:12;770:24;2464:16:0;2475:4;2464:10;:16::i;:::-;5742:22:19::1;5767:29;5779:16;5767:11;:29::i;:::-;5742:54;;5825:14;-1:-1:-1::0;;;;;5814:25:19::1;:7;-1:-1:-1::0;;;;;5814:25:19::1;;:65;;;;5854:25;5862:16;5854:7;:25::i;:::-;-1:-1:-1::0;;;;;5843:36:19::1;:7;-1:-1:-1::0;;;;;5843:36:19::1;;5814:65;5806:74:::0;5610:277;-1:-1:-1;;;;;5610:277:19:o;4226:136:0:-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;5328:245::-:0;-1:-1:-1;;;;;5421:34:0;;735:10:10;5421:34:0;5417:102;;5478:30;;;;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;6848:145:19:-;6911:15;6938:9;6950:18;6960:7;6950:9;:18::i;:::-;6938:30;6848:145;-1:-1:-1;;;6848:145:19:o;1379:185::-;1476:12;770:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1500:36:19::1;1510:7;1519:16;1500:9;:36::i;:::-;-1:-1:-1::0;1553:4:19::1;::::0;1379:185;-1:-1:-1;;;1379:185:19:o;4787:132:6:-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;1797:397:19:-;1877:12;770:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1918:10:19::1;1901:14;1963:29;1975:16:::0;1963:11:::1;:29::i;:::-;1938:54;;2020:14;-1:-1:-1::0;;;;;2010:24:19::1;:6;-1:-1:-1::0;;;;;2010:24:19::1;;:63;;;;2048:25;2056:16;2048:7;:25::i;:::-;-1:-1:-1::0;;;;;2038:35:19::1;:6;-1:-1:-1::0;;;;;2038:35:19::1;;2010:63;2002:123;;;::::0;::::1;::::0;;7664:2:21;2002:123:19::1;::::0;::::1;7646:21:21::0;7703:2;7683:18;;;7676:30;7742:34;7722:18;;;7715:62;7813:17;7793:18;;;7786:45;7848:19;;2002:123:19::1;7462:411:21::0;2002:123:19::1;2135:23;2141:16;2135:5;:23::i;:::-;2183:4;2176:11;;;;2490:1:0;1797:397:19::0;;;;:::o;4129:182::-;4215:12;4239:44;4256:4;4262:2;4266:16;4239;:44::i;2185:118:6:-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:6;;2002:87;;2048:30;;;;;2075:1;2048:30;;;1725:74:21;1698:18;;2048:30:6;1579:226:21;2002:87:6;-1:-1:-1;;;;;;2105:16:6;;;;;:9;:16;;;;;;;1920:208::o;4985:275:19:-;5096:12;770:24;2464:16:0;2475:4;2464:10;:16::i;:::-;5120:18:19::1;5799:16:6::0;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:6;5177:55:19::1;5799:16:6::0;5206:7:19;5799:16:6;5177::19::1;:55::i;:::-;-1:-1:-1::0;5249:4:19::1;::::0;4985:275;-1:-1:-1;;;;4985:275:19:o;2518:93:6:-;2565:13;2597:7;2590:14;;;;;:::i;3718:144::-;3803:52;735:10:10;3836:8:6;3846;3803:18;:52::i;2434:165:19:-;2515:12;837:23;2464:16:0;2475:4;2464:10;:16::i;:::-;2539:32:19::1;770:24;2563:7;2539:10;:32::i;4985:208:6:-:0;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;3514:189:19:-;3586:12;3610:65;3627:25;3635:16;3627:7;:25::i;:::-;3654:2;3658:16;3610;:65::i;:::-;-1:-1:-1;3692:4:19;3514:189;;;;:::o;2677:255:6:-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:6;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2843:82;2677:255;-1:-1:-1;;;2677:255:6:o;4642:138:0:-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;6454:205:19:-:0;-1:-1:-1;;;;;2954:29:0;;6517:12:19;2954:29:0;;;:12;;:29;:12;:29;;;;;6541:69:19;;;-1:-1:-1;6595:4:19;;6454:205;-1:-1:-1;6454:205:19:o;6541:69::-;6631:21;;;;;-1:-1:-1;;;;;1743:55:21;;6631:21:19;;;1725:74:21;1698:18;;6631:21:19;1579:226:21;16138:241:6;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:6;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:6;;;;;4000:25:21;;;3973:18;;16309:31:6;3854:177:21;14418:120:6;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;8838:795::-;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:6;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:6;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:6;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:6;;;9157:256;-1:-1:-1;;;;;9427:16:6;;;9423:107;;-1:-1:-1;;;;;9487:13:6;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;9540:21:6;-1:-1:-1;;;;;9540:21:6;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:6:o;3199:103:0:-;3265:30;3276:4;735:10:10;3265::0;:30::i;:::-;3199:103;:::o;6179:316::-;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:10;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6466:12;;6730:317;6808:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6824:217;;;6898:5;6866:12;;;;;;;;;;;-1:-1:-1;;;;;6866:29:0;;;;;;;;;;:37;;-1:-1:-1;;6866:37:0;;;6922:40;735:10:10;;6866:12:0;;6922:40;;6898:5;6922:40;-1:-1:-1;6983:4:0;6976:11;;10633:100:6;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;11462:227::-;11513:21;11537:40;11553:1;11557:7;11574:1;11537:7;:40::i;:::-;11513:64;-1:-1:-1;;;;;;11591:27:6;;11587:96;;11641:31;;-1:-1:-1;;;11641:31:6;;;;;4000:25:21;;;3973:18;;11641:31:6;3854:177:21;7082:368:6;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:6;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:6;;;;;4000:25:21;;;3973:18;;7298:31:6;3854:177:21;7248:186:6;7375:44;;;;;-1:-1:-1;;;;;8571:55:21;;7375:44:6;;;8553:74:21;8643:18;;;8636:34;;;8526:18;;7375:44:6;8379:297:21;15591:312:6;-1:-1:-1;;;;;15698:22:6;;15694:91;;15743:31;;;;;-1:-1:-1;;;;;1743:55:21;;15743:31:6;;;1725:74:21;1698:18;;15743:31:6;1579:226:21;15694:91:6;-1:-1:-1;;;;;15794:25:6;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:6;;;;;;;;;;15855:41;;586::21;;;15855::6;;559:18:21;15855:41:6;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:6;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:6;;-1:-1:-1;;;;;17072:36:6;;;;;:71;;735:10:10;;17123:4:6;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:6;;;;;;;;-1:-1:-1;;17072:71:6;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:6;;-1:-1:-1;;;;;1743:55:21;;17430:25:6;;;1725:74:21;1698:18;;17430:25:6;1579:226:21;17377:293:6;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;17190:51;;;-1:-1:-1;;;17190:51:6;17186:130;;17272:25;;-1:-1:-1;;;17272:25:6;;-1:-1:-1;;;;;1743:55:21;;17272:25:6;;;1725:74:21;1698:18;;17272:25:6;1579:226:21;17186:130:6;17144:186;16918:782;;;;:::o;637:698:11:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:11;-1:-1:-1;794:41:11;-1:-1:-1;955:28:11;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:11;1180:10;1175:2;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:11;1010:282;1256:21;-1:-1:-1;1312:6:11;637:698;-1:-1:-1;;;637:698:11:o;14720:662:6:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:6;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:6;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:6;:5;-1:-1:-1;;;;;15115:13:6;;;15093:35;:69;;;;-1:-1:-1;;;;;;4039:25:6;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;15132:30;15093:69;15089:142;;;15189:27;;;;;-1:-1:-1;;;;;1743:55:21;;15189:27:6;;;1725:74:21;1698:18;;15189:27:6;1579:226:21;15089:142:6;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:6;15292:5;-1:-1:-1;;;;;15283:28:6;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:6;;;;:15;:24;;;;;:29;;-1:-1:-1;;15346:29:6;-1:-1:-1;;;;;15346:29:6;;;;;;;;;;14720:662::o;3432:197:0:-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;3515:108;;3565:47;;;;;-1:-1:-1;;;;;8571:55:21;;3565:47:0;;;8553:74:21;8643:18;;;8636:34;;;8526:18;;3565:47:0;8379:297:21;10954:182:6;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;6376:272::-;6479:4;-1:-1:-1;;;;;6514:21:6;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:6;:5;-1:-1:-1;;;;;6552:16:6;;:52;;;-1:-1:-1;;;;;;4039:25:6;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;6572:32;6552:88;;;-1:-1:-1;6008:7:6;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:6;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:6:o;12214:916:14:-;12267:7;;12351:8;12342:17;;12338:103;;12388:8;12379:17;;;-1:-1:-1;12424:2:14;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:14;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:14;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:14;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:14;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:14;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:14:o;9955:327:6:-;-1:-1:-1;;;;;10022:16:6;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:6;;10091:1;10061:33;;;1725:74:21;1698:18;;10061:33:6;1579:226:21;10018:87:6;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:6;;;10180:96;;10234:31;;;;;10262:1;10234:31;;;1725:74:21;1698:18;;10234:31:6;1579:226:21;14:177;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:250::-;723:1;733:113;747:6;744:1;741:13;733:113;;;823:11;;;817:18;804:11;;;797:39;769:2;762:10;733:113;;;-1:-1:-1;;880:1:21;862:16;;855:27;638:250::o;893:271::-;935:3;973:5;967:12;1000:6;995:3;988:19;1016:76;1085:6;1078:4;1073:3;1069:14;1062:4;1055:5;1051:16;1016:76;:::i;:::-;1146:2;1125:15;-1:-1:-1;;1121:29:21;1112:39;;;;1153:4;1108:50;;893:271;-1:-1:-1;;893:271:21:o;1169:220::-;1318:2;1307:9;1300:21;1281:4;1338:45;1379:2;1368:9;1364:18;1356:6;1338:45;:::i;1394:180::-;1453:6;1506:2;1494:9;1485:7;1481:23;1477:32;1474:52;;;1522:1;1519;1512:12;1474:52;-1:-1:-1;1545:23:21;;1394:180;-1:-1:-1;1394:180:21:o;1810:196::-;1878:20;;-1:-1:-1;;;;;1927:54:21;;1917:65;;1907:93;;1996:1;1993;1986:12;1907:93;1810:196;;;:::o;2011:254::-;2079:6;2087;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;2179:29;2198:9;2179:29;:::i;:::-;2169:39;2255:2;2240:18;;;;2227:32;;-1:-1:-1;;;2011:254:21:o;2270:808::-;2367:6;2375;2383;2391;2399;2452:3;2440:9;2431:7;2427:23;2423:33;2420:53;;;2469:1;2466;2459:12;2420:53;2492:29;2511:9;2492:29;:::i;:::-;2482:39;;2540:38;2574:2;2563:9;2559:18;2540:38;:::i;:::-;2530:48;;2625:2;2614:9;2610:18;2597:32;2587:42;;2680:2;2669:9;2665:18;2652:32;2703:18;2744:2;2736:6;2733:14;2730:34;;;2760:1;2757;2750:12;2730:34;2798:6;2787:9;2783:22;2773:32;;2843:7;2836:4;2832:2;2828:13;2824:27;2814:55;;2865:1;2862;2855:12;2814:55;2905:2;2892:16;2931:2;2923:6;2920:14;2917:34;;;2947:1;2944;2937:12;2917:34;2992:7;2987:2;2978:6;2974:2;2970:15;2966:24;2963:37;2960:57;;;3013:1;3010;3003:12;2960:57;2270:808;;;;-1:-1:-1;2270:808:21;;-1:-1:-1;3044:2:21;3036:11;;3066:6;2270:808;-1:-1:-1;;;2270:808:21:o;3336:328::-;3413:6;3421;3429;3482:2;3470:9;3461:7;3457:23;3453:32;3450:52;;;3498:1;3495;3488:12;3450:52;3521:29;3540:9;3521:29;:::i;:::-;3511:39;;3569:38;3603:2;3592:9;3588:18;3569:38;:::i;:::-;3559:48;;3654:2;3643:9;3639:18;3626:32;3616:42;;3336:328;;;;;:::o;4036:254::-;4104:6;4112;4165:2;4153:9;4144:7;4140:23;4136:32;4133:52;;;4181:1;4178;4171:12;4133:52;4217:9;4204:23;4194:33;;4246:38;4280:2;4269:9;4265:18;4246:38;:::i;:::-;4236:48;;4036:254;;;;;:::o;4295:186::-;4354:6;4407:2;4395:9;4386:7;4382:23;4378:32;4375:52;;;4423:1;4420;4413:12;4375:52;4446:29;4465:9;4446:29;:::i;4668:347::-;4733:6;4741;4794:2;4782:9;4773:7;4769:23;4765:32;4762:52;;;4810:1;4807;4800:12;4762:52;4833:29;4852:9;4833:29;:::i;:::-;4823:39;;4912:2;4901:9;4897:18;4884:32;4959:5;4952:13;4945:21;4938:5;4935:32;4925:60;;4981:1;4978;4971:12;4925:60;5004:5;4994:15;;;4668:347;;;;;:::o;5020:184::-;-1:-1:-1;;;5069:1:21;5062:88;5169:4;5166:1;5159:15;5193:4;5190:1;5183:15;5209:1138;5304:6;5312;5320;5328;5381:3;5369:9;5360:7;5356:23;5352:33;5349:53;;;5398:1;5395;5388:12;5349:53;5421:29;5440:9;5421:29;:::i;:::-;5411:39;;5469:38;5503:2;5492:9;5488:18;5469:38;:::i;:::-;5459:48;;5554:2;5543:9;5539:18;5526:32;5516:42;;5609:2;5598:9;5594:18;5581:32;5632:18;5673:2;5665:6;5662:14;5659:34;;;5689:1;5686;5679:12;5659:34;5727:6;5716:9;5712:22;5702:32;;5772:7;5765:4;5761:2;5757:13;5753:27;5743:55;;5794:1;5791;5784:12;5743:55;5830:2;5817:16;5852:2;5848;5845:10;5842:36;;;5858:18;;:::i;:::-;5933:2;5927:9;5901:2;5987:13;;-1:-1:-1;;5983:22:21;;;6007:2;5979:31;5975:40;5963:53;;;6031:18;;;6051:22;;;6028:46;6025:72;;;6077:18;;:::i;:::-;6117:10;6113:2;6106:22;6152:2;6144:6;6137:18;6192:7;6187:2;6182;6178;6174:11;6170:20;6167:33;6164:53;;;6213:1;6210;6203:12;6164:53;6269:2;6264;6260;6256:11;6251:2;6243:6;6239:15;6226:46;6314:1;6309:2;6304;6296:6;6292:15;6288:24;6281:35;6335:6;6325:16;;;;;;;5209:1138;;;;;;;:::o;6352:260::-;6420:6;6428;6481:2;6469:9;6460:7;6456:23;6452:32;6449:52;;;6497:1;6494;6487:12;6449:52;6520:29;6539:9;6520:29;:::i;:::-;6510:39;;6568:38;6602:2;6591:9;6587:18;6568:38;:::i;6617:437::-;6696:1;6692:12;;;;6739;;;6760:61;;6814:4;6806:6;6802:17;6792:27;;6760:61;6867:2;6859:6;6856:14;6836:18;6833:38;6830:218;;-1:-1:-1;;;6901:1:21;6894:88;7005:4;7002:1;6995:15;7033:4;7030:1;7023:15;7878:496;8057:3;8095:6;8089:13;8111:66;8170:6;8165:3;8158:4;8150:6;8146:17;8111:66;:::i;:::-;8240:13;;8199:16;;;;8262:70;8240:13;8199:16;8309:4;8297:17;;8262:70;:::i;:::-;8348:20;;7878:496;-1:-1:-1;;;;7878:496:21:o;8681:512::-;8875:4;-1:-1:-1;;;;;8985:2:21;8977:6;8973:15;8962:9;8955:34;9037:2;9029:6;9025:15;9020:2;9009:9;9005:18;8998:43;;9077:6;9072:2;9061:9;9057:18;9050:34;9120:3;9115:2;9104:9;9100:18;9093:31;9141:46;9182:3;9171:9;9167:19;9159:6;9141:46;:::i;:::-;9133:54;8681:512;-1:-1:-1;;;;;;8681:512:21:o;9198:249::-;9267:6;9320:2;9308:9;9299:7;9295:23;9291:32;9288:52;;;9336:1;9333;9326:12;9288:52;9368:9;9362:16;9387:30;9411:5;9387:30;:::i","linkReferences":{}},"methodIdentifiers":{"BRIDGE_ROLE()":"b5bfddea","DEFAULT_ADMIN_ROLE()":"a217fddf","OWNER_ROLE()":"e58378bb","approve(address,uint256)":"095ea7b3","assign(address,uint256)":"be760488","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","getApproved(uint256)":"081812fc","getRoleAdmin(bytes32)":"248a9ca3","grantBridgeRole(address)":"a5e99b8e","grantRole(bytes32,address)":"2f2ff15d","hasBridgeRole(address)":"ea134071","hasPermission(address,uint256)":"8d944fd9","hasRole(bytes32,address)":"91d14854","isApproved(address,uint256)":"2a16cca4","isApprovedForAll(address,address)":"e985e9c5","lock(address,address,uint256)":"7750c9f0","mint(address,uint256)":"40c10f19","name()":"06fdde03","obtainBalance(address)":"3ae9449d","onERC721Received(address,address,uint256,bytes)":"150b7a02","ownerOf(uint256)":"6352211e","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","unlock(address,address,uint256)":"59508f8f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adr\",\"type\":\"address\"}],\"name\":\"noPermission\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BRIDGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OWNER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uniqueDescriptor\",\"type\":\"uint256\"}],\"name\":\"assign\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uniqueDescriptor\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantBridgeRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasBridgeRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uniqueDescriptor\",\"type\":\"uint256\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uniqueDescriptor\",\"type\":\"uint256\"}],\"name\":\"isApproved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uniqueDescriptor\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uniqueDescriptor\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"obtainBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uniqueDescriptor\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"assign(address,uint256)\":{\"params\":{\"to\":\"The address to assign the token to.\",\"uniqueDescriptor\":\"The unique identifier of the token to assign.\"},\"returns\":{\"success\":\"A boolean indicating if the operation was successful.\"}},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(uint256)\":{\"params\":{\"uniqueDescriptor\":\"The unique identifier of the token to burn.\"},\"returns\":{\"success\":\"A boolean indicating the success of the burn operation.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantBridgeRole(address)\":{\"params\":{\"account\":\"The address to grant the bridge role to.\"},\"returns\":{\"success\":\"A boolean indicating the success of the operation.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasBridgeRole(address)\":{\"params\":{\"account\":\"The account to check.\"},\"returns\":{\"success\":\"A boolean that indicates if the account has the role.\"}},\"hasPermission(address,uint256)\":{\"params\":{\"account\":\"The account to check for permission.\",\"uniqueDescriptor\":\"The unique identifier of the token.\"},\"returns\":{\"success\":\"A boolean indicating if the account has permission.\"}},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApproved(address,uint256)\":{\"params\":{\"account\":\"The account to check for approval.\",\"uniqueDescriptor\":\"The unique identifier of the token.\"},\"returns\":{\"success\":\"A boolean indicating if the account is approved.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"lock(address,address,uint256)\":{\"params\":{\"from\":\"The origin address of the token.\",\"to\":\"The address to transfer the token to.\",\"uniqueDescriptor\":\"The unique identifier of the token to lock/transfer.\"},\"returns\":{\"success\":\"A boolean indicating if the operation was successful.\"}},\"mint(address,uint256)\":{\"params\":{\"account\":\"The address to mint the token to.\",\"uniqueDescriptor\":\"The uniqueDescriptor of the token to mint.\"},\"returns\":{\"success\":\"A boolean indicating the success of the minting operation.\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"obtainBalance(address)\":{\"params\":{\"account\":\"The account to check the balance of.\"},\"returns\":{\"balance\":\"The balance of the account.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"returns\":{\"_0\":\"success A boolean indicating if the account has the bridge role.\"}},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"returns\":{\"success\":\"A boolean indicating if the interface is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"unlock(address,address,uint256)\":{\"params\":{\"from\":\"The address from which the token is being transferred.\",\"to\":\"The address to which the token is being transferred.\",\"uniqueDescriptor\":\"The unique identifier of the token to unlock.\"},\"returns\":{\"success\":\"A boolean indicating if the operation was successful.\"}}},\"title\":\"SATPTokenContract The SATPTokenContract is an example of a custom ERC721 token contract. It uses safe versions of critical ERC721 functions, which require the address performing calls to tokens to have some form of pre approval.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"assign(address,uint256)\":{\"notice\":\"Assigns a token to a new owner. This is used when transferring ownership of a token.\"},\"burn(uint256)\":{\"notice\":\"Burns a token given its uniqueDescriptor.\"},\"grantBridgeRole(address)\":{\"notice\":\"Grants the bridge role to a specified account over this contract.\"},\"hasBridgeRole(address)\":{\"notice\":\"Checks if the given account has the given role.\"},\"hasPermission(address,uint256)\":{\"notice\":\"Checks if the given account has permission to perform an action on a token.\"},\"isApproved(address,uint256)\":{\"notice\":\"For test usage, allows the bridge to check if a certain address is the one currently approved to deal with an asset.\"},\"lock(address,address,uint256)\":{\"notice\":\"Transfers a token from an address to another address. In this case, it is used when locking a token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints a new token given a new uniqueDescriptor. This function expects the tokenId to not have been minted before.\"},\"obtainBalance(address)\":{\"notice\":\"Obtains the balance of the given account.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"REQUIRED by OpenZeppelin: Supports the use of safe functions for ERC721 tokens.\"},\"supportsInterface(bytes4)\":{\"notice\":\"REQUIRED by OpenZeppelin: Returns true if this contract implements a certain interface represented by an interfaceId.\"},\"unlock(address,address,uint256)\":{\"notice\":\"Transfers a token from one address to another. This is used when releasing a locked token.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/contracts/SATPNFTokenContract.sol\":\"SATPNFTokenContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"src/test/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/test/solidity/contracts/SATPNFTokenContract.sol\":{\"keccak256\":\"0x4ff4461689b2efb6431a3e47fa8be0bf16071e14fe76fb27652959fd20d1f6d2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3e7342af17c3ae08f4690c9ec86878651b68e95d44717438b4cda06720c31bcc\",\"dweb:/ipfs/QmcNgbY7qAm3K2YHu1Q5cYDryUGGFo5hUrEoEaGQ3AmFaC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"type":"error","name":"noPermission"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OWNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uniqueDescriptor","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"assign","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"uniqueDescriptor","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantBridgeRole","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasBridgeRole","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"uniqueDescriptor","type":"uint256"}],"stateMutability":"view","type":"function","name":"hasPermission","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"uniqueDescriptor","type":"uint256"}],"stateMutability":"view","type":"function","name":"isApproved","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uniqueDescriptor","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"uniqueDescriptor","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"obtainBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uniqueDescriptor","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"assign(address,uint256)":{"params":{"to":"The address to assign the token to.","uniqueDescriptor":"The unique identifier of the token to assign."},"returns":{"success":"A boolean indicating if the operation was successful."}},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"burn(uint256)":{"params":{"uniqueDescriptor":"The unique identifier of the token to burn."},"returns":{"success":"A boolean indicating the success of the burn operation."}},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantBridgeRole(address)":{"params":{"account":"The address to grant the bridge role to."},"returns":{"success":"A boolean indicating the success of the operation."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasBridgeRole(address)":{"params":{"account":"The account to check."},"returns":{"success":"A boolean that indicates if the account has the role."}},"hasPermission(address,uint256)":{"params":{"account":"The account to check for permission.","uniqueDescriptor":"The unique identifier of the token."},"returns":{"success":"A boolean indicating if the account has permission."}},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"isApproved(address,uint256)":{"params":{"account":"The account to check for approval.","uniqueDescriptor":"The unique identifier of the token."},"returns":{"success":"A boolean indicating if the account is approved."}},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"lock(address,address,uint256)":{"params":{"from":"The origin address of the token.","to":"The address to transfer the token to.","uniqueDescriptor":"The unique identifier of the token to lock/transfer."},"returns":{"success":"A boolean indicating if the operation was successful."}},"mint(address,uint256)":{"params":{"account":"The address to mint the token to.","uniqueDescriptor":"The uniqueDescriptor of the token to mint."},"returns":{"success":"A boolean indicating the success of the minting operation."}},"name()":{"details":"See {IERC721Metadata-name}."},"obtainBalance(address)":{"params":{"account":"The account to check the balance of."},"returns":{"balance":"The balance of the account."}},"onERC721Received(address,address,uint256,bytes)":{"returns":{"_0":"success A boolean indicating if the account has the bridge role."}},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"returns":{"success":"A boolean indicating if the interface is supported."}},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"unlock(address,address,uint256)":{"params":{"from":"The address from which the token is being transferred.","to":"The address to which the token is being transferred.","uniqueDescriptor":"The unique identifier of the token to unlock."},"returns":{"success":"A boolean indicating if the operation was successful."}}},"version":1},"userdoc":{"kind":"user","methods":{"assign(address,uint256)":{"notice":"Assigns a token to a new owner. This is used when transferring ownership of a token."},"burn(uint256)":{"notice":"Burns a token given its uniqueDescriptor."},"grantBridgeRole(address)":{"notice":"Grants the bridge role to a specified account over this contract."},"hasBridgeRole(address)":{"notice":"Checks if the given account has the given role."},"hasPermission(address,uint256)":{"notice":"Checks if the given account has permission to perform an action on a token."},"isApproved(address,uint256)":{"notice":"For test usage, allows the bridge to check if a certain address is the one currently approved to deal with an asset."},"lock(address,address,uint256)":{"notice":"Transfers a token from an address to another address. In this case, it is used when locking a token."},"mint(address,uint256)":{"notice":"Mints a new token given a new uniqueDescriptor. This function expects the tokenId to not have been minted before."},"obtainBalance(address)":{"notice":"Obtains the balance of the given account."},"onERC721Received(address,address,uint256,bytes)":{"notice":"REQUIRED by OpenZeppelin: Supports the use of safe functions for ERC721 tokens."},"supportsInterface(bytes4)":{"notice":"REQUIRED by OpenZeppelin: Returns true if this contract implements a certain interface represented by an interfaceId."},"unlock(address,address,uint256)":{"notice":"Transfers a token from one address to another. This is used when releasing a locked token."}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/contracts/SATPNFTokenContract.sol":"SATPNFTokenContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"src/test/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/test/solidity/contracts/SATPNFTokenContract.sol":{"keccak256":"0x4ff4461689b2efb6431a3e47fa8be0bf16071e14fe76fb27652959fd20d1f6d2","urls":["bzz-raw://3e7342af17c3ae08f4690c9ec86878651b68e95d44717438b4cda06720c31bcc","dweb:/ipfs/QmcNgbY7qAm3K2YHu1Q5cYDryUGGFo5hUrEoEaGQ3AmFaC"],"license":"GPL-3.0"}},"version":1},"id":19} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPNFTokenContractTest.sol/SATPNFTokenContractTest.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPNFTokenContractTest.sol/SATPNFTokenContractTest.json new file mode 100644 index 0000000000..649788abce --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPNFTokenContractTest.sol/SATPNFTokenContractTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"bridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testApprove","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testLock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintAndCheckBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTokenNameAndSymbol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"user","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600560809081526437bbb732b960d91b60a0526200003f9062000101565b601c80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600681526562726964676560d01b6020820152620000879062000101565b601d80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152633ab9b2b960e11b6020820152620000cd9062000101565b601e80546001600160a01b0319166001600160a01b0392909216919091179055348015620000fa57600080fd5b50620002ee565b60006200010e8262000115565b5092915050565b600080826040516020016200012b91906200025a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd919062000278565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001fb9085908790600401620002aa565b600060405180830381600087803b1580156200021657600080fd5b505af11580156200022b573d6000803e3d6000fd5b50505050915091565b60005b838110156200025157818101518382015260200162000237565b50506000910152565b600082516200026e81846020870162000234565b9190910192915050565b6000602082840312156200028b57600080fd5b81516001600160a01b0381168114620002a357600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620002d981606085016020870162000234565b601f01601f1916919091016060019392505050565b6143ca80620002fe6000396000f3fe60806040523480156200001157600080fd5b5060043610620001895760003560e01c80638da5cb5b11620000dd578063e13aba48116200008b578063e78cea92116200006e578063e78cea9214620002ae578063e96d88e014620002c2578063fa7626d414620002cc57600080fd5b8063e13aba48146200029a578063e20c9f7114620002a457600080fd5b8063b5508aa911620000c0578063b5508aa9146200026b578063ba414fa61462000275578063c2745ada146200029057600080fd5b80638da5cb5b146200024d578063916a17c6146200026157600080fd5b80633f7286f4116200013b57806366d9a9a0116200011e57806366d9a9a014620002115780636f2c893c146200022a57806385226c81146200023457600080fd5b80633f7286f414620001da5780634f8632ba14620001e457600080fd5b80631ed7831c11620001705780631ed7831c14620001a4578063218e00ff14620001c65780633e5e3c2314620001d057600080fd5b80630a9254e4146200018e5780631aeb10a6146200019a575b600080fd5b62000198620002da565b005b62000198620005d8565b620001ae6200094f565b604051620001bd919062002122565b60405180910390f35b62000198620009b3565b620001ae62000b4d565b620001ae62000baf565b601e54620001f8906001600160a01b031681565b6040516001600160a01b039091168152602001620001bd565b6200021b62000c11565b604051620001bd919062002171565b6200019862000d19565b6200023e62000f18565b604051620001bd919062002294565b601c54620001f8906001600160a01b031681565b6200021b62000ff2565b6200023e620010f1565b6200027f620011cb565b6040519015158152602001620001bd565b6200019862001300565b62000198620015f7565b620001ae620017ec565b601d54620001f8906001600160a01b031681565b620001986200184e565b6000546200027f9060ff1681565b601c5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200033457600080fd5b505af115801562000349573d6000803e3d6000fd5b5050601c546040516001600160a01b0390911692506200036a915062002114565b6001600160a01b039091168152602001604051809103906000f08015801562000397573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c546040516303223eab60e11b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b5050601b54601d546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c49190620022fa565b50601b54601d546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200055e92919091169063ea13407190602401602060405180830381865afa15801562000532573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005589190620022fa565b620019e8565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620005bd57600080fd5b505af1158015620005d2573d6000803e3d6000fd5b50505050565b6103e9620005e68162001a60565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200064057600080fd5b505af115801562000655573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018690529116925063095ea7b39150604401600060405180830381600087803b158015620006aa57600080fd5b505af1158015620006bf573d6000803e3d6000fd5b5050601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200071d57600080fd5b505af115801562000732573d6000803e3d6000fd5b5050601b546040517f081812fc00000000000000000000000000000000000000000000000000000000815260048101859052600093506001600160a01b03909116915063081812fc90602401602060405180830381865afa1580156200079c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007c2919062002325565b601d5460408051808201909152601981527f417070726f76616c2061646472657373206d69736d61746368000000000000006020820152919250620008139183916001600160a01b03169062001b4f565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200086d57600080fd5b505af115801562000882573d6000803e3d6000fd5b5050601b546040516331a9108f60e11b815260048101869052600093506001600160a01b039091169150636352211e90602401602060405180830381865afa158015620008d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008f9919062002325565b601e5460408051808201909152601681527f4f776e65722061646472657373206d69736d617463680000000000000000000060208201529192506200094a9183916001600160a01b03169062001b4f565b505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620009a957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200098a575b5050505050905090565b601b54604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905162000a7f926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562000a19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a43919081019062002366565b6040518060400160405280600b81526020017f534154504e46546f6b656e00000000000000000000000000000000000000000081525062001bae565b601b54604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905162000b4b926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562000ae5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b0f919081019062002366565b6040518060400160405280600781526020017f534154504e46540000000000000000000000000000000000000000000000000081525062001bae565b565b6060600f805480602002602001604051908101604052809291908181526020018280548015620009a9576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200098a575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620009a9576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200098a575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000d105760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000cf757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000ca35790505b5050505050815250508152602001906001019062000c35565b50505050905090565b601d5460405163ca669fa760e01b81526001600160a01b0390911660048201526103e990737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000d7757600080fd5b505af115801562000d8c573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000de6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e0c9190620022fa565b50601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000e909291909116906370a08231906024015b602060405180830381865afa15801562000e62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e8891906200241f565b600162001d10565b601b546040516331a9108f60e11b81526004810183905262000f15916001600160a01b031690636352211e90602401602060405180830381865afa15801562000edd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062002325565b601e546001600160a01b031662001e10565b50565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000d1057838290600052602060002001805462000f5e9062002439565b80601f016020809104026020016040519081016040528092919081815260200182805462000f8c9062002439565b801562000fdd5780601f1062000fb15761010080835404028352916020019162000fdd565b820191906000526020600020905b81548152906001019060200180831162000fbf57829003601f168201915b50505050508152602001906001019062000f3c565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000d105760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620010d857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620010845790505b5050505050815250508152602001906001019062001016565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000d10578382906000526020600020018054620011379062002439565b80601f0160208091040260200160405190810160405280929190818152602001828054620011659062002439565b8015620011b65780601f106200118a57610100808354040283529160200191620011b6565b820191906000526020600020905b8154815290600101906020018083116200119857829003601f168201915b50505050508152602001906001019062001115565b60008054610100900460ff1615620011ec5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620012fb5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200127d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002475565b60408051601f19818403018152908290526200129991620024bf565b6000604051808303816000865af19150503d8060008114620012d8576040519150601f19603f3d011682016040523d82523d6000602084013e620012dd565b606091505b5091505080806020019051810190620012f79190620022fa565b9150505b919050565b6103e96200130e8162001a60565b601d5462001326906001600160a01b03168262001f22565b601d546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200138057600080fd5b505af115801562001395573d6000803e3d6000fd5b5050601b54601e54601d546040516307750c9f60e41b81526001600160a01b03928316600482015290821660248201526044810186905291169250637750c9f091506064016020604051808303816000875af1158015620013fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014209190620022fa565b50601b54601d54601e546040517f59508f8f0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018490529116906359508f8f906064016020604051808303816000875af11580156200149b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014c19190620022fa565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200152157600080fd5b505af115801562001536573d6000803e3d6000fd5b5050601b54601e546040516370a0823160e01b81526001600160a01b039182166004820152620015749450911691506370a082319060240162000e44565b601b54601d546040516370a0823160e01b81526001600160a01b03918216600482015262000f159291909116906370a08231906024015b602060405180830381865afa158015620015c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015ef91906200241f565b600062001d10565b6103e96103ea620016088262001a60565b620016138162001a60565b601b54601e546040516370a0823160e01b81526001600160a01b039182166004820152620016959291909116906370a0823190602401602060405180830381865afa15801562001667573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200168d91906200241f565b600262001d10565b601d54620016ad906001600160a01b03168362001f22565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200170757600080fd5b505af11580156200171c573d6000803e3d6000fd5b5050601b546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911692506342966c6891506024016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab9190620022fa565b50601b54601e546040516370a0823160e01b81526001600160a01b039182166004820152620017e89291909116906370a082319060240162000e44565b5050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620009a9576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200098a575050505050905090565b6103e96200185c8162001a60565b601d5462001874906001600160a01b03168262001f22565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620018ce57600080fd5b505af1158015620018e3573d6000803e3d6000fd5b5050601b54601e54601d546040516307750c9f60e41b81526001600160a01b03928316600482015290821660248201526103e9604482015291169250637750c9f091506064016020604051808303816000875af115801562001949573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200196f9190620022fa565b50601b54601e546040516370a0823160e01b81526001600160a01b039182166004820152620019ac9291909116906370a0823190602401620015ab565b601b54601d546040516370a0823160e01b81526001600160a01b03918216600482015262000f159291909116906370a082319060240162000e44565b8062000f15577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001a4e9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000f1562002001565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001aba57600080fd5b505af115801562001acf573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562001b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e89190620022fa565b816001600160a01b0316836001600160a01b0316146200094a577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001b9a9190620024dd565b60405180910390a16200094a838362001e10565b8060405160200162001bc19190620024bf565b604051602081830303815290604052805190602001208260405160200162001bea9190620024bf565b6040516020818303038152906040528051906020012014620017e8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001c8c9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838260405162001cc5919062002526565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001cfe91906200256d565b60405180910390a1620017e862002001565b808214620017e8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001d9e9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162001dd7919062002598565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162001cfe9190620025d1565b806001600160a01b0316826001600160a01b031614620017e8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001eb09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162001ee99190620025fc565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162001cfe91906200263e565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f7c57600080fd5b505af115801562001f91573d6000803e3d6000fd5b5050601b5460405163095ea7b360e01b81526001600160a01b03868116600483015260248201869052909116925063095ea7b39150604401600060405180830381600087803b15801562001fe457600080fd5b505af115801562001ff9573d6000803e3d6000fd5b505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620021035760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200209e929160200162002475565b60408051601f1981840301815290829052620020ba91620024bf565b6000604051808303816000865af19150503d8060008114620020f9576040519150601f19603f3d011682016040523d82523d6000602084013e620020fe565b606091505b505050505b6000805461ff001916610100179055565b611d2b806200266a83390190565b6020808252825182820181905260009190848201906040850190845b81811015620021655783516001600160a01b0316835292840192918401916001016200213e565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200223157898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200221b5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190620021d7565b50978a0197955050509187019160010162002199565b50919998505050505050505050565b60005b838110156200225d57818101518382015260200162002243565b50506000910152565b600081518084526200228081602086016020860162002240565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620022ed57603f19888603018452620022da85835162002266565b94509285019290850190600101620022bb565b5092979650505050505050565b6000602082840312156200230d57600080fd5b815180151581146200231e57600080fd5b9392505050565b6000602082840312156200233857600080fd5b81516001600160a01b03811681146200231e57600080fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156200237957600080fd5b815167ffffffffffffffff808211156200239257600080fd5b818401915084601f830112620023a757600080fd5b815181811115620023bc57620023bc62002350565b604051601f8201601f19908116603f01168101908382118183101715620023e757620023e762002350565b816040528281528760208487010111156200240157600080fd5b6200241483602083016020880162002240565b979650505050505050565b6000602082840312156200243257600080fd5b5051919050565b600181811c908216806200244e57607f821691505b6020821081036200246f57634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620024b181600485016020870162002240565b919091016004019392505050565b60008251620024d381846020870162002240565b9190910192915050565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006200231e608083018462002266565b6040815260006200255160408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262002565818562002266565b949350505050565b6040815260006200255160408301600a8152690808080808149a59da1d60b21b602082015260400190565b604081526000620025c360408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b604081526000620025c360408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200262760408301600a8152690808080808081319599d60b21b602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200262760408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b5060405162001d2b38038062001d2b8339810160408190526200003491620001b1565b6040518060400160405280600b81526020016a29a0aa2827232a37b5b2b760a91b8152506040518060400160405280600781526020016614d0551413919560ca1b815250816001908162000089919062000288565b50600262000098828262000288565b505050620000cd7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e826200010260201b60201c565b50620000fa7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f8262000102565b505062000354565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a7576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200015e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001ab565b5060005b92915050565b600060208284031215620001c457600080fd5b81516001600160a01b0381168114620001dc57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020e57607f821691505b6020821081036200022f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028357600081815260208120601f850160051c810160208610156200025e5750805b601f850160051c820191505b818110156200027f578281556001016200026a565b5050505b505050565b81516001600160401b03811115620002a457620002a4620001e3565b620002bc81620002b58454620001f9565b8462000235565b602080601f831160018114620002f45760008415620002db5750858301515b600019600386901b1c1916600185901b1785556200027f565b600085815260208120601f198616915b82811015620003255788860151825594840194600190910190840162000304565b5085821015620003445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6119c780620003646000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b5bfddea116100a2578063d547741f11610071578063d547741f146104a5578063e58378bb146104b8578063e985e9c5146104df578063ea1340711461051b57600080fd5b8063b5bfddea14610445578063b88d4fde1461046c578063be7604881461047f578063c87b56dd1461049257600080fd5b806395d89b41116100de57806395d89b411461040f578063a217fddf14610417578063a22cb4651461041f578063a5e99b8e1461043257600080fd5b806370a08231146103b25780637750c9f01461038c5780638d944fd9146103c557806391d14854146103d857600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e1461036657806342966c681461037957806359508f8f1461038c5780636352211e1461039f57600080fd5b80632f2ff15d1461031a57806336568abe1461032d5780633ae9449d1461034057806340c10f191461035357600080fd5b8063150b7a02116101c3578063150b7a021461027357806323b872dd146102c3578063248a9ca3146102d65780632a16cca41461030757600080fd5b806301ffc9a7146101f557806306fdde031461021e578063081812fc14610233578063095ea7b31461025e575b600080fd5b610209610203366004611580565b50600090565b60405190151581526020015b60405180910390f35b61022661052e565b60405161021591906115ed565b610246610241366004611600565b6105c0565b6040516001600160a01b039091168152602001610215565b61027161026c366004611635565b6105eb565b005b61029261028136600461165f565b630a85bd0160e11b95945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b6102716102d13660046116fa565b6105fa565b6102f96102e4366004611600565b60009081526020819052604090206001015490565b604051908152602001610215565b610209610315366004611635565b6106a3565b610271610328366004611736565b61071e565b61027161033b366004611736565b610743565b6102f961034e366004611762565b610794565b610209610361366004611635565b6107a7565b6102716103743660046116fa565b6107e7565b610209610387366004611600565b610802565b61020961039a3660046116fa565b610917565b6102466103ad366004611600565b610924565b6102f96103c0366004611762565b61092f565b6102096103d3366004611635565b610990565b6102096103e6366004611736565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102266109ea565b6102f9600081565b61027161042d36600461177d565b6109f9565b610209610440366004611762565b610a04565b6102f97f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61027161047a3660046117cf565b610a5a565b61020961048d366004611635565b610a71565b6102266104a0366004611600565b610a8f565b6102716104b3366004611736565b610b03565b6102f97fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b6102096104ed3660046118ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b610209610529366004611762565b610b28565b60606001805461053d906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906118d5565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b60006105cb82610bad565b506000828152600560205260409020546001600160a01b03165b92915050565b6105f6828233610be6565b5050565b6001600160a01b03821661062957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610636838333610bf3565b9050836001600160a01b0316816001600160a01b03161461069d576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610620565b50505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6106cf81610cf9565b60006106da846105c0565b9050806001600160a01b0316856001600160a01b03161480610715575061070084610924565b6001600160a01b0316856001600160a01b0316145b95945050505050565b60008281526020819052604090206001015461073981610cf9565b61069d8383610d06565b6001600160a01b0381163314610785576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078f8282610db0565b505050565b6000806107a08361092f565b9392505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6107d381610cf9565b6107dd8484610e33565b5060019392505050565b61078f83838360405180602001604052806000815250610a5a565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61082e81610cf9565b33600061083a856105c0565b9050806001600160a01b0316826001600160a01b03161480610875575061086085610924565b6001600160a01b0316826001600160a01b0316145b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616c6c6572206973206e6f7420617070726f76656420746f206f706572617460448201527f65206f6e207468697320746f6b656e00000000000000000000000000000000006064820152608401610620565b61090a85610e4d565b6001935050505b50919050565b60006107dd8484846107e7565b60006105e582610bad565b60006001600160a01b038216610974576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b506001600160a01b031660009081526004602052604090205490565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6109bc81610cf9565b6000838152600360205260409020546001600160a01b03166109df818686610e88565b506001949350505050565b60606002805461053d906118d5565b6105f6338383610f05565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e610a3081610cf9565b6107dd7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610d06565b610a658484846105fa565b61069d84848484610fbd565b6000610a86610a7f83610924565b84846107e7565b50600192915050565b6060610a9a82610bad565b506000610ab260408051602081019091526000815290565b90506000815111610ad257604051806020016040528060008152506107a0565b80610adc846110fe565b604051602001610aed929190611909565b6040516020818303038152906040529392505050565b600082815260208190526040902060010154610b1e81610cf9565b61069d8383610db0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff1615610b7057506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6000818152600360205260408120546001600160a01b0316806105e557604051637e27328960e01b815260048101849052602401610620565b61078f838383600161119e565b6000828152600360205260408120546001600160a01b0390811690831615610c2057610c20818486610e88565b6001600160a01b03811615610c5e57610c3d60008560008061119e565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610c8d576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610d0381336112e9565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610da8576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610d603390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e5565b5060006105e5565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610da8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e5565b6105f6828260405180602001604052806000815250611355565b6000610e5c6000836000610bf3565b90506001600160a01b0381166105f657604051637e27328960e01b815260048101839052602401610620565b610e9383838361136c565b61078f576001600160a01b038316610ec157604051637e27328960e01b815260048101829052602401610620565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610620565b6001600160a01b038216610f50576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610fff903390889087908790600401611938565b6020604051808303816000875af192505050801561103a575060408051601f3d908101601f1916820190925261103791810190611974565b60015b6110a3573d808015611068576040519150601f19603f3d011682016040523d82523d6000602084013e61106d565b606091505b50805160000361109b57604051633250574960e11b81526001600160a01b0385166004820152602401610620565b805181602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116630a85bd0160e11b146110f757604051633250574960e11b81526001600160a01b0385166004820152602401610620565b5050505050565b6060600061110b836113f2565b600101905060008167ffffffffffffffff81111561112b5761112b6117b9565b6040519080825280601f01601f191660200182016040528015611155576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461115f57509392505050565b80806111b257506001600160a01b03821615155b156112ac5760006111c284610bad565b90506001600160a01b038316158015906111ee5750826001600160a01b0316816001600160a01b031614155b801561122057506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15611262576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610620565b81156112aa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166105f6576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610620565b61135f83836114d4565b61078f6000848484610fbd565b60006001600160a01b038316158015906113ea5750826001600160a01b0316846001600160a01b031614806113c657506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806113ea57506000828152600560205260409020546001600160a01b038481169116145b949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061143b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611467576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061148557662386f26fc10000830492506010015b6305f5e100831061149d576305f5e100830492506008015b61271083106114b157612710830492506004015b606483106114c3576064830492506002015b600a83106105e55760010192915050565b6001600160a01b0382166114fe57604051633250574960e11b815260006004820152602401610620565b600061150c83836000610bf3565b90506001600160a01b0381161561078f576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0357600080fd5b60006020828403121561159257600080fd5b81356107a081611552565b60005b838110156115b85781810151838201526020016115a0565b50506000910152565b600081518084526115d981602086016020860161159d565b601f01601f19169290920160200192915050565b6020815260006107a060208301846115c1565b60006020828403121561161257600080fd5b5035919050565b80356001600160a01b038116811461163057600080fd5b919050565b6000806040838503121561164857600080fd5b61165183611619565b946020939093013593505050565b60008060008060006080868803121561167757600080fd5b61168086611619565b945061168e60208701611619565b935060408601359250606086013567ffffffffffffffff808211156116b257600080fd5b818801915088601f8301126116c657600080fd5b8135818111156116d557600080fd5b8960208285010111156116e757600080fd5b9699959850939650602001949392505050565b60008060006060848603121561170f57600080fd5b61171884611619565b925061172660208501611619565b9150604084013590509250925092565b6000806040838503121561174957600080fd5b8235915061175960208401611619565b90509250929050565b60006020828403121561177457600080fd5b6107a082611619565b6000806040838503121561179057600080fd5b61179983611619565b9150602083013580151581146117ae57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156117e557600080fd5b6117ee85611619565b93506117fc60208601611619565b925060408501359150606085013567ffffffffffffffff8082111561182057600080fd5b818701915087601f83011261183457600080fd5b813581811115611846576118466117b9565b604051601f8201601f19908116603f0116810190838211818310171561186e5761186e6117b9565b816040528281528a602084870101111561188757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118be57600080fd5b6118c783611619565b915061175960208401611619565b600181811c908216806118e957607f821691505b60208210810361091157634e487b7160e01b600052602260045260246000fd5b6000835161191b81846020880161159d565b83519083019061192f81836020880161159d565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261196a60808301846115c1565b9695505050505050565b60006020828403121561198657600080fd5b81516107a08161155256fea26469706673582212203f5ab80dc6f0b3ee871144587f727bf6705f6dba123b4717d2615eebae48e21064736f6c63430008140033a2646970667358221220a5e5c1e43ba6839eaf77f64dfb624d0f4070b7cd1ca52d8c2bbe41a1d0be25d664736f6c63430008140033","sourceMap":"1572:26:17:-:0;;;1594:4;-1:-1:-1;;1572:26:17;;;;;;;;3161:44:20;;;;;;;;;;;327:17:41;218:2817;327:17;;218:2817;327:17;;;-1:-1:-1;;;327:17:41;;;;:8;:17::i;:::-;304:40;;;-1:-1:-1;;;;;;304:40:41;-1:-1:-1;;;;;304:40:41;;;;;;;;;;374:18;;;;;;;;;;;;-1:-1:-1;;;374:18:41;;;;;;:8;:18::i;:::-;350:42;;;-1:-1:-1;;;;;;350:42:41;-1:-1:-1;;;;;350:42:41;;;;;;;;;;420:16;;;;;;;;;;;;-1:-1:-1;;;420:16:41;;;;;;:8;:16::i;:::-;398:38;;;-1:-1:-1;;;;;;398:38:41;-1:-1:-1;;;;;398:38:41;;;;;;;;;;218:2817;;;;;;;;;;;;16374:125:21;16438:12;16472:20;16487:4;16472:14;:20::i;:::-;-1:-1:-1;16462:30:21;16374:125;-1:-1:-1;;16374:125:21:o;16093:242::-;16163:12;16177:18;16255:4;16238:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16238:22:21;;;;;;;16228:33;;16238:22;16228:33;;;;-1:-1:-1;;;;;;16279:19:21;;;;;709:25:45;;;16228:33:21;-1:-1:-1;16279:7:21;;;;682:18:45;;16279:19:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16308:20;;-1:-1:-1;;;16308:20:21;;16272:26;;-1:-1:-1;16308:8:21;;;;:20;;16272:26;;16323:4;;16308:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16093:242;;;:::o;14:250:45:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:45;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:45:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:45;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:45:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:45;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:45:o;:::-;218:2817:41;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001895760003560e01c80638da5cb5b11620000dd578063e13aba48116200008b578063e78cea92116200006e578063e78cea9214620002ae578063e96d88e014620002c2578063fa7626d414620002cc57600080fd5b8063e13aba48146200029a578063e20c9f7114620002a457600080fd5b8063b5508aa911620000c0578063b5508aa9146200026b578063ba414fa61462000275578063c2745ada146200029057600080fd5b80638da5cb5b146200024d578063916a17c6146200026157600080fd5b80633f7286f4116200013b57806366d9a9a0116200011e57806366d9a9a014620002115780636f2c893c146200022a57806385226c81146200023457600080fd5b80633f7286f414620001da5780634f8632ba14620001e457600080fd5b80631ed7831c11620001705780631ed7831c14620001a4578063218e00ff14620001c65780633e5e3c2314620001d057600080fd5b80630a9254e4146200018e5780631aeb10a6146200019a575b600080fd5b62000198620002da565b005b62000198620005d8565b620001ae6200094f565b604051620001bd919062002122565b60405180910390f35b62000198620009b3565b620001ae62000b4d565b620001ae62000baf565b601e54620001f8906001600160a01b031681565b6040516001600160a01b039091168152602001620001bd565b6200021b62000c11565b604051620001bd919062002171565b6200019862000d19565b6200023e62000f18565b604051620001bd919062002294565b601c54620001f8906001600160a01b031681565b6200021b62000ff2565b6200023e620010f1565b6200027f620011cb565b6040519015158152602001620001bd565b6200019862001300565b62000198620015f7565b620001ae620017ec565b601d54620001f8906001600160a01b031681565b620001986200184e565b6000546200027f9060ff1681565b601c5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200033457600080fd5b505af115801562000349573d6000803e3d6000fd5b5050601c546040516001600160a01b0390911692506200036a915062002114565b6001600160a01b039091168152602001604051809103906000f08015801562000397573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c546040516303223eab60e11b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b5050601b54601d546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c49190620022fa565b50601b54601d546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200055e92919091169063ea13407190602401602060405180830381865afa15801562000532573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005589190620022fa565b620019e8565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620005bd57600080fd5b505af1158015620005d2573d6000803e3d6000fd5b50505050565b6103e9620005e68162001a60565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200064057600080fd5b505af115801562000655573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018690529116925063095ea7b39150604401600060405180830381600087803b158015620006aa57600080fd5b505af1158015620006bf573d6000803e3d6000fd5b5050601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200071d57600080fd5b505af115801562000732573d6000803e3d6000fd5b5050601b546040517f081812fc00000000000000000000000000000000000000000000000000000000815260048101859052600093506001600160a01b03909116915063081812fc90602401602060405180830381865afa1580156200079c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007c2919062002325565b601d5460408051808201909152601981527f417070726f76616c2061646472657373206d69736d61746368000000000000006020820152919250620008139183916001600160a01b03169062001b4f565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200086d57600080fd5b505af115801562000882573d6000803e3d6000fd5b5050601b546040516331a9108f60e11b815260048101869052600093506001600160a01b039091169150636352211e90602401602060405180830381865afa158015620008d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008f9919062002325565b601e5460408051808201909152601681527f4f776e65722061646472657373206d69736d617463680000000000000000000060208201529192506200094a9183916001600160a01b03169062001b4f565b505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620009a957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200098a575b5050505050905090565b601b54604080517f06fdde03000000000000000000000000000000000000000000000000000000008152905162000a7f926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562000a19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a43919081019062002366565b6040518060400160405280600b81526020017f534154504e46546f6b656e00000000000000000000000000000000000000000081525062001bae565b601b54604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905162000b4b926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562000ae5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b0f919081019062002366565b6040518060400160405280600781526020017f534154504e46540000000000000000000000000000000000000000000000000081525062001bae565b565b6060600f805480602002602001604051908101604052809291908181526020018280548015620009a9576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200098a575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620009a9576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200098a575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000d105760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000cf757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000ca35790505b5050505050815250508152602001906001019062000c35565b50505050905090565b601d5460405163ca669fa760e01b81526001600160a01b0390911660048201526103e990737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000d7757600080fd5b505af115801562000d8c573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000de6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e0c9190620022fa565b50601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000e909291909116906370a08231906024015b602060405180830381865afa15801562000e62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e8891906200241f565b600162001d10565b601b546040516331a9108f60e11b81526004810183905262000f15916001600160a01b031690636352211e90602401602060405180830381865afa15801562000edd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062002325565b601e546001600160a01b031662001e10565b50565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000d1057838290600052602060002001805462000f5e9062002439565b80601f016020809104026020016040519081016040528092919081815260200182805462000f8c9062002439565b801562000fdd5780601f1062000fb15761010080835404028352916020019162000fdd565b820191906000526020600020905b81548152906001019060200180831162000fbf57829003601f168201915b50505050508152602001906001019062000f3c565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000d105760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620010d857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620010845790505b5050505050815250508152602001906001019062001016565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000d10578382906000526020600020018054620011379062002439565b80601f0160208091040260200160405190810160405280929190818152602001828054620011659062002439565b8015620011b65780601f106200118a57610100808354040283529160200191620011b6565b820191906000526020600020905b8154815290600101906020018083116200119857829003601f168201915b50505050508152602001906001019062001115565b60008054610100900460ff1615620011ec5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620012fb5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200127d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162002475565b60408051601f19818403018152908290526200129991620024bf565b6000604051808303816000865af19150503d8060008114620012d8576040519150601f19603f3d011682016040523d82523d6000602084013e620012dd565b606091505b5091505080806020019051810190620012f79190620022fa565b9150505b919050565b6103e96200130e8162001a60565b601d5462001326906001600160a01b03168262001f22565b601d546040516303223eab60e11b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200138057600080fd5b505af115801562001395573d6000803e3d6000fd5b5050601b54601e54601d546040516307750c9f60e41b81526001600160a01b03928316600482015290821660248201526044810186905291169250637750c9f091506064016020604051808303816000875af1158015620013fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014209190620022fa565b50601b54601d54601e546040517f59508f8f0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152604481018490529116906359508f8f906064016020604051808303816000875af11580156200149b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014c19190620022fa565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200152157600080fd5b505af115801562001536573d6000803e3d6000fd5b5050601b54601e546040516370a0823160e01b81526001600160a01b039182166004820152620015749450911691506370a082319060240162000e44565b601b54601d546040516370a0823160e01b81526001600160a01b03918216600482015262000f159291909116906370a08231906024015b602060405180830381865afa158015620015c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015ef91906200241f565b600062001d10565b6103e96103ea620016088262001a60565b620016138162001a60565b601b54601e546040516370a0823160e01b81526001600160a01b039182166004820152620016959291909116906370a0823190602401602060405180830381865afa15801562001667573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200168d91906200241f565b600262001d10565b601d54620016ad906001600160a01b03168362001f22565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200170757600080fd5b505af11580156200171c573d6000803e3d6000fd5b5050601b546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911692506342966c6891506024016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab9190620022fa565b50601b54601e546040516370a0823160e01b81526001600160a01b039182166004820152620017e89291909116906370a082319060240162000e44565b5050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620009a9576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116200098a575050505050905090565b6103e96200185c8162001a60565b601d5462001874906001600160a01b03168262001f22565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620018ce57600080fd5b505af1158015620018e3573d6000803e3d6000fd5b5050601b54601e54601d546040516307750c9f60e41b81526001600160a01b03928316600482015290821660248201526103e9604482015291169250637750c9f091506064016020604051808303816000875af115801562001949573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200196f9190620022fa565b50601b54601e546040516370a0823160e01b81526001600160a01b039182166004820152620019ac9291909116906370a0823190602401620015ab565b601b54601d546040516370a0823160e01b81526001600160a01b03918216600482015262000f159291909116906370a082319060240162000e44565b8062000f15577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001a4e9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000f1562002001565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001aba57600080fd5b505af115801562001acf573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562001b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017e89190620022fa565b816001600160a01b0316836001600160a01b0316146200094a577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001b9a9190620024dd565b60405180910390a16200094a838362001e10565b8060405160200162001bc19190620024bf565b604051602081830303815290604052805190602001208260405160200162001bea9190620024bf565b6040516020818303038152906040528051906020012014620017e8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001c8c9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838260405162001cc5919062002526565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162001cfe91906200256d565b60405180910390a1620017e862002001565b808214620017e8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001d9e9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162001dd7919062002598565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162001cfe9190620025d1565b806001600160a01b0316826001600160a01b031614620017e8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001eb09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162001ee99190620025fc565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162001cfe91906200263e565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f7c57600080fd5b505af115801562001f91573d6000803e3d6000fd5b5050601b5460405163095ea7b360e01b81526001600160a01b03868116600483015260248201869052909116925063095ea7b39150604401600060405180830381600087803b15801562001fe457600080fd5b505af115801562001ff9573d6000803e3d6000fd5b505050505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620021035760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f19818403018152908290526200209e929160200162002475565b60408051601f1981840301815290829052620020ba91620024bf565b6000604051808303816000865af19150503d8060008114620020f9576040519150601f19603f3d011682016040523d82523d6000602084013e620020fe565b606091505b505050505b6000805461ff001916610100179055565b611d2b806200266a83390190565b6020808252825182820181905260009190848201906040850190845b81811015620021655783516001600160a01b0316835292840192918401916001016200213e565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200223157898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156200221b5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190620021d7565b50978a0197955050509187019160010162002199565b50919998505050505050505050565b60005b838110156200225d57818101518382015260200162002243565b50506000910152565b600081518084526200228081602086016020860162002240565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620022ed57603f19888603018452620022da85835162002266565b94509285019290850190600101620022bb565b5092979650505050505050565b6000602082840312156200230d57600080fd5b815180151581146200231e57600080fd5b9392505050565b6000602082840312156200233857600080fd5b81516001600160a01b03811681146200231e57600080fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156200237957600080fd5b815167ffffffffffffffff808211156200239257600080fd5b818401915084601f830112620023a757600080fd5b815181811115620023bc57620023bc62002350565b604051601f8201601f19908116603f01168101908382118183101715620023e757620023e762002350565b816040528281528760208487010111156200240157600080fd5b6200241483602083016020880162002240565b979650505050505050565b6000602082840312156200243257600080fd5b5051919050565b600181811c908216806200244e57607f821691505b6020821081036200246f57634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620024b181600485016020870162002240565b919091016004019392505050565b60008251620024d381846020870162002240565b9190910192915050565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006200231e608083018462002266565b6040815260006200255160408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262002565818562002266565b949350505050565b6040815260006200255160408301600a8152690808080808149a59da1d60b21b602082015260400190565b604081526000620025c360408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b604081526000620025c360408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200262760408301600a8152690808080808081319599d60b21b602082015260400190565b90506001600160a01b038316602083015292915050565b6040815260006200262760408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b5060405162001d2b38038062001d2b8339810160408190526200003491620001b1565b6040518060400160405280600b81526020016a29a0aa2827232a37b5b2b760a91b8152506040518060400160405280600781526020016614d0551413919560ca1b815250816001908162000089919062000288565b50600262000098828262000288565b505050620000cd7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e826200010260201b60201c565b50620000fa7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f8262000102565b505062000354565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a7576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200015e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001ab565b5060005b92915050565b600060208284031215620001c457600080fd5b81516001600160a01b0381168114620001dc57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020e57607f821691505b6020821081036200022f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028357600081815260208120601f850160051c810160208610156200025e5750805b601f850160051c820191505b818110156200027f578281556001016200026a565b5050505b505050565b81516001600160401b03811115620002a457620002a4620001e3565b620002bc81620002b58454620001f9565b8462000235565b602080601f831160018114620002f45760008415620002db5750858301515b600019600386901b1c1916600185901b1785556200027f565b600085815260208120601f198616915b82811015620003255788860151825594840194600190910190840162000304565b5085821015620003445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6119c780620003646000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b5bfddea116100a2578063d547741f11610071578063d547741f146104a5578063e58378bb146104b8578063e985e9c5146104df578063ea1340711461051b57600080fd5b8063b5bfddea14610445578063b88d4fde1461046c578063be7604881461047f578063c87b56dd1461049257600080fd5b806395d89b41116100de57806395d89b411461040f578063a217fddf14610417578063a22cb4651461041f578063a5e99b8e1461043257600080fd5b806370a08231146103b25780637750c9f01461038c5780638d944fd9146103c557806391d14854146103d857600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e1461036657806342966c681461037957806359508f8f1461038c5780636352211e1461039f57600080fd5b80632f2ff15d1461031a57806336568abe1461032d5780633ae9449d1461034057806340c10f191461035357600080fd5b8063150b7a02116101c3578063150b7a021461027357806323b872dd146102c3578063248a9ca3146102d65780632a16cca41461030757600080fd5b806301ffc9a7146101f557806306fdde031461021e578063081812fc14610233578063095ea7b31461025e575b600080fd5b610209610203366004611580565b50600090565b60405190151581526020015b60405180910390f35b61022661052e565b60405161021591906115ed565b610246610241366004611600565b6105c0565b6040516001600160a01b039091168152602001610215565b61027161026c366004611635565b6105eb565b005b61029261028136600461165f565b630a85bd0160e11b95945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b6102716102d13660046116fa565b6105fa565b6102f96102e4366004611600565b60009081526020819052604090206001015490565b604051908152602001610215565b610209610315366004611635565b6106a3565b610271610328366004611736565b61071e565b61027161033b366004611736565b610743565b6102f961034e366004611762565b610794565b610209610361366004611635565b6107a7565b6102716103743660046116fa565b6107e7565b610209610387366004611600565b610802565b61020961039a3660046116fa565b610917565b6102466103ad366004611600565b610924565b6102f96103c0366004611762565b61092f565b6102096103d3366004611635565b610990565b6102096103e6366004611736565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102266109ea565b6102f9600081565b61027161042d36600461177d565b6109f9565b610209610440366004611762565b610a04565b6102f97f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61027161047a3660046117cf565b610a5a565b61020961048d366004611635565b610a71565b6102266104a0366004611600565b610a8f565b6102716104b3366004611736565b610b03565b6102f97fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b6102096104ed3660046118ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b610209610529366004611762565b610b28565b60606001805461053d906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906118d5565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b60006105cb82610bad565b506000828152600560205260409020546001600160a01b03165b92915050565b6105f6828233610be6565b5050565b6001600160a01b03821661062957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610636838333610bf3565b9050836001600160a01b0316816001600160a01b03161461069d576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610620565b50505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6106cf81610cf9565b60006106da846105c0565b9050806001600160a01b0316856001600160a01b03161480610715575061070084610924565b6001600160a01b0316856001600160a01b0316145b95945050505050565b60008281526020819052604090206001015461073981610cf9565b61069d8383610d06565b6001600160a01b0381163314610785576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078f8282610db0565b505050565b6000806107a08361092f565b9392505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6107d381610cf9565b6107dd8484610e33565b5060019392505050565b61078f83838360405180602001604052806000815250610a5a565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61082e81610cf9565b33600061083a856105c0565b9050806001600160a01b0316826001600160a01b03161480610875575061086085610924565b6001600160a01b0316826001600160a01b0316145b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616c6c6572206973206e6f7420617070726f76656420746f206f706572617460448201527f65206f6e207468697320746f6b656e00000000000000000000000000000000006064820152608401610620565b61090a85610e4d565b6001935050505b50919050565b60006107dd8484846107e7565b60006105e582610bad565b60006001600160a01b038216610974576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b506001600160a01b031660009081526004602052604090205490565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6109bc81610cf9565b6000838152600360205260409020546001600160a01b03166109df818686610e88565b506001949350505050565b60606002805461053d906118d5565b6105f6338383610f05565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e610a3081610cf9565b6107dd7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610d06565b610a658484846105fa565b61069d84848484610fbd565b6000610a86610a7f83610924565b84846107e7565b50600192915050565b6060610a9a82610bad565b506000610ab260408051602081019091526000815290565b90506000815111610ad257604051806020016040528060008152506107a0565b80610adc846110fe565b604051602001610aed929190611909565b6040516020818303038152906040529392505050565b600082815260208190526040902060010154610b1e81610cf9565b61069d8383610db0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff1615610b7057506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6000818152600360205260408120546001600160a01b0316806105e557604051637e27328960e01b815260048101849052602401610620565b61078f838383600161119e565b6000828152600360205260408120546001600160a01b0390811690831615610c2057610c20818486610e88565b6001600160a01b03811615610c5e57610c3d60008560008061119e565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610c8d576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610d0381336112e9565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610da8576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610d603390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e5565b5060006105e5565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610da8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e5565b6105f6828260405180602001604052806000815250611355565b6000610e5c6000836000610bf3565b90506001600160a01b0381166105f657604051637e27328960e01b815260048101839052602401610620565b610e9383838361136c565b61078f576001600160a01b038316610ec157604051637e27328960e01b815260048101829052602401610620565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610620565b6001600160a01b038216610f50576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610fff903390889087908790600401611938565b6020604051808303816000875af192505050801561103a575060408051601f3d908101601f1916820190925261103791810190611974565b60015b6110a3573d808015611068576040519150601f19603f3d011682016040523d82523d6000602084013e61106d565b606091505b50805160000361109b57604051633250574960e11b81526001600160a01b0385166004820152602401610620565b805181602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116630a85bd0160e11b146110f757604051633250574960e11b81526001600160a01b0385166004820152602401610620565b5050505050565b6060600061110b836113f2565b600101905060008167ffffffffffffffff81111561112b5761112b6117b9565b6040519080825280601f01601f191660200182016040528015611155576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461115f57509392505050565b80806111b257506001600160a01b03821615155b156112ac5760006111c284610bad565b90506001600160a01b038316158015906111ee5750826001600160a01b0316816001600160a01b031614155b801561122057506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15611262576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610620565b81156112aa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166105f6576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610620565b61135f83836114d4565b61078f6000848484610fbd565b60006001600160a01b038316158015906113ea5750826001600160a01b0316846001600160a01b031614806113c657506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806113ea57506000828152600560205260409020546001600160a01b038481169116145b949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061143b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611467576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061148557662386f26fc10000830492506010015b6305f5e100831061149d576305f5e100830492506008015b61271083106114b157612710830492506004015b606483106114c3576064830492506002015b600a83106105e55760010192915050565b6001600160a01b0382166114fe57604051633250574960e11b815260006004820152602401610620565b600061150c83836000610bf3565b90506001600160a01b0381161561078f576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0357600080fd5b60006020828403121561159257600080fd5b81356107a081611552565b60005b838110156115b85781810151838201526020016115a0565b50506000910152565b600081518084526115d981602086016020860161159d565b601f01601f19169290920160200192915050565b6020815260006107a060208301846115c1565b60006020828403121561161257600080fd5b5035919050565b80356001600160a01b038116811461163057600080fd5b919050565b6000806040838503121561164857600080fd5b61165183611619565b946020939093013593505050565b60008060008060006080868803121561167757600080fd5b61168086611619565b945061168e60208701611619565b935060408601359250606086013567ffffffffffffffff808211156116b257600080fd5b818801915088601f8301126116c657600080fd5b8135818111156116d557600080fd5b8960208285010111156116e757600080fd5b9699959850939650602001949392505050565b60008060006060848603121561170f57600080fd5b61171884611619565b925061172660208501611619565b9150604084013590509250925092565b6000806040838503121561174957600080fd5b8235915061175960208401611619565b90509250929050565b60006020828403121561177457600080fd5b6107a082611619565b6000806040838503121561179057600080fd5b61179983611619565b9150602083013580151581146117ae57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156117e557600080fd5b6117ee85611619565b93506117fc60208601611619565b925060408501359150606085013567ffffffffffffffff8082111561182057600080fd5b818701915087601f83011261183457600080fd5b813581811115611846576118466117b9565b604051601f8201601f19908116603f0116810190838211818310171561186e5761186e6117b9565b816040528281528a602084870101111561188757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118be57600080fd5b6118c783611619565b915061175960208401611619565b600181811c908216806118e957607f821691505b60208210810361091157634e487b7160e01b600052602260045260246000fd5b6000835161191b81846020880161159d565b83519083019061192f81836020880161159d565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261196a60808301846115c1565b9695505050505050565b60006020828403121561198657600080fd5b81516107a08161155256fea26469706673582212203f5ab80dc6f0b3ee871144587f727bf6705f6dba123b4717d2615eebae48e21064736f6c63430008140033a2646970667358221220a5e5c1e43ba6839eaf77f64dfb624d0f4070b7cd1ca52d8c2bbe41a1d0be25d664736f6c63430008140033","sourceMap":"218:2817:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;443:268;;;:::i;:::-;;1416:487;;;:::i;2161:134:23:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;993:154:41;;;:::i;2930:133:23:-;;;:::i;2631:141::-;;;:::i;398:38:41:-;;;;;-1:-1:-1;;;;;398:38:41;;;;;;-1:-1:-1;;;;;864:55:45;;;846:74;;834:2;819:18;398:38:41;700:226:45;2447:178:23;;;:::i;:::-;;;;;;;:::i;1153:257:41:-;;;:::i;2301:140:23:-;;;:::i;:::-;;;;;;;:::i;304:40:41:-;;;;;-1:-1:-1;;;;;304:40:41;;;2778:146:23;;;:::i;1866:141::-;;;:::i;1819:584:17:-;;;:::i;:::-;;;4078:14:45;;4071:22;4053:41;;4041:2;4026:18;1819:584:17;3913:187:45;2238:409:41;;;:::i;2653:380::-;;;:::i;2013:142:23:-;;;:::i;350:42:41:-;;;;;-1:-1:-1;;;;;350:42:41;;;1909:323;;;:::i;1572:26:17:-;;;;;;;;;443:268:41;486:5;;477:15;;-1:-1:-1;;;477:15:41;;-1:-1:-1;;;;;486:5:41;;;477:15;;;846:74:45;477:8:41;;;;819:18:45;;477:15:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;541:5:41;;517:30;;-1:-1:-1;;;;;541:5:41;;;;-1:-1:-1;517:30:41;;-1:-1:-1;517:30:41;:::i;:::-;-1:-1:-1;;;;;864:55:45;;;846:74;;834:2;819:18;517:30:41;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;502:12:41;:45;;;;-1:-1:-1;;;;;502:45:41;;;;;;572:5;;558:20;;-1:-1:-1;;;558:20:41;;572:5;;558:20;;;846:74:45;558:13:41;;;;819:18:45;;558:20:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;588:12:41;;617:6;;588:36;;;;;-1:-1:-1;;;;;617:6:41;;;588:36;;;846:74:45;588:12:41;;;-1:-1:-1;588:28:41;;-1:-1:-1;819:18:45;;588:36:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;645:12:41;;672:6;;645:34;;;;;-1:-1:-1;;;;;672:6:41;;;645:34;;;846:74:45;634:46:41;;645:12;;;;;:26;;819:18:45;;645:34:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;634:10;:46::i;:::-;317:28:18;309:37;;-1:-1:-1;;;;;690:12:41;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;443:268::o;1416:487::-;1474:4;1488:19;1474:4;1488:10;:19::i;:::-;1527:4;;1518:14;;-1:-1:-1;;;1518:14:41;;-1:-1:-1;;;;;1527:4:41;;;1518:14;;;846:74:45;1518:8:41;;;;819:18:45;;1518:14:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1542:12:41;;1563:6;;1542:37;;-1:-1:-1;;;1542:37:41;;-1:-1:-1;;;;;1563:6:41;;;1542:37;;;4561:74:45;4651:18;;;4644:34;;;1542:12:41;;;-1:-1:-1;1542:20:41;;-1:-1:-1;4534:18:45;;1542:37:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1599:6:41;;1590:16;;-1:-1:-1;;;1590:16:41;;-1:-1:-1;;;;;1599:6:41;;;1590:16;;;846:74:45;1590:8:41;;-1:-1:-1;1590:8:41;;-1:-1:-1;819:18:45;;1590:16:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1642:12:41;;:33;;;;;;;;4835:25:45;;;1616:23:41;;-1:-1:-1;;;;;;1642:12:41;;;;-1:-1:-1;1642:24:41;;4808:18:45;;1642:33:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1711:6;;1685:62;;;;;;;;;;;;;;;;;1616:59;;-1:-1:-1;1685:62:41;;1616:59;;-1:-1:-1;;;;;1711:6:41;;1685:8;:62::i;:::-;1767:6;;1758:16;;-1:-1:-1;;;1758:16:41;;-1:-1:-1;;;;;1767:6:41;;;1758:16;;;846:74:45;1758:8:41;;;;819:18:45;;1758:16:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1805:12:41;;:29;;-1:-1:-1;;;1805:29:41;;;;;4835:25:45;;;1784:18:41;;-1:-1:-1;;;;;;1805:12:41;;;;-1:-1:-1;1805:20:41;;4808:18:45;;1805:29:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1865:4;;1844:52;;;;;;;;;;;;;;;;;1784:50;;-1:-1:-1;1844:52:41;;1784:50;;-1:-1:-1;;;;;1865:4:41;;1844:8;:52::i;:::-;1446:457;;;1416:487::o;2161:134:23:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:23;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;993:154:41:-;1053:12;;:19;;;;;;;;1044:44;;-1:-1:-1;;;;;1053:12:41;;:17;;:19;;;;;:12;;:19;;;;;;;:12;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1053:19:41;;;;;;;;;;;;:::i;:::-;1044:44;;;;;;;;;;;;;;;;;:8;:44::i;:::-;1107:12;;:21;;;;;;;;1098:42;;-1:-1:-1;;;;;1107:12:41;;:19;;:21;;;;;:12;;:21;;;;;;;:12;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1107:21:41;;;;;;;;;;;;:::i;:::-;1098:42;;;;;;;;;;;;;;;;;:8;:42::i;:::-;993:154::o;2930:133:23:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:23;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:23;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;1153:257:41:-;1247:6;;1238:16;;-1:-1:-1;;;1238:16:41;;-1:-1:-1;;;;;1247:6:41;;;1238:16;;;846:74:45;1223:4:41;;1238:8;;;;819:18:45;;1238:16:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1264:12:41;;1282:4;;1264:32;;-1:-1:-1;;;1264:32:41;;-1:-1:-1;;;;;1282:4:41;;;1264:32;;;4561:74:45;4651:18;;;4644:34;;;1264:12:41;;;-1:-1:-1;1264:17:41;;-1:-1:-1;4534:18:45;;1264:32:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1316:12:41;;1339:4;;1316:28;;-1:-1:-1;;;1316:28:41;;-1:-1:-1;;;;;1339:4:41;;;1316:28;;;846:74:45;1307:41:41;;1316:12;;;;;:22;;819:18:45;;1316:28:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1346:1;1307:8;:41::i;:::-;1367:12;;:29;;-1:-1:-1;;;1367:29:41;;;;;4835:25:45;;;1358:45:41;;-1:-1:-1;;;;;1367:12:41;;:20;;4808:18:45;;1367:29:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1398:4;;-1:-1:-1;;;;;1398:4:41;1358:8;:45::i;:::-;1195:215;1153:257::o;2301:140:23:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:17;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:17;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;4561:74:45;;;-1:-1:-1;;;4651:18:45;;;4644:34;2196:43:17;;;;;;;;;4534:18:45;;;2196:43:17;;;-1:-1:-1;;1671:64:17;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:17;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:17:o;2238:409:41:-;2295:4;2309:19;2295:4;2309:10;:19::i;:::-;2361:6;;2339:38;;-1:-1:-1;;;;;2361:6:41;2369:7;2339:21;:38::i;:::-;2402:6;;2388:21;;-1:-1:-1;;;2388:21:41;;-1:-1:-1;;;;;2402:6:41;;;2388:21;;;846:74:45;2388:13:41;;;;819:18:45;;2388:21:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2419:12:41;;2437:4;;2443:6;;2419:40;;-1:-1:-1;;;2419:40:41;;-1:-1:-1;;;;;2437:4:41;;;2419:40;;;8203:34:45;2443:6:41;;;8253:18:45;;;8246:43;8305:18;;;8298:34;;;2419:12:41;;;-1:-1:-1;2419:17:41;;-1:-1:-1;8115:18:45;;2419:40:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2469:12:41;;2489:6;;2497:4;;2469:42;;;;;-1:-1:-1;;;;;2489:6:41;;;2469:42;;;8203:34:45;2497:4:41;;;8253:18:45;;;8246:43;8305:18;;;8298:34;;;2469:12:41;;;:19;;8115:18:45;;2469:42:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:18;309:37;;-1:-1:-1;;;;;2521:12:41;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2555:12:41;;2578:4;;2555:28;;-1:-1:-1;;;2555:28:41;;-1:-1:-1;;;;;2578:4:41;;;2555:28;;;846:74:45;2546:41:41;;-1:-1:-1;2555:12:41;;;-1:-1:-1;2555:22:41;;819:18:45;;2555:28:41;700:226:45;2546:41:41;2606:12;;2629:6;;2606:30;;-1:-1:-1;;;2606:30:41;;-1:-1:-1;;;;;2629:6:41;;;2606:30;;;846:74:45;2597:43:41;;2606:12;;;;;:22;;819:18:45;;2606:30:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2638:1;2597:8;:43::i;2653:380::-;2708:4;2741;2755:19;2708:4;2755:10;:19::i;:::-;2784:20;2795:8;2784:10;:20::i;:::-;2823:12;;2846:4;;2823:28;;-1:-1:-1;;;2823:28:41;;-1:-1:-1;;;;;2846:4:41;;;2823:28;;;846:74:45;2814:41:41;;2823:12;;;;;:22;;819:18:45;;2823:28:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2853:1;2814:8;:41::i;:::-;2896:6;;2874:38;;-1:-1:-1;;;;;2896:6:41;2904:7;2874:21;:38::i;:::-;2931:6;;2922:16;;-1:-1:-1;;;2922:16:41;;-1:-1:-1;;;;;2931:6:41;;;2922:16;;;846:74:45;2922:8:41;;;;819:18:45;;2922:16:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2948:12:41;;:26;;;;;;;;4835:25:45;;;-1:-1:-1;;;;;2948:12:41;;;;-1:-1:-1;2948:17:41;;-1:-1:-1;4808:18:45;;2948:26:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2994:12:41;;3017:4;;2994:28;;-1:-1:-1;;;2994:28:41;;-1:-1:-1;;;;;3017:4:41;;;2994:28;;;846:74:45;2985:41:41;;2994:12;;;;;:22;;819:18:45;;2994:28:41;700:226:45;2985:41:41;2680:353;;2653:380::o;2013:142:23:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:23;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;1909:323:41:-;1964:4;1978:19;1964:4;1978:10;:19::i;:::-;2030:6;;2008:38;;-1:-1:-1;;;;;2030:6:41;2038:7;2008:21;:38::i;:::-;2066:6;;2057:16;;-1:-1:-1;;;2057:16:41;;-1:-1:-1;;;;;2066:6:41;;;2057:16;;;846:74:45;2057:8:41;;;;819:18:45;;2057:16:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2083:12:41;;2101:4;;2107:6;;2083:37;;-1:-1:-1;;;2083:37:41;;-1:-1:-1;;;;;2101:4:41;;;2083:37;;;8203:34:45;2107:6:41;;;8253:18:45;;;8246:43;2115:4:41;8305:18:45;;;8298:34;2083:12:41;;;-1:-1:-1;2083:17:41;;-1:-1:-1;8115:18:45;;2083:37:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2140:12:41;;2163:4;;2140:28;;-1:-1:-1;;;2140:28:41;;-1:-1:-1;;;;;2163:4:41;;;2140:28;;;846:74:45;2131:41:41;;2140:12;;;;;:22;;819:18:45;;2140:28:41;700:226:45;2131:41:41;2191:12;;2214:6;;2191:30;;-1:-1:-1;;;2191:30:41;;-1:-1:-1;;;;;2214:6:41;;;2191:30;;;846:74:45;2182:43:41;;2191:12;;;;;:22;;819:18:45;;2191:30:41;700:226:45;3262:157:17;3322:9;3317:96;;3352:30;;;;;8959:2:45;8941:21;;;8998:2;8978:18;;;8971:30;9037:25;9032:2;9017:18;;9010:53;9095:2;9080:18;;8757:347;3352:30:17;;;;;;;;3396:6;:4;:6::i;717:121:41:-;782:6;;773:16;;-1:-1:-1;;;773:16:41;;-1:-1:-1;;;;;782:6:41;;;773:16;;;846:74:45;773:8:41;;;;819:18:45;;773:16:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;799:12:41;;817:4;;799:32;;-1:-1:-1;;;799:32:41;;-1:-1:-1;;;;;817:4:41;;;799:32;;;4561:74:45;4651:18;;;4644:34;;;799:12:41;;;-1:-1:-1;799:17:41;;-1:-1:-1;4534:18:45;;799:32:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3904:185:17:-;3991:1;-1:-1:-1;;;;;3986:6:17;:1;-1:-1:-1;;;;;3986:6:17;;3982:101;;4013:31;4040:3;4013:31;;;;;;:::i;:::-;;;;;;;;4058:14;4067:1;4070;4058:8;:14::i;17902:344::-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;10056:2:45;10038:21;;;10095:2;10075:18;;;10068:30;10134:34;10129:2;10114:18;;10107:62;10205:6;10200:2;10185:18;;10178:34;10244:3;10229:19;;9854:400;18062:43:17;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;5209:262::-;5271:1;5266;:6;5262:203;;5293:41;;;;;11679:2:45;11661:21;;;11718:2;11698:18;;;11691:30;11757:34;11752:2;11737:18;;11730:62;11828:4;11823:2;11808:18;;11801:32;11865:3;11850:19;;11477:398;5293:41:17;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;3622:277::-;3690:1;-1:-1:-1;;;;;3685:6:17;:1;-1:-1:-1;;;;;3685:6:17;;3681:212;;3712:44;;;;;12788:2:45;12770:21;;;12827:2;12807:18;;;12800:30;12866:34;12861:2;12846:18;;12839:62;12937:7;12932:2;12917:18;;12910:35;12977:3;12962:19;;12586:401;3712:44:17;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;844:143:41:-;932:4;;923:14;;-1:-1:-1;;;923:14:41;;-1:-1:-1;;;;;932:4:41;;;923:14;;;846:74:45;923:8:41;;;;819:18:45;;923:14:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;947:12:41;;:33;;-1:-1:-1;;;947:33:41;;-1:-1:-1;;;;;4579:55:45;;;947:33:41;;;4561:74:45;4651:18;;;4644:34;;;947:12:41;;;;-1:-1:-1;947:20:41;;-1:-1:-1;4534:18:45;;947:33:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;844:143;;:::o;2409:432:17:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;13998:74:45;;;-1:-1:-1;;;14088:18:45;;;14081:34;;;;2712:4:17;14131:18:45;;;14124:34;2489:11:17;;1671:64;2586:43;;13971:18:45;;2652:67:17;;;-1:-1:-1;;2652:67:17;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:17;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:17;2820:7;:14;;-1:-1:-1;;2820:14:17;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;14:681:45:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:45;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:45;;14:681;-1:-1:-1;;;;;;14:681:45:o;931:1638::-;1135:4;1164:2;1204;1193:9;1189:18;1234:2;1223:9;1216:21;1257:6;1292;1286:13;1323:6;1315;1308:22;1349:2;1339:12;;1382:2;1371:9;1367:18;1360:25;;1444:2;1434:6;1431:1;1427:14;1416:9;1412:30;1408:39;1482:2;1474:6;1470:15;1503:1;1524;1534:1006;1550:6;1545:3;1542:15;1534:1006;;;1619:22;;;-1:-1:-1;;1615:36:45;1603:49;;1675:13;;1762:9;;-1:-1:-1;;;;;1758:58:45;1743:74;;1856:11;;1850:18;1888:15;;;1881:27;;;1969:19;;1715:15;;;2001:24;;;2091:21;;;;2136:1;;2059:2;2047:15;;;2150:282;2166:8;2161:3;2158:17;2150:282;;;2247:15;;2264:66;2243:88;2229:103;;2401:17;;;;2194:1;2185:11;;;;;2358:14;;;;2150:282;;;-1:-1:-1;2518:12:45;;;;2455:5;-1:-1:-1;;;2483:15:45;;;;1576:1;1567:11;1534:1006;;;-1:-1:-1;2557:6:45;;931:1638;-1:-1:-1;;;;;;;;;931:1638:45:o;2574:250::-;2659:1;2669:113;2683:6;2680:1;2677:13;2669:113;;;2759:11;;;2753:18;2740:11;;;2733:39;2705:2;2698:10;2669:113;;;-1:-1:-1;;2816:1:45;2798:16;;2791:27;2574:250::o;2829:271::-;2871:3;2909:5;2903:12;2936:6;2931:3;2924:19;2952:76;3021:6;3014:4;3009:3;3005:14;2998:4;2991:5;2987:16;2952:76;:::i;:::-;3082:2;3061:15;-1:-1:-1;;3057:29:45;3048:39;;;;3089:4;3044:50;;2829:271;-1:-1:-1;;2829:271:45:o;3105:803::-;3267:4;3296:2;3336;3325:9;3321:18;3366:2;3355:9;3348:21;3389:6;3424;3418:13;3455:6;3447;3440:22;3493:2;3482:9;3478:18;3471:25;;3555:2;3545:6;3542:1;3538:14;3527:9;3523:30;3519:39;3505:53;;3593:2;3585:6;3581:15;3614:1;3624:255;3638:6;3635:1;3632:13;3624:255;;;3731:2;3727:7;3715:9;3707:6;3703:22;3699:36;3694:3;3687:49;3759:40;3792:6;3783;3777:13;3759:40;:::i;:::-;3749:50;-1:-1:-1;3857:12:45;;;;3822:15;;;;3660:1;3653:9;3624:255;;;-1:-1:-1;3896:6:45;;3105:803;-1:-1:-1;;;;;;;3105:803:45:o;4105:277::-;4172:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:52;;;4241:1;4238;4231:12;4193:52;4273:9;4267:16;4326:5;4319:13;4312:21;4305:5;4302:32;4292:60;;4348:1;4345;4338:12;4292:60;4371:5;4105:277;-1:-1:-1;;;4105:277:45:o;4871:313::-;4941:6;4994:2;4982:9;4973:7;4969:23;4965:32;4962:52;;;5010:1;5007;5000:12;4962:52;5042:9;5036:16;-1:-1:-1;;;;;5085:5:45;5081:54;5074:5;5071:65;5061:93;;5150:1;5147;5140:12;5189:184;-1:-1:-1;;;5238:1:45;5231:88;5338:4;5335:1;5328:15;5362:4;5359:1;5352:15;5378:897;5458:6;5511:2;5499:9;5490:7;5486:23;5482:32;5479:52;;;5527:1;5524;5517:12;5479:52;5560:9;5554:16;5589:18;5630:2;5622:6;5619:14;5616:34;;;5646:1;5643;5636:12;5616:34;5684:6;5673:9;5669:22;5659:32;;5729:7;5722:4;5718:2;5714:13;5710:27;5700:55;;5751:1;5748;5741:12;5700:55;5780:2;5774:9;5802:2;5798;5795:10;5792:36;;;5808:18;;:::i;:::-;5883:2;5877:9;5851:2;5937:13;;-1:-1:-1;;5933:22:45;;;5957:2;5929:31;5925:40;5913:53;;;5981:18;;;6001:22;;;5978:46;5975:72;;;6027:18;;:::i;:::-;6067:10;6063:2;6056:22;6102:2;6094:6;6087:18;6142:7;6137:2;6132;6128;6124:11;6120:20;6117:33;6114:53;;;6163:1;6160;6153:12;6114:53;6176:68;6241:2;6236;6228:6;6224:15;6219:2;6215;6211:11;6176:68;:::i;:::-;6263:6;5378:897;-1:-1:-1;;;;;;;5378:897:45:o;6280:184::-;6350:6;6403:2;6391:9;6382:7;6378:23;6374:32;6371:52;;;6419:1;6416;6409:12;6371:52;-1:-1:-1;6442:16:45;;6280:184;-1:-1:-1;6280:184:45:o;6469:437::-;6548:1;6544:12;;;;6591;;;6612:61;;6666:4;6658:6;6654:17;6644:27;;6612:61;6719:2;6711:6;6708:14;6688:18;6685:38;6682:218;;-1:-1:-1;;;6753:1:45;6746:88;6857:4;6854:1;6847:15;6885:4;6882:1;6875:15;6682:218;;6469:437;;;:::o;7213:430::-;7410:66;7402:6;7398:79;7393:3;7386:92;7368:3;7507:6;7501:13;7523:74;7590:6;7586:1;7581:3;7577:11;7570:4;7562:6;7558:17;7523:74;:::i;:::-;7617:16;;;;7635:1;7613:24;;7213:430;-1:-1:-1;;;7213:430:45:o;7648:287::-;7777:3;7815:6;7809:13;7831:66;7890:6;7885:3;7878:4;7870:6;7866:17;7831:66;:::i;:::-;7913:16;;;;;7648:287;-1:-1:-1;;7648:287:45:o;9109:446::-;9359:2;9348:9;9341:21;9398:1;9393:2;9382:9;9378:18;9371:29;9436:7;9431:2;9420:9;9416:18;9409:35;9482:3;9475:4;9464:9;9460:20;9453:33;9322:4;9503:46;9544:3;9533:9;9529:19;9521:6;9503:46;:::i;10423:440::-;10673:2;10662:9;10655:21;10636:4;10699:49;10744:2;10733:9;10729:18;10336:2;10324:15;;-1:-1:-1;;;10364:4:45;10355:14;;10348:36;10409:2;10400:12;;10259:159;10699:49;10796:9;10788:6;10784:22;10779:2;10768:9;10764:18;10757:50;10824:33;10850:6;10842;10824:33;:::i;:::-;10816:41;10423:440;-1:-1:-1;;;;10423:440:45:o;11032:::-;11282:2;11271:9;11264:21;11245:4;11308:49;11353:2;11342:9;11338:18;10945:2;10933:15;;-1:-1:-1;;;10973:4:45;10964:14;;10957:36;11018:2;11009:12;;10868:159;11880:348;12110:2;12099:9;12092:21;12073:4;12130:49;12175:2;12164:9;12160:18;10336:2;10324:15;;-1:-1:-1;;;10364:4:45;10355:14;;10348:36;10409:2;10400:12;;10259:159;12130:49;12122:57;;12215:6;12210:2;12199:9;12195:18;12188:34;11880:348;;;;:::o;12233:::-;12463:2;12452:9;12445:21;12426:4;12483:49;12528:2;12517:9;12513:18;10945:2;10933:15;;-1:-1:-1;;;10973:4:45;10964:14;;10957:36;11018:2;11009:12;;10868:159;12992:397;13222:2;13211:9;13204:21;13185:4;13242:49;13287:2;13276:9;13272:18;10336:2;10324:15;;-1:-1:-1;;;10364:4:45;10355:14;;10348:36;10409:2;10400:12;;10259:159;13242:49;13234:57;;-1:-1:-1;;;;;13331:6:45;13327:55;13322:2;13311:9;13307:18;13300:83;12992:397;;;;:::o;13394:::-;13624:2;13613:9;13606:21;13587:4;13644:49;13689:2;13678:9;13674:18;10945:2;10933:15;;-1:-1:-1;;;10973:4:45;10964:14;;10957:36;11018:2;11009:12;;10868:159","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","bridge()":"e78cea92","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","owner()":"8da5cb5b","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testApprove()":"1aeb10a6","testBurn()":"e13aba48","testLock()":"e96d88e0","testMintAndCheckBalance()":"6f2c893c","testTokenNameAndSymbol()":"218e00ff","testUnlock()":"c2745ada","user()":"4f8632ba"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintAndCheckBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTokenNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/tests/SATPNFTokenContractTest.sol\":\"SATPNFTokenContractTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"src/test/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/test/solidity/contracts/SATPNFTokenContract.sol\":{\"keccak256\":\"0x4ff4461689b2efb6431a3e47fa8be0bf16071e14fe76fb27652959fd20d1f6d2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3e7342af17c3ae08f4690c9ec86878651b68e95d44717438b4cda06720c31bcc\",\"dweb:/ipfs/QmcNgbY7qAm3K2YHu1Q5cYDryUGGFo5hUrEoEaGQ3AmFaC\"]},\"src/test/solidity/tests/SATPNFTokenContractTest.sol\":{\"keccak256\":\"0x1b0dc93fd1a13184569ae6c68b57638980a1d518c1ea6e5e9c43c1eda28a70a5\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://09e2136d6d37edaa9519d8c245ae84a0bc3cb541e44d514a15f147c65f8a1a3f\",\"dweb:/ipfs/QmRoenWmwKvYdjVkug64iBs4EuhHhAT6cQZKkGXRMjHvyd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testLock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintAndCheckBalance"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTokenNameAndSymbol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnlock"},{"inputs":[],"stateMutability":"view","type":"function","name":"user","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/tests/SATPNFTokenContractTest.sol":"SATPNFTokenContractTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"src/test/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/test/solidity/contracts/SATPNFTokenContract.sol":{"keccak256":"0x4ff4461689b2efb6431a3e47fa8be0bf16071e14fe76fb27652959fd20d1f6d2","urls":["bzz-raw://3e7342af17c3ae08f4690c9ec86878651b68e95d44717438b4cda06720c31bcc","dweb:/ipfs/QmcNgbY7qAm3K2YHu1Q5cYDryUGGFo5hUrEoEaGQ3AmFaC"],"license":"GPL-3.0"},"src/test/solidity/tests/SATPNFTokenContractTest.sol":{"keccak256":"0x1b0dc93fd1a13184569ae6c68b57638980a1d518c1ea6e5e9c43c1eda28a70a5","urls":["bzz-raw://09e2136d6d37edaa9519d8c245ae84a0bc3cb541e44d514a15f147c65f8a1a3f","dweb:/ipfs/QmRoenWmwKvYdjVkug64iBs4EuhHhAT6cQZKkGXRMjHvyd"],"license":"GPL-3.0"}},"version":1},"id":41} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPTokenContract.sol/SATPTokenContract.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPTokenContract.sol/SATPTokenContract.json index 89f1c4eecd..40367d81eb 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPTokenContract.sol/SATPTokenContract.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPTokenContract.sol/SATPTokenContract.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BRIDGE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OWNER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantBridgeRole","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasBridgeRole","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"noPermission","inputs":[{"name":"adr","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162001226380380620012268339810160408190526200003491620001ac565b6040518060400160405280600981526020016829a0aa282a37b5b2b760b91b815250604051806040016040528060048152602001630534154560e41b815250816004908162000084919062000283565b50600562000093828262000283565b505050620000c87fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82620000fd60201b60201c565b50620000f57f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f82620000fd565b50506200034f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001a6565b5060005b92915050565b600060208284031215620001bf57600080fd5b81516001600160a01b0381168114620001d757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020957607f821691505b6020821081036200022a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027e57600081815260208120601f850160051c81016020861015620002595750805b601f850160051c820191505b818110156200027a5782815560010162000265565b5050505b505050565b81516001600160401b038111156200029f576200029f620001de565b620002b781620002b08454620001f4565b8462000230565b602080601f831160018114620002ef5760008415620002d65750858301515b600019600386901b1c1916600185901b1785556200027a565b600085815260208120601f198616915b828110156200032057888601518255948401946001909101908401620002ff565b50858210156200033f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ec7806200035f6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c63430008140033","sourceMap":"368:2057:14:-:0;;;561:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1896:113:3;;;;;;;;;;;;;-1:-1:-1;;;1896:113:3;;;;;;;;;;;;;;;;-1:-1:-1;;;1896:113:3;;;1970:5;1962;:13;;;;;;:::i;:::-;-1:-1:-1;1985:7:3;:17;1995:7;1985;:17;:::i;:::-;;1896:113;;626:30:14::1;531:23;649:6;626:10;;;:30;;:::i;:::-;-1:-1:-1::0;666:31:14::1;464:24;690:6:::0;666:10:::1;:31::i;:::-;;561:143:::0;368:2057;;6179:316:0;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:6;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6272:217;6179:316;;;;:::o;14:290:15:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:15;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:15:o;309:127::-;370:10;365:3;361:20;358:1;351:31;401:4;398:1;391:15;425:4;422:1;415:15;441:380;520:1;516:12;;;;563;;;584:61;;638:4;630:6;626:17;616:27;;584:61;691:2;683:6;680:14;660:18;657:38;654:161;;737:10;732:3;728:20;725:1;718:31;772:4;769:1;762:15;800:4;797:1;790:15;654:161;;441:380;;;:::o;952:545::-;1054:2;1049:3;1046:11;1043:448;;;1090:1;1115:5;1111:2;1104:17;1160:4;1156:2;1146:19;1230:2;1218:10;1214:19;1211:1;1207:27;1201:4;1197:38;1266:4;1254:10;1251:20;1248:47;;;-1:-1:-1;1289:4:15;1248:47;1344:2;1339:3;1335:12;1332:1;1328:20;1322:4;1318:31;1308:41;;1399:82;1417:2;1410:5;1407:13;1399:82;;;1462:17;;;1443:1;1432:13;1399:82;;;1403:3;;;1043:448;952:545;;;:::o;1673:1352::-;1793:10;;-1:-1:-1;;;;;1815:30:15;;1812:56;;;1848:18;;:::i;:::-;1877:97;1967:6;1927:38;1959:4;1953:11;1927:38;:::i;:::-;1921:4;1877:97;:::i;:::-;2029:4;;2093:2;2082:14;;2110:1;2105:663;;;;2812:1;2829:6;2826:89;;;-1:-1:-1;2881:19:15;;;2875:26;2826:89;-1:-1:-1;;1630:1:15;1626:11;;;1622:24;1618:29;1608:40;1654:1;1650:11;;;1605:57;2928:81;;2075:944;;2105:663;899:1;892:14;;;936:4;923:18;;-1:-1:-1;;2141:20:15;;;2259:236;2273:7;2270:1;2267:14;2259:236;;;2362:19;;;2356:26;2341:42;;2454:27;;;;2422:1;2410:14;;;;2289:19;;2259:236;;;2263:3;2523:6;2514:7;2511:19;2508:201;;;2584:19;;;2578:26;-1:-1:-1;;2667:1:15;2663:14;;;2679:3;2659:24;2655:37;2651:42;2636:58;2621:74;;2508:201;-1:-1:-1;;;;;2755:1:15;2739:14;;;2735:22;2722:36;;-1:-1:-1;1673:1352:15:o;:::-;368:2057:14;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c63430008140033","sourceMap":"368:2057:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:202:0;;;;;;:::i;:::-;;:::i;:::-;;;516:14:15;;509:22;491:41;;479:2;464:18;2565:202:0;;;;;;;;2074:89:3;;;:::i;:::-;;;;;;;:::i;4293:186::-;;;;;;:::i;:::-;;:::i;3144:97::-;3222:12;;3144:97;;;1702:25:15;;;1690:2;1675:18;3144:97:3;1556:177:15;5039:244:3;;;;;;:::i;:::-;;:::i;3810:120:0:-;;;;;;:::i;:::-;3875:7;3901:12;;;;;;;;;;:22;;;;3810:120;4226:136;;;;;;:::i;:::-;;:::i;:::-;;3002:82:3;;;3075:2;2839:36:15;;2827:2;2812:18;3002:82:3;2697:184:15;5328:245:0;;;;;;:::i;:::-;;:::i;1021:161:14:-;;;;;;:::i;:::-;;:::i;3299:116:3:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3390:18:3;3364:7;3390:18;;;:9;:18;;;;;;;3299:116;2854:136:0;;;;;;:::i;:::-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;;;;2854:136;2276:93:3;;;:::i;1476:161:14:-;;;;;;:::i;:::-;;:::i;2187:49:0:-;;2232:4;2187:49;;1843:165:14;;;;;;:::i;:::-;;:::i;3610:178:3:-;;;;;;:::i;:::-;;:::i;426:62:14:-;;464:24;426:62;;4642:138:0;;;;;;:::i;:::-;;:::i;3846:140:3:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3952:18:3;;;3926:7;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3846:140;494:60:14;;531:23;494:60;;2218:205;;;;;;:::i;:::-;;:::i;2565:202:0:-;2650:4;2673:47;;;2688:32;2673:47;;:87;;-1:-1:-1;876:25:8;861:40;;;;2724:36:0;2666:94;2565:202;-1:-1:-1;;2565:202:0:o;2074:89:3:-;2119:13;2151:5;2144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89;:::o;4293:186::-;4366:4;735:10:6;4420:31:3;735:10:6;4436:7:3;4445:5;4420:8;:31::i;:::-;-1:-1:-1;4468:4:3;;4293:186;-1:-1:-1;;;4293:186:3:o;5039:244::-;5126:4;735:10:6;5182:37:3;5198:4;735:10:6;5213:5:3;5182:15;:37::i;:::-;5229:26;5239:4;5245:2;5249:5;5229:9;:26::i;:::-;-1:-1:-1;5272:4:3;;5039:244;-1:-1:-1;;;;5039:244:3:o;4226:136:0:-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;:::-;;4226:136:::0;;;:::o;5328:245::-;-1:-1:-1;;;;;5421:34:0;;735:10:6;5421:34:0;5417:102;;5478:30;;;;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;1021:161:14:-;1108:12;464:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1132:22:14::1;1138:7;1147:6;1132:5;:22::i;2276:93:3:-:0;2323:13;2355:7;2348:14;;;;;:::i;1476:161:14:-;1563:12;464:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1587:22:14::1;1593:7;1602:6;1587:5;:22::i;1843:165::-:0;1924:12;531:23;2464:16:0;2475:4;2464:10;:16::i;:::-;1948:32:14::1;464:24;1972:7;1948:10;:32::i;:::-;;1997:4;1990:11;;2490:1:0;1843:165:14::0;;;;:::o;3610:178:3:-;3679:4;735:10:6;3733:27:3;735:10:6;3750:2:3;3754:5;3733:9;:27::i;4642:138:0:-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;2218:205:14:-:0;-1:-1:-1;;;;;2954:29:0;;2281:12:14;2954:29:0;;;:12;;:29;:12;:29;;;;;2305:69:14;;;-1:-1:-1;2359:4:14;;2218:205;-1:-1:-1;2218:205:14:o;2305:69::-;2395:21;;;;;-1:-1:-1;;;;;3948:55:15;;2395:21:14;;;3930:74:15;3903:18;;2395:21:14;;;;;;;;8989:128:3;9073:37;9082:5;9089:7;9098:5;9105:4;9073:8;:37::i;10663:477::-;-1:-1:-1;;;;;3952:18:3;;;10762:24;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10828:37:3;;10824:310;;10904:5;10885:16;:24;10881:130;;;10936:60;;;;;-1:-1:-1;;;;;4235:55:15;;10936:60:3;;;4217:74:15;4307:18;;;4300:34;;;4350:18;;;4343:34;;;4190:18;;10936:60:3;4015:368:15;10881:130:3;11052:57;11061:5;11068:7;11096:5;11077:16;:24;11103:5;11052:8;:57::i;5656:300::-;-1:-1:-1;;;;;5739:18:3;;5735:86;;5780:30;;-1:-1:-1;;;5780:30:3;;5807:1;5780:30;;;3930:74:15;3903:18;;5780:30:3;3784:226:15;5735:86:3;-1:-1:-1;;;;;5834:16:3;;5830:86;;5873:32;;-1:-1:-1;;;5873:32:3;;5902:1;5873:32;;;3930:74:15;3903:18;;5873:32:3;3784:226:15;5830:86:3;5925:24;5933:4;5939:2;5943:5;5925:7;:24::i;3199:103:0:-;3265:30;3276:4;735:10:6;3265::0;:30::i;:::-;3199:103;:::o;6179:316::-;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:6;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6466:12;;6730:317;6808:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6824:217;;;6898:5;6866:12;;;;;;;;;;;-1:-1:-1;;;;;6866:29:0;;;;;;;;;;:37;;-1:-1:-1;;6866:37:0;;;6922:40;735:10:6;;6866:12:0;;6922:40;;6898:5;6922:40;-1:-1:-1;6983:4:0;6976:11;;7721:208:3;-1:-1:-1;;;;;7791:21:3;;7787:91;;7835:32;;-1:-1:-1;;;7835:32:3;;7864:1;7835:32;;;3930:74:15;3903:18;;7835:32:3;3784:226:15;7787:91:3;7887:35;7903:1;7907:7;7916:5;7887:7;:35::i;:::-;7721:208;;:::o;8247:206::-;-1:-1:-1;;;;;8317:21:3;;8313:89;;8361:30;;-1:-1:-1;;;8361:30:3;;8388:1;8361:30;;;3930:74:15;3903:18;;8361:30:3;3784:226:15;8313:89:3;8411:35;8419:7;8436:1;8440:5;8411:7;:35::i;9949:432::-;-1:-1:-1;;;;;10061:19:3;;10057:89;;10103:32;;;;;10132:1;10103:32;;;3930:74:15;3903:18;;10103:32:3;3784:226:15;10057:89:3;-1:-1:-1;;;;;10159:21:3;;10155:90;;10203:31;;;;;10231:1;10203:31;;;3930:74:15;3903:18;;10203:31:3;3784:226:15;10155:90:3;-1:-1:-1;;;;;10254:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10299:76;;;;10349:7;-1:-1:-1;;;;;10333:31:3;10342:5;-1:-1:-1;;;;;10333:31:3;;10358:5;10333:31;;;;1702:25:15;;1690:2;1675:18;;1556:177;10333:31:3;;;;;;;;9949:432;;;;:::o;6271:1107::-;-1:-1:-1;;;;;6360:18:3;;6356:540;;6512:5;6496:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6356:540:3;;-1:-1:-1;6356:540:3;;-1:-1:-1;;;;;6570:15:3;;6548:19;6570:15;;;:9;:15;;;;;;6603:19;;;6599:115;;;6649:50;;;;;-1:-1:-1;;;;;4235:55:15;;6649:50:3;;;4217:74:15;4307:18;;;4300:34;;;4350:18;;;4343:34;;;4190:18;;6649:50:3;4015:368:15;6599:115:3;-1:-1:-1;;;;;6834:15:3;;;;;;:9;:15;;;;;6852:19;;;;6834:37;;6356:540;-1:-1:-1;;;;;6910:16:3;;6906:425;;7073:12;:21;;;;;;;6906:425;;;-1:-1:-1;;;;;7284:13:3;;;;;;:9;:13;;;;;:22;;;;;;6906:425;7361:2;-1:-1:-1;;;;;7346:25:3;7355:4;-1:-1:-1;;;;;7346:25:3;;7365:5;7346:25;;;;1702::15;;1690:2;1675:18;;1556:177;7346:25:3;;;;;;;;6271:1107;;;:::o;3432:197:0:-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;3515:108;;3565:47;;;;;-1:-1:-1;;;;;4864:55:15;;3565:47:0;;;4846:74:15;4936:18;;;4929:34;;;4819:18;;3565:47:0;4672:297:15;14:332;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:15:o;543:548::-;655:4;684:2;713;702:9;695:21;745:6;739:13;788:6;783:2;772:9;768:18;761:34;813:1;823:140;837:6;834:1;831:13;823:140;;;932:14;;;928:23;;922:30;898:17;;;917:2;894:26;887:66;852:10;;823:140;;;827:3;1012:1;1007:2;998:6;987:9;983:22;979:31;972:42;1082:2;1075;1071:7;1066:2;1058:6;1054:15;1050:29;1039:9;1035:45;1031:54;1023:62;;;;543:548;;;;:::o;1096:196::-;1164:20;;-1:-1:-1;;;;;1213:54:15;;1203:65;;1193:93;;1282:1;1279;1272:12;1193:93;1096:196;;;:::o;1297:254::-;1365:6;1373;1426:2;1414:9;1405:7;1401:23;1397:32;1394:52;;;1442:1;1439;1432:12;1394:52;1465:29;1484:9;1465:29;:::i;:::-;1455:39;1541:2;1526:18;;;;1513:32;;-1:-1:-1;;;1297:254:15:o;1738:328::-;1815:6;1823;1831;1884:2;1872:9;1863:7;1859:23;1855:32;1852:52;;;1900:1;1897;1890:12;1852:52;1923:29;1942:9;1923:29;:::i;:::-;1913:39;;1971:38;2005:2;1994:9;1990:18;1971:38;:::i;:::-;1961:48;;2056:2;2045:9;2041:18;2028:32;2018:42;;1738:328;;;;;:::o;2071:180::-;2130:6;2183:2;2171:9;2162:7;2158:23;2154:32;2151:52;;;2199:1;2196;2189:12;2151:52;-1:-1:-1;2222:23:15;;2071:180;-1:-1:-1;2071:180:15:o;2438:254::-;2506:6;2514;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;2619:9;2606:23;2596:33;;2648:38;2682:2;2671:9;2667:18;2648:38;:::i;:::-;2638:48;;2438:254;;;;;:::o;2886:186::-;2945:6;2998:2;2986:9;2977:7;2973:23;2969:32;2966:52;;;3014:1;3011;3004:12;2966:52;3037:29;3056:9;3037:29;:::i;3077:260::-;3145:6;3153;3206:2;3194:9;3185:7;3181:23;3177:32;3174:52;;;3222:1;3219;3212:12;3174:52;3245:29;3264:9;3245:29;:::i;:::-;3235:39;;3293:38;3327:2;3316:9;3312:18;3293:38;:::i;3342:437::-;3421:1;3417:12;;;;3464;;;3485:61;;3539:4;3531:6;3527:17;3517:27;;3485:61;3592:2;3584:6;3581:14;3561:18;3558:38;3555:218;;-1:-1:-1;;;3626:1:15;3619:88;3730:4;3727:1;3720:15;3758:4;3755:1;3748:15;4388:279;4453:9;;;4474:10;;;4471:190;;;-1:-1:-1;;;4514:1:15;4507:88;4618:4;4615:1;4608:15;4646:4;4643:1;4636:15","linkReferences":{}},"methodIdentifiers":{"BRIDGE_ROLE()":"b5bfddea","DEFAULT_ADMIN_ROLE()":"a217fddf","OWNER_ROLE()":"e58378bb","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","getRoleAdmin(bytes32)":"248a9ca3","grantBridgeRole(address)":"a5e99b8e","grantRole(bytes32,address)":"2f2ff15d","hasBridgeRole(address)":"ea134071","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","name()":"06fdde03","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adr\",\"type\":\"address\"}],\"name\":\"noPermission\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BRIDGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OWNER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantBridgeRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasBridgeRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(address,uint256)\":{\"params\":{\"account\":\"The account that will have the tokens burned.\",\"amount\":\"The amount of tokens to burn.\"},\"returns\":{\"success\":\"A boolean that indicates if the operation was successful.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantBridgeRole(address)\":{\"params\":{\"account\":\"The account to check.\"},\"returns\":{\"success\":\"A boolean that indicates if the account has the role.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasBridgeRole(address)\":{\"params\":{\"account\":\"The account to check.\"},\"returns\":{\"success\":\"A boolean that indicates if the account has the role.\"}},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"mint(address,uint256)\":{\"params\":{\"account\":\"The account that will receive the minted tokens.\",\"amount\":\"The amount of tokens to mint.\"},\"returns\":{\"success\":\"A boolean that indicates if the operation was successful.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"title\":\"SATPTokenContract The SATPTokenContract is a example costum ERC20 token contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(address,uint256)\":{\"notice\":\"Burn destroys the given amount of tokens from the owner.\"},\"grantBridgeRole(address)\":{\"notice\":\"Checks if the given account has the given role.\"},\"hasBridgeRole(address)\":{\"notice\":\"Checks if the given account has the given role.\"},\"mint(address,uint256)\":{\"notice\":\"Mint creates new tokens with the given amount and assigns them to the owner.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/contracts/SATPTokenContract.sol\":\"SATPTokenContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/test/solidity/contracts/SATPTokenContract.sol\":{\"keccak256\":\"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f\",\"dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"type":"error","name":"noPermission"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OWNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantBridgeRole","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasBridgeRole","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(address,uint256)":{"params":{"account":"The account that will have the tokens burned.","amount":"The amount of tokens to burn."},"returns":{"success":"A boolean that indicates if the operation was successful."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantBridgeRole(address)":{"params":{"account":"The account to check."},"returns":{"success":"A boolean that indicates if the account has the role."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasBridgeRole(address)":{"params":{"account":"The account to check."},"returns":{"success":"A boolean that indicates if the account has the role."}},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"mint(address,uint256)":{"params":{"account":"The account that will receive the minted tokens.","amount":"The amount of tokens to mint."},"returns":{"success":"A boolean that indicates if the operation was successful."}},"name()":{"details":"Returns the name of the token."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{"burn(address,uint256)":{"notice":"Burn destroys the given amount of tokens from the owner."},"grantBridgeRole(address)":{"notice":"Checks if the given account has the given role."},"hasBridgeRole(address)":{"notice":"Checks if the given account has the given role."},"mint(address,uint256)":{"notice":"Mint creates new tokens with the given amount and assigns them to the owner."}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/contracts/SATPTokenContract.sol":"SATPTokenContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/test/solidity/contracts/SATPTokenContract.sol":{"keccak256":"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc","urls":["bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f","dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D"],"license":"GPL-3.0"}},"version":1},"id":14} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"BRIDGE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OWNER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantBridgeRole","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasBridgeRole","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"noPermission","inputs":[{"name":"adr","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162001226380380620012268339810160408190526200003491620001ac565b6040518060400160405280600981526020016829a0aa282a37b5b2b760b91b815250604051806040016040528060048152602001630534154560e41b815250816004908162000084919062000283565b50600562000093828262000283565b505050620000c87fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82620000fd60201b60201c565b50620000f57f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f82620000fd565b50506200034f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001a6565b5060005b92915050565b600060208284031215620001bf57600080fd5b81516001600160a01b0381168114620001d757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020957607f821691505b6020821081036200022a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027e57600081815260208120601f850160051c81016020861015620002595750805b601f850160051c820191505b818110156200027a5782815560010162000265565b5050505b505050565b81516001600160401b038111156200029f576200029f620001de565b620002b781620002b08454620001f4565b8462000230565b602080601f831160018114620002ef5760008415620002d65750858301515b600019600386901b1c1916600185901b1785556200027a565b600085815260208120601f198616915b828110156200032057888601518255948401946001909101908401620002ff565b50858210156200033f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ec7806200035f6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c63430008140033","sourceMap":"368:2057:20:-:0;;;561:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1896:113:3;;;;;;;;;;;;;-1:-1:-1;;;1896:113:3;;;;;;;;;;;;;;;;-1:-1:-1;;;1896:113:3;;;1970:5;1962;:13;;;;;;:::i;:::-;-1:-1:-1;1985:7:3;:17;1995:7;1985;:17;:::i;:::-;;1896:113;;626:30:20::1;531:23;649:6;626:10;;;:30;;:::i;:::-;-1:-1:-1::0;666:31:20::1;464:24;690:6:::0;666:10:::1;:31::i;:::-;;561:143:::0;368:2057;;6179:316:0;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:10;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6272:217;6179:316;;;;:::o;14:290:21:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:21;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:21:o;309:127::-;370:10;365:3;361:20;358:1;351:31;401:4;398:1;391:15;425:4;422:1;415:15;441:380;520:1;516:12;;;;563;;;584:61;;638:4;630:6;626:17;616:27;;584:61;691:2;683:6;680:14;660:18;657:38;654:161;;737:10;732:3;728:20;725:1;718:31;772:4;769:1;762:15;800:4;797:1;790:15;654:161;;441:380;;;:::o;952:545::-;1054:2;1049:3;1046:11;1043:448;;;1090:1;1115:5;1111:2;1104:17;1160:4;1156:2;1146:19;1230:2;1218:10;1214:19;1211:1;1207:27;1201:4;1197:38;1266:4;1254:10;1251:20;1248:47;;;-1:-1:-1;1289:4:21;1248:47;1344:2;1339:3;1335:12;1332:1;1328:20;1322:4;1318:31;1308:41;;1399:82;1417:2;1410:5;1407:13;1399:82;;;1462:17;;;1443:1;1432:13;1399:82;;;1403:3;;;1043:448;952:545;;;:::o;1673:1352::-;1793:10;;-1:-1:-1;;;;;1815:30:21;;1812:56;;;1848:18;;:::i;:::-;1877:97;1967:6;1927:38;1959:4;1953:11;1927:38;:::i;:::-;1921:4;1877:97;:::i;:::-;2029:4;;2093:2;2082:14;;2110:1;2105:663;;;;2812:1;2829:6;2826:89;;;-1:-1:-1;2881:19:21;;;2875:26;2826:89;-1:-1:-1;;1630:1:21;1626:11;;;1622:24;1618:29;1608:40;1654:1;1650:11;;;1605:57;2928:81;;2075:944;;2105:663;899:1;892:14;;;936:4;923:18;;-1:-1:-1;;2141:20:21;;;2259:236;2273:7;2270:1;2267:14;2259:236;;;2362:19;;;2356:26;2341:42;;2454:27;;;;2422:1;2410:14;;;;2289:19;;2259:236;;;2263:3;2523:6;2514:7;2511:19;2508:201;;;2584:19;;;2578:26;-1:-1:-1;;2667:1:21;2663:14;;;2679:3;2659:24;2655:37;2651:42;2636:58;2621:74;;2508:201;-1:-1:-1;;;;;2755:1:21;2739:14;;;2735:22;2722:36;;-1:-1:-1;1673:1352:21:o;:::-;368:2057:20;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c63430008140033","sourceMap":"368:2057:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:202:0;;;;;;:::i;:::-;;:::i;:::-;;;516:14:21;;509:22;491:41;;479:2;464:18;2565:202:0;;;;;;;;2074:89:3;;;:::i;:::-;;;;;;;:::i;4293:186::-;;;;;;:::i;:::-;;:::i;3144:97::-;3222:12;;3144:97;;;1702:25:21;;;1690:2;1675:18;3144:97:3;1556:177:21;5039:244:3;;;;;;:::i;:::-;;:::i;3810:120:0:-;;;;;;:::i;:::-;3875:7;3901:12;;;;;;;;;;:22;;;;3810:120;4226:136;;;;;;:::i;:::-;;:::i;:::-;;3002:82:3;;;3075:2;2839:36:21;;2827:2;2812:18;3002:82:3;2697:184:21;5328:245:0;;;;;;:::i;:::-;;:::i;1021:161:20:-;;;;;;:::i;:::-;;:::i;3299:116:3:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3390:18:3;3364:7;3390:18;;;:9;:18;;;;;;;3299:116;2854:136:0;;;;;;:::i;:::-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;;;;2854:136;2276:93:3;;;:::i;1476:161:20:-;;;;;;:::i;:::-;;:::i;2187:49:0:-;;2232:4;2187:49;;1843:165:20;;;;;;:::i;:::-;;:::i;3610:178:3:-;;;;;;:::i;:::-;;:::i;426:62:20:-;;464:24;426:62;;4642:138:0;;;;;;:::i;:::-;;:::i;3846:140:3:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3952:18:3;;;3926:7;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3846:140;494:60:20;;531:23;494:60;;2218:205;;;;;;:::i;:::-;;:::i;2565:202:0:-;2650:4;2673:47;;;2688:32;2673:47;;:87;;-1:-1:-1;876:25:12;861:40;;;;2724:36:0;2666:94;2565:202;-1:-1:-1;;2565:202:0:o;2074:89:3:-;2119:13;2151:5;2144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89;:::o;4293:186::-;4366:4;735:10:10;4420:31:3;735:10:10;4436:7:3;4445:5;4420:8;:31::i;:::-;-1:-1:-1;4468:4:3;;4293:186;-1:-1:-1;;;4293:186:3:o;5039:244::-;5126:4;735:10:10;5182:37:3;5198:4;735:10:10;5213:5:3;5182:15;:37::i;:::-;5229:26;5239:4;5245:2;5249:5;5229:9;:26::i;:::-;-1:-1:-1;5272:4:3;;5039:244;-1:-1:-1;;;;5039:244:3:o;4226:136:0:-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;:::-;;4226:136:::0;;;:::o;5328:245::-;-1:-1:-1;;;;;5421:34:0;;735:10:10;5421:34:0;5417:102;;5478:30;;;;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;1021:161:20:-;1108:12;464:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1132:22:20::1;1138:7;1147:6;1132:5;:22::i;2276:93:3:-:0;2323:13;2355:7;2348:14;;;;;:::i;1476:161:20:-;1563:12;464:24;2464:16:0;2475:4;2464:10;:16::i;:::-;1587:22:20::1;1593:7;1602:6;1587:5;:22::i;1843:165::-:0;1924:12;531:23;2464:16:0;2475:4;2464:10;:16::i;:::-;1948:32:20::1;464:24;1972:7;1948:10;:32::i;:::-;;1997:4;1990:11;;2490:1:0;1843:165:20::0;;;;:::o;3610:178:3:-;3679:4;735:10:10;3733:27:3;735:10:10;3750:2:3;3754:5;3733:9;:27::i;4642:138:0:-;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;2218:205:20:-:0;-1:-1:-1;;;;;2954:29:0;;2281:12:20;2954:29:0;;;:12;;:29;:12;:29;;;;;2305:69:20;;;-1:-1:-1;2359:4:20;;2218:205;-1:-1:-1;2218:205:20:o;2305:69::-;2395:21;;;;;-1:-1:-1;;;;;3948:55:21;;2395:21:20;;;3930:74:21;3903:18;;2395:21:20;;;;;;;;8989:128:3;9073:37;9082:5;9089:7;9098:5;9105:4;9073:8;:37::i;10663:477::-;-1:-1:-1;;;;;3952:18:3;;;10762:24;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10828:37:3;;10824:310;;10904:5;10885:16;:24;10881:130;;;10936:60;;;;;-1:-1:-1;;;;;4235:55:21;;10936:60:3;;;4217:74:21;4307:18;;;4300:34;;;4350:18;;;4343:34;;;4190:18;;10936:60:3;4015:368:21;10881:130:3;11052:57;11061:5;11068:7;11096:5;11077:16;:24;11103:5;11052:8;:57::i;5656:300::-;-1:-1:-1;;;;;5739:18:3;;5735:86;;5780:30;;-1:-1:-1;;;5780:30:3;;5807:1;5780:30;;;3930:74:21;3903:18;;5780:30:3;3784:226:21;5735:86:3;-1:-1:-1;;;;;5834:16:3;;5830:86;;5873:32;;-1:-1:-1;;;5873:32:3;;5902:1;5873:32;;;3930:74:21;3903:18;;5873:32:3;3784:226:21;5830:86:3;5925:24;5933:4;5939:2;5943:5;5925:7;:24::i;3199:103:0:-;3265:30;3276:4;735:10:10;3265::0;:30::i;:::-;3199:103;:::o;6179:316::-;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:0;;;;;;;;;:36;;-1:-1:-1;;6315:36:0;6347:4;6315:36;;;6397:12;735:10:10;;656:96;6397:12:0;-1:-1:-1;;;;;6370:40:0;6388:7;-1:-1:-1;;;;;6370:40:0;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;6272:217;-1:-1:-1;6473:5:0;6466:12;;6730:317;6808:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;6824:217;;;6898:5;6866:12;;;;;;;;;;;-1:-1:-1;;;;;6866:29:0;;;;;;;;;;:37;;-1:-1:-1;;6866:37:0;;;6922:40;735:10:10;;6866:12:0;;6922:40;;6898:5;6922:40;-1:-1:-1;6983:4:0;6976:11;;7721:208:3;-1:-1:-1;;;;;7791:21:3;;7787:91;;7835:32;;-1:-1:-1;;;7835:32:3;;7864:1;7835:32;;;3930:74:21;3903:18;;7835:32:3;3784:226:21;7787:91:3;7887:35;7903:1;7907:7;7916:5;7887:7;:35::i;:::-;7721:208;;:::o;8247:206::-;-1:-1:-1;;;;;8317:21:3;;8313:89;;8361:30;;-1:-1:-1;;;8361:30:3;;8388:1;8361:30;;;3930:74:21;3903:18;;8361:30:3;3784:226:21;8313:89:3;8411:35;8419:7;8436:1;8440:5;8411:7;:35::i;9949:432::-;-1:-1:-1;;;;;10061:19:3;;10057:89;;10103:32;;;;;10132:1;10103:32;;;3930:74:21;3903:18;;10103:32:3;3784:226:21;10057:89:3;-1:-1:-1;;;;;10159:21:3;;10155:90;;10203:31;;;;;10231:1;10203:31;;;3930:74:21;3903:18;;10203:31:3;3784:226:21;10155:90:3;-1:-1:-1;;;;;10254:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10299:76;;;;10349:7;-1:-1:-1;;;;;10333:31:3;10342:5;-1:-1:-1;;;;;10333:31:3;;10358:5;10333:31;;;;1702:25:21;;1690:2;1675:18;;1556:177;10333:31:3;;;;;;;;9949:432;;;;:::o;6271:1107::-;-1:-1:-1;;;;;6360:18:3;;6356:540;;6512:5;6496:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6356:540:3;;-1:-1:-1;6356:540:3;;-1:-1:-1;;;;;6570:15:3;;6548:19;6570:15;;;:9;:15;;;;;;6603:19;;;6599:115;;;6649:50;;;;;-1:-1:-1;;;;;4235:55:21;;6649:50:3;;;4217:74:21;4307:18;;;4300:34;;;4350:18;;;4343:34;;;4190:18;;6649:50:3;4015:368:21;6599:115:3;-1:-1:-1;;;;;6834:15:3;;;;;;:9;:15;;;;;6852:19;;;;6834:37;;6356:540;-1:-1:-1;;;;;6910:16:3;;6906:425;;7073:12;:21;;;;;;;6906:425;;;-1:-1:-1;;;;;7284:13:3;;;;;;:9;:13;;;;;:22;;;;;;6906:425;7361:2;-1:-1:-1;;;;;7346:25:3;7355:4;-1:-1:-1;;;;;7346:25:3;;7365:5;7346:25;;;;1702::21;;1690:2;1675:18;;1556:177;7346:25:3;;;;;;;;6271:1107;;;:::o;3432:197:0:-;2931:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:0;;;;;;;;;;;;3515:108;;3565:47;;;;;-1:-1:-1;;;;;4864:55:21;;3565:47:0;;;4846:74:21;4936:18;;;4929:34;;;4819:18;;3565:47:0;4672:297:21;14:332;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:21:o;543:548::-;655:4;684:2;713;702:9;695:21;745:6;739:13;788:6;783:2;772:9;768:18;761:34;813:1;823:140;837:6;834:1;831:13;823:140;;;932:14;;;928:23;;922:30;898:17;;;917:2;894:26;887:66;852:10;;823:140;;;827:3;1012:1;1007:2;998:6;987:9;983:22;979:31;972:42;1082:2;1075;1071:7;1066:2;1058:6;1054:15;1050:29;1039:9;1035:45;1031:54;1023:62;;;;543:548;;;;:::o;1096:196::-;1164:20;;-1:-1:-1;;;;;1213:54:21;;1203:65;;1193:93;;1282:1;1279;1272:12;1193:93;1096:196;;;:::o;1297:254::-;1365:6;1373;1426:2;1414:9;1405:7;1401:23;1397:32;1394:52;;;1442:1;1439;1432:12;1394:52;1465:29;1484:9;1465:29;:::i;:::-;1455:39;1541:2;1526:18;;;;1513:32;;-1:-1:-1;;;1297:254:21:o;1738:328::-;1815:6;1823;1831;1884:2;1872:9;1863:7;1859:23;1855:32;1852:52;;;1900:1;1897;1890:12;1852:52;1923:29;1942:9;1923:29;:::i;:::-;1913:39;;1971:38;2005:2;1994:9;1990:18;1971:38;:::i;:::-;1961:48;;2056:2;2045:9;2041:18;2028:32;2018:42;;1738:328;;;;;:::o;2071:180::-;2130:6;2183:2;2171:9;2162:7;2158:23;2154:32;2151:52;;;2199:1;2196;2189:12;2151:52;-1:-1:-1;2222:23:21;;2071:180;-1:-1:-1;2071:180:21:o;2438:254::-;2506:6;2514;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;2619:9;2606:23;2596:33;;2648:38;2682:2;2671:9;2667:18;2648:38;:::i;:::-;2638:48;;2438:254;;;;;:::o;2886:186::-;2945:6;2998:2;2986:9;2977:7;2973:23;2969:32;2966:52;;;3014:1;3011;3004:12;2966:52;3037:29;3056:9;3037:29;:::i;3077:260::-;3145:6;3153;3206:2;3194:9;3185:7;3181:23;3177:32;3174:52;;;3222:1;3219;3212:12;3174:52;3245:29;3264:9;3245:29;:::i;:::-;3235:39;;3293:38;3327:2;3316:9;3312:18;3293:38;:::i;3342:437::-;3421:1;3417:12;;;;3464;;;3485:61;;3539:4;3531:6;3527:17;3517:27;;3485:61;3592:2;3584:6;3581:14;3561:18;3558:38;3555:218;;-1:-1:-1;;;3626:1:21;3619:88;3730:4;3727:1;3720:15;3758:4;3755:1;3748:15;4388:279;4453:9;;;4474:10;;;4471:190;;;-1:-1:-1;;;4514:1:21;4507:88;4618:4;4615:1;4608:15;4646:4;4643:1;4636:15","linkReferences":{}},"methodIdentifiers":{"BRIDGE_ROLE()":"b5bfddea","DEFAULT_ADMIN_ROLE()":"a217fddf","OWNER_ROLE()":"e58378bb","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","getRoleAdmin(bytes32)":"248a9ca3","grantBridgeRole(address)":"a5e99b8e","grantRole(bytes32,address)":"2f2ff15d","hasBridgeRole(address)":"ea134071","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","name()":"06fdde03","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adr\",\"type\":\"address\"}],\"name\":\"noPermission\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BRIDGE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OWNER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantBridgeRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasBridgeRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(address,uint256)\":{\"params\":{\"account\":\"The account that will have the tokens burned.\",\"amount\":\"The amount of tokens to burn.\"},\"returns\":{\"success\":\"A boolean that indicates if the operation was successful.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantBridgeRole(address)\":{\"params\":{\"account\":\"The account to check.\"},\"returns\":{\"success\":\"A boolean that indicates if the account has the role.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasBridgeRole(address)\":{\"params\":{\"account\":\"The account to check.\"},\"returns\":{\"success\":\"A boolean that indicates if the account has the role.\"}},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"mint(address,uint256)\":{\"params\":{\"account\":\"The account that will receive the minted tokens.\",\"amount\":\"The amount of tokens to mint.\"},\"returns\":{\"success\":\"A boolean that indicates if the operation was successful.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"title\":\"SATPTokenContract The SATPTokenContract is a example costum ERC20 token contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(address,uint256)\":{\"notice\":\"Burn destroys the given amount of tokens from the owner.\"},\"grantBridgeRole(address)\":{\"notice\":\"Checks if the given account has the given role.\"},\"hasBridgeRole(address)\":{\"notice\":\"Checks if the given account has the given role.\"},\"mint(address,uint256)\":{\"notice\":\"Mint creates new tokens with the given amount and assigns them to the owner.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/contracts/SATPTokenContract.sol\":\"SATPTokenContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/test/solidity/contracts/SATPTokenContract.sol\":{\"keccak256\":\"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f\",\"dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"type":"error","name":"noPermission"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OWNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantBridgeRole","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasBridgeRole","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(address,uint256)":{"params":{"account":"The account that will have the tokens burned.","amount":"The amount of tokens to burn."},"returns":{"success":"A boolean that indicates if the operation was successful."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantBridgeRole(address)":{"params":{"account":"The account to check."},"returns":{"success":"A boolean that indicates if the account has the role."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasBridgeRole(address)":{"params":{"account":"The account to check."},"returns":{"success":"A boolean that indicates if the account has the role."}},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"mint(address,uint256)":{"params":{"account":"The account that will receive the minted tokens.","amount":"The amount of tokens to mint."},"returns":{"success":"A boolean that indicates if the operation was successful."}},"name()":{"details":"Returns the name of the token."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{"burn(address,uint256)":{"notice":"Burn destroys the given amount of tokens from the owner."},"grantBridgeRole(address)":{"notice":"Checks if the given account has the given role."},"hasBridgeRole(address)":{"notice":"Checks if the given account has the given role."},"mint(address,uint256)":{"notice":"Mint creates new tokens with the given amount and assigns them to the owner."}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/contracts/SATPTokenContract.sol":"SATPTokenContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/test/solidity/contracts/SATPTokenContract.sol":{"keccak256":"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc","urls":["bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f","dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D"],"license":"GPL-3.0"}},"version":1},"id":20} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPTokenContractTest.sol/SATPTokenContractTest.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPTokenContractTest.sol/SATPTokenContractTest.json index 034dad8e81..cd5cffc1f2 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPTokenContractTest.sol/SATPTokenContractTest.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPTokenContractTest.sol/SATPTokenContractTest.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"bridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testApprove","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCheckBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintAndCheckBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTokenNameAndSymbol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"user","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600560809081526437bbb732b960d91b60a0526200003f9062000101565b601c80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600681526562726964676560d01b6020820152620000879062000101565b601d80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152633ab9b2b960e11b6020820152620000cd9062000101565b601e80546001600160a01b0319166001600160a01b0392909216919091179055348015620000fa57600080fd5b50620002ee565b60006200010e8262000115565b5092915050565b600080826040516020016200012b91906200025a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd919062000278565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001fb9085908790600401620002aa565b600060405180830381600087803b1580156200021657600080fd5b505af11580156200022b573d6000803e3d6000fd5b50505050915091565b60005b838110156200025157818101518382015260200162000237565b50506000910152565b600082516200026e81846020870162000234565b9190910192915050565b6000602082840312156200028b57600080fd5b81516001600160a01b0381168114620002a357600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620002d981606085016020870162000234565b601f01601f1916919091016060019392505050565b61331480620002fe6000396000f3fe60806040523480156200001157600080fd5b5060043610620001895760003560e01c806385226c8111620000dd578063ba414fa6116200008b578063e20c9f71116200006e578063e20c9f7114620002ae578063e78cea9214620002b8578063fa7626d414620002cc57600080fd5b8063ba414fa61462000289578063e13aba4814620002a457600080fd5b8063908783e511620000c0578063908783e5146200026b578063916a17c61462000275578063b5508aa9146200027f57600080fd5b806385226c81146200023e5780638da5cb5b146200025757600080fd5b80633f7286f4116200013b57806366d9a9a0116200011e57806366d9a9a014620002115780636f2c893c146200022a57806370557298146200023457600080fd5b80633f7286f414620001da5780634f8632ba14620001e457600080fd5b80631ed7831c11620001705780631ed7831c14620001a4578063218e00ff14620001c65780633e5e3c2314620001d057600080fd5b80630a9254e4146200018e5780631aeb10a6146200019a575b600080fd5b62000198620002da565b005b62000198620005d8565b620001ae620007b7565b604051620001bd919062001c09565b60405180910390f35b620001986200081b565b620001ae620009b5565b620001ae62000a17565b601e54620001f8906001600160a01b031681565b6040516001600160a01b039091168152602001620001bd565b6200021b62000a79565b604051620001bd919062001c58565b6200019862000b81565b6200019862000d01565b62000248620010d7565b604051620001bd919062001d7b565b601c54620001f8906001600160a01b031681565b62000198620011b1565b6200021b62001201565b6200024862001300565b62000293620013da565b6040519015158152602001620001bd565b620001986200150f565b620001ae6200175a565b601d54620001f8906001600160a01b031681565b600054620002939060ff1681565b601c5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200033457600080fd5b505af115801562000349573d6000803e3d6000fd5b5050601c546040516001600160a01b0390911692506200036a915062001bfb565b6001600160a01b039091168152602001604051809103906000f08015801562000397573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c546040516303223eab60e11b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b5050601b54601d546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c4919062001de1565b50601b54601d546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200055e92919091169063ea13407190602401602060405180830381865afa15801562000532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000558919062001de1565b620017bc565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620005bd57600080fd5b505af1158015620005d2573d6000803e3d6000fd5b50505050565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152681b1ae4d6e2ef50000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200063d57600080fd5b505af115801562000652573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018690529116925063095ea7b391506044016020604051808303816000875af1158015620006ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006d2919062001de1565b50601b54601e54601d546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152600092919091169063dd62ed3e90604401602060405180830381865afa15801562000749573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076f919062001e0c565b9050620007b381836040518060400160405280601b81526020017f417070726f76616c20616c6c6f77616e6365206d69736d61746368000000000081525062001834565b5050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200081157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620007f2575b5050505050905090565b601b54604080517f06fdde030000000000000000000000000000000000000000000000000000000081529051620008e7926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562000881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ab919081019062001e3c565b6040518060400160405280600981526020017f53415450546f6b656e000000000000000000000000000000000000000000000081525062001886565b601b54604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051620009b3926001600160a01b0316916395d89b419160048083019260009291908290030181865afa1580156200094d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000977919081019062001e3c565b6040518060400160405280600481526020017f534154500000000000000000000000000000000000000000000000000000000081525062001886565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000b785760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000b5f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000b0b5790505b5050505050815250508152602001906001019062000a9d565b50505050905090565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562000be757600080fd5b505af115801562000bfc573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000c56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7c919062001de1565b50601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9291909116906370a0823190602401602060405180830381865afa15801562000cd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cf7919062001e0c565b82620019e8565b50565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000d6657600080fd5b505af115801562000d7b573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000dd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dfb919062001de1565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e5657600080fd5b505af115801562000e6b573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152681b1ae4d6e2ef50000060248201529116925063095ea7b391506044016020604051808303816000875af115801562000ecd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef3919062001de1565b50601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000f4e57600080fd5b505af115801562000f63573d6000803e3d6000fd5b5050601b54601e54601d546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152681b1ae4d6e2ef5000006044820152911692506323b872dd91506064016020604051808303816000875af115801562000fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200100f919062001de1565b50601b54601e546040516370a0823160e01b81526001600160a01b0391821660048201526200109b9291909116906370a08231906024015b602060405180830381865afa15801562001065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108b919062001e0c565b681b1ae4d6e2ef500000620019e8565b601b54601d546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9291909116906370a082319060240162001047565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000b785783829060005260206000200180546200111d9062001ef5565b80601f01602080910402602001604051908101604052809291908181526020018280546200114b9062001ef5565b80156200119c5780601f1062001170576101008083540402835291602001916200119c565b820191906000526020600020905b8154815290600101906020018083116200117e57829003601f168201915b505050505081526020019060010190620010fb565b601d5460405163ca669fa760e01b81526001600160a01b0390911660048201526842e530adfce008000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000bcc565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000b785760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620012e757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012935790505b5050505050815250508152602001906001019062001225565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000b78578382906000526020600020018054620013469062001ef5565b80601f0160208091040260200160405190810160405280929190818152602001828054620013749062001ef5565b8015620013c55780601f106200139957610100808354040283529160200191620013c5565b820191906000526020600020905b815481529060010190602001808311620013a757829003601f168201915b50505050508152602001906001019062001324565b60008054610100900460ff1615620013fb5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200150a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200148c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001f31565b60408051601f1981840301815290829052620014a89162001f7b565b6000604051808303816000865af19150503d8060008114620014e7576040519150601f19603f3d011682016040523d82523d6000602084013e620014ec565b606091505b509150508080602001905181019062001506919062001de1565b9150505b919050565b601d546040516303223eab60e11b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200157457600080fd5b505af115801562001589573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af1158015620015e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001609919062001de1565b50601b54601e546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152681b1ae4d6e2ef5000006024820152911690639dc29fac906044016020604051808303816000875af115801562001681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016a7919062001de1565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200170757600080fd5b505af11580156200171c573d6000803e3d6000fd5b5050601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9450911691506370a082319060240162001047565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b8062000cfe577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620018229060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000cfe62001ae8565b81831462001881577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200186d919062001f99565b60405180910390a1620018818383620019e8565b505050565b8060405160200162001899919062001f7b565b6040516020818303038152906040528051906020012082604051602001620018c2919062001f7b565b6040516020818303038152906040528051906020012014620007b3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019649060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200199d919062001fe2565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620019d6919062002029565b60405180910390a1620007b362001ae8565b808214620007b3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001a769060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162001aaf919062002054565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620019d691906200208d565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001bea5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262001b85929160200162001f31565b60408051601f198184030181529082905262001ba19162001f7b565b6000604051808303816000865af19150503d806000811462001be0576040519150601f19603f3d011682016040523d82523d6000602084013e62001be5565b606091505b505050505b6000805461ff001916610100179055565b61122680620020b983390190565b6020808252825182820181905260009190848201906040850190845b8181101562001c4c5783516001600160a01b03168352928401929184019160010162001c25565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001d1857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001d025783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062001cbe565b50978a0197955050509187019160010162001c80565b50919998505050505050505050565b60005b8381101562001d4457818101518382015260200162001d2a565b50506000910152565b6000815180845262001d6781602086016020860162001d27565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001dd457603f1988860301845262001dc185835162001d4d565b9450928501929085019060010162001da2565b5092979650505050505050565b60006020828403121562001df457600080fd5b8151801515811462001e0557600080fd5b9392505050565b60006020828403121562001e1f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001e4f57600080fd5b815167ffffffffffffffff8082111562001e6857600080fd5b818401915084601f83011262001e7d57600080fd5b81518181111562001e925762001e9262001e26565b604051601f8201601f19908116603f0116810190838211818310171562001ebd5762001ebd62001e26565b8160405282815287602084870101111562001ed757600080fd5b62001eea83602083016020880162001d27565b979650505050505050565b600181811c9082168062001f0a57607f821691505b60208210810362001f2b57634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162001f6d81600485016020870162001d27565b919091016004019392505050565b6000825162001f8f81846020870162001d27565b9190910192915050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062001e05608083018462001d4d565b6040815260006200200d60408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262002021818562001d4d565b949350505050565b6040815260006200200d60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200207f60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200207f60408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b5060405162001226380380620012268339810160408190526200003491620001ac565b6040518060400160405280600981526020016829a0aa282a37b5b2b760b91b815250604051806040016040528060048152602001630534154560e41b815250816004908162000084919062000283565b50600562000093828262000283565b505050620000c87fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82620000fd60201b60201c565b50620000f57f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f82620000fd565b50506200034f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001a6565b5060005b92915050565b600060208284031215620001bf57600080fd5b81516001600160a01b0381168114620001d757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020957607f821691505b6020821081036200022a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027e57600081815260208120601f850160051c81016020861015620002595750805b601f850160051c820191505b818110156200027a5782815560010162000265565b5050505b505050565b81516001600160401b038111156200029f576200029f620001de565b620002b781620002b08454620001f4565b8462000230565b602080601f831160018114620002ef5760008415620002d65750858301515b600019600386901b1c1916600185901b1785556200027a565b600085815260208120601f198616915b828110156200032057888601518255948401946001909101908401620002ff565b50858210156200033f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ec7806200035f6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c63430008140033a264697066735822122079180fabc0f70583377cb945b60a5af9910512c3289b71ba1c6949075c11e19664736f6c63430008140033","sourceMap":"1572:26:13:-:0;;;1594:4;-1:-1:-1;;1572:26:13;;;;;;;;3161:44:16;;;;;;;;;;;318:17:35;213:2169;318:17;;213:2169;318:17;;;-1:-1:-1;;;318:17:35;;;;:8;:17::i;:::-;295:40;;;-1:-1:-1;;;;;;295:40:35;-1:-1:-1;;;;;295:40:35;;;;;;;;;;365:18;;;;;;;;;;;;-1:-1:-1;;;365:18:35;;;;;;:8;:18::i;:::-;341:42;;;-1:-1:-1;;;;;;341:42:35;-1:-1:-1;;;;;341:42:35;;;;;;;;;;411:16;;;;;;;;;;;;-1:-1:-1;;;411:16:35;;;;;;:8;:16::i;:::-;389:38;;;-1:-1:-1;;;;;;389:38:35;-1:-1:-1;;;;;389:38:35;;;;;;;;;;213:2169;;;;;;;;;;;;16374:125:17;16438:12;16472:20;16487:4;16472:14;:20::i;:::-;-1:-1:-1;16462:30:17;16374:125;-1:-1:-1;;16374:125:17:o;16093:242::-;16163:12;16177:18;16255:4;16238:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16238:22:17;;;;;;;16228:33;;16238:22;16228:33;;;;-1:-1:-1;;;;;;16279:19:17;;;;;709:25:37;;;16228:33:17;-1:-1:-1;16279:7:17;;;;682:18:37;;16279:19:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16308:20;;-1:-1:-1;;;16308:20:17;;16272:26;;-1:-1:-1;16308:8:17;;;;:20;;16272:26;;16323:4;;16308:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16093:242;;;:::o;14:250:37:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:37;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:37:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:37;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:37:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:37;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:37:o;:::-;213:2169:35;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001895760003560e01c806385226c8111620000dd578063ba414fa6116200008b578063e20c9f71116200006e578063e20c9f7114620002ae578063e78cea9214620002b8578063fa7626d414620002cc57600080fd5b8063ba414fa61462000289578063e13aba4814620002a457600080fd5b8063908783e511620000c0578063908783e5146200026b578063916a17c61462000275578063b5508aa9146200027f57600080fd5b806385226c81146200023e5780638da5cb5b146200025757600080fd5b80633f7286f4116200013b57806366d9a9a0116200011e57806366d9a9a014620002115780636f2c893c146200022a57806370557298146200023457600080fd5b80633f7286f414620001da5780634f8632ba14620001e457600080fd5b80631ed7831c11620001705780631ed7831c14620001a4578063218e00ff14620001c65780633e5e3c2314620001d057600080fd5b80630a9254e4146200018e5780631aeb10a6146200019a575b600080fd5b62000198620002da565b005b62000198620005d8565b620001ae620007b7565b604051620001bd919062001c09565b60405180910390f35b620001986200081b565b620001ae620009b5565b620001ae62000a17565b601e54620001f8906001600160a01b031681565b6040516001600160a01b039091168152602001620001bd565b6200021b62000a79565b604051620001bd919062001c58565b6200019862000b81565b6200019862000d01565b62000248620010d7565b604051620001bd919062001d7b565b601c54620001f8906001600160a01b031681565b62000198620011b1565b6200021b62001201565b6200024862001300565b62000293620013da565b6040519015158152602001620001bd565b620001986200150f565b620001ae6200175a565b601d54620001f8906001600160a01b031681565b600054620002939060ff1681565b601c5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200033457600080fd5b505af115801562000349573d6000803e3d6000fd5b5050601c546040516001600160a01b0390911692506200036a915062001bfb565b6001600160a01b039091168152602001604051809103906000f08015801562000397573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c546040516303223eab60e11b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b5050601b54601d546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c4919062001de1565b50601b54601d546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200055e92919091169063ea13407190602401602060405180830381865afa15801562000532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000558919062001de1565b620017bc565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620005bd57600080fd5b505af1158015620005d2573d6000803e3d6000fd5b50505050565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152681b1ae4d6e2ef50000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200063d57600080fd5b505af115801562000652573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018690529116925063095ea7b391506044016020604051808303816000875af1158015620006ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006d2919062001de1565b50601b54601e54601d546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152600092919091169063dd62ed3e90604401602060405180830381865afa15801562000749573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076f919062001e0c565b9050620007b381836040518060400160405280601b81526020017f417070726f76616c20616c6c6f77616e6365206d69736d61746368000000000081525062001834565b5050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200081157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620007f2575b5050505050905090565b601b54604080517f06fdde030000000000000000000000000000000000000000000000000000000081529051620008e7926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562000881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ab919081019062001e3c565b6040518060400160405280600981526020017f53415450546f6b656e000000000000000000000000000000000000000000000081525062001886565b601b54604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051620009b3926001600160a01b0316916395d89b419160048083019260009291908290030181865afa1580156200094d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000977919081019062001e3c565b6040518060400160405280600481526020017f534154500000000000000000000000000000000000000000000000000000000081525062001886565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000b785760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000b5f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000b0b5790505b5050505050815250508152602001906001019062000a9d565b50505050905090565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562000be757600080fd5b505af115801562000bfc573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000c56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7c919062001de1565b50601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9291909116906370a0823190602401602060405180830381865afa15801562000cd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cf7919062001e0c565b82620019e8565b50565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000d6657600080fd5b505af115801562000d7b573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000dd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dfb919062001de1565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e5657600080fd5b505af115801562000e6b573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152681b1ae4d6e2ef50000060248201529116925063095ea7b391506044016020604051808303816000875af115801562000ecd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef3919062001de1565b50601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000f4e57600080fd5b505af115801562000f63573d6000803e3d6000fd5b5050601b54601e54601d546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152681b1ae4d6e2ef5000006044820152911692506323b872dd91506064016020604051808303816000875af115801562000fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200100f919062001de1565b50601b54601e546040516370a0823160e01b81526001600160a01b0391821660048201526200109b9291909116906370a08231906024015b602060405180830381865afa15801562001065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108b919062001e0c565b681b1ae4d6e2ef500000620019e8565b601b54601d546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9291909116906370a082319060240162001047565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000b785783829060005260206000200180546200111d9062001ef5565b80601f01602080910402602001604051908101604052809291908181526020018280546200114b9062001ef5565b80156200119c5780601f1062001170576101008083540402835291602001916200119c565b820191906000526020600020905b8154815290600101906020018083116200117e57829003601f168201915b505050505081526020019060010190620010fb565b601d5460405163ca669fa760e01b81526001600160a01b0390911660048201526842e530adfce008000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000bcc565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000b785760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620012e757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012935790505b5050505050815250508152602001906001019062001225565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000b78578382906000526020600020018054620013469062001ef5565b80601f0160208091040260200160405190810160405280929190818152602001828054620013749062001ef5565b8015620013c55780601f106200139957610100808354040283529160200191620013c5565b820191906000526020600020905b815481529060010190602001808311620013a757829003601f168201915b50505050508152602001906001019062001324565b60008054610100900460ff1615620013fb5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200150a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200148c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001f31565b60408051601f1981840301815290829052620014a89162001f7b565b6000604051808303816000865af19150503d8060008114620014e7576040519150601f19603f3d011682016040523d82523d6000602084013e620014ec565b606091505b509150508080602001905181019062001506919062001de1565b9150505b919050565b601d546040516303223eab60e11b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200157457600080fd5b505af115801562001589573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af1158015620015e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001609919062001de1565b50601b54601e546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152681b1ae4d6e2ef5000006024820152911690639dc29fac906044016020604051808303816000875af115801562001681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016a7919062001de1565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200170757600080fd5b505af11580156200171c573d6000803e3d6000fd5b5050601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9450911691506370a082319060240162001047565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b8062000cfe577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620018229060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000cfe62001ae8565b81831462001881577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200186d919062001f99565b60405180910390a1620018818383620019e8565b505050565b8060405160200162001899919062001f7b565b6040516020818303038152906040528051906020012082604051602001620018c2919062001f7b565b6040516020818303038152906040528051906020012014620007b3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019649060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200199d919062001fe2565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620019d6919062002029565b60405180910390a1620007b362001ae8565b808214620007b3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001a769060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162001aaf919062002054565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620019d691906200208d565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001bea5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262001b85929160200162001f31565b60408051601f198184030181529082905262001ba19162001f7b565b6000604051808303816000865af19150503d806000811462001be0576040519150601f19603f3d011682016040523d82523d6000602084013e62001be5565b606091505b505050505b6000805461ff001916610100179055565b61122680620020b983390190565b6020808252825182820181905260009190848201906040850190845b8181101562001c4c5783516001600160a01b03168352928401929184019160010162001c25565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001d1857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001d025783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062001cbe565b50978a0197955050509187019160010162001c80565b50919998505050505050505050565b60005b8381101562001d4457818101518382015260200162001d2a565b50506000910152565b6000815180845262001d6781602086016020860162001d27565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001dd457603f1988860301845262001dc185835162001d4d565b9450928501929085019060010162001da2565b5092979650505050505050565b60006020828403121562001df457600080fd5b8151801515811462001e0557600080fd5b9392505050565b60006020828403121562001e1f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001e4f57600080fd5b815167ffffffffffffffff8082111562001e6857600080fd5b818401915084601f83011262001e7d57600080fd5b81518181111562001e925762001e9262001e26565b604051601f8201601f19908116603f0116810190838211818310171562001ebd5762001ebd62001e26565b8160405282815287602084870101111562001ed757600080fd5b62001eea83602083016020880162001d27565b979650505050505050565b600181811c9082168062001f0a57607f821691505b60208210810362001f2b57634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162001f6d81600485016020870162001d27565b919091016004019392505050565b6000825162001f8f81846020870162001d27565b9190910192915050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062001e05608083018462001d4d565b6040815260006200200d60408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262002021818562001d4d565b949350505050565b6040815260006200200d60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200207f60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200207f60408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b5060405162001226380380620012268339810160408190526200003491620001ac565b6040518060400160405280600981526020016829a0aa282a37b5b2b760b91b815250604051806040016040528060048152602001630534154560e41b815250816004908162000084919062000283565b50600562000093828262000283565b505050620000c87fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82620000fd60201b60201c565b50620000f57f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f82620000fd565b50506200034f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001a6565b5060005b92915050565b600060208284031215620001bf57600080fd5b81516001600160a01b0381168114620001d757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020957607f821691505b6020821081036200022a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027e57600081815260208120601f850160051c81016020861015620002595750805b601f850160051c820191505b818110156200027a5782815560010162000265565b5050505b505050565b81516001600160401b038111156200029f576200029f620001de565b620002b781620002b08454620001f4565b8462000230565b602080601f831160018114620002ef5760008415620002d65750858301515b600019600386901b1c1916600185901b1785556200027a565b600085815260208120601f198616915b828110156200032057888601518255948401946001909101908401620002ff565b50858210156200033f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ec7806200035f6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c63430008140033a264697066735822122079180fabc0f70583377cb945b60a5af9910512c3289b71ba1c6949075c11e19664736f6c63430008140033","sourceMap":"213:2169:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;434:303;;;:::i;:::-;;1393:343;;;:::i;2161:134:19:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;743:149:35;;;:::i;2930:133:19:-;;;:::i;2631:141::-;;;:::i;389:38:35:-;;;;;-1:-1:-1;;;;;389:38:35;;;;;;-1:-1:-1;;;;;864:55:37;;;846:74;;834:2;819:18;389:38:35;700:226:37;2447:178:19;;;:::i;:::-;;;;;;;:::i;898:211:35:-;;;:::i;1742:429::-;;;:::i;2301:140:19:-;;;:::i;:::-;;;;;;;:::i;295:40:35:-;;;;;-1:-1:-1;;;;;295:40:35;;;2177:203;;;:::i;2778:146:19:-;;;:::i;1866:141::-;;;:::i;1819:584:13:-;;;:::i;:::-;;;4076:14:37;;4069:22;4051:41;;4039:2;4024:18;1819:584:13;3911:187:37;1115:272:35;;;:::i;2013:142:19:-;;;:::i;341:42:35:-;;;;;-1:-1:-1;;;;;341:42:35;;;1572:26:13;;;;;;;;;434:303:35;477:5;;468:15;;-1:-1:-1;;;468:15:35;;-1:-1:-1;;;;;477:5:35;;;468:15;;;846:74:37;468:8:35;;;;819:18:37;;468:15:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;530:5:35;;508:28;;-1:-1:-1;;;;;530:5:35;;;;-1:-1:-1;508:28:35;;-1:-1:-1;508:28:35;:::i;:::-;-1:-1:-1;;;;;864:55:37;;;846:74;;834:2;819:18;508:28:35;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:12:35;:43;;;;-1:-1:-1;;;;;493:43:35;;;;;;561:5;;547:20;;-1:-1:-1;;;547:20:35;;561:5;;547:20;;;846:74:37;547:13:35;;;;819:18:37;;547:20:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;577:12:35;;606:6;;577:36;;;;;-1:-1:-1;;;;;606:6:35;;;577:36;;;846:74:37;577:12:35;;;-1:-1:-1;577:28:35;;-1:-1:-1;819:18:37;;577:36:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;671:12:35;;698:6;;671:34;;;;;-1:-1:-1;;;;;698:6:35;;;671:34;;;846:74:37;660:46:35;;671:12;;;;;:26;;819:18:37;;671:34:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;660:10;:46::i;:::-;317:28:14;309:37;;-1:-1:-1;;;;;716:12:35;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;434:303::o;1393:343::-;1543:4;;1534:14;;-1:-1:-1;;;1534:14:35;;-1:-1:-1;;;;;1543:4:35;;;1534:14;;;846:74:37;1450:9:35;;1534:8;;;;819:18:37;;1534:14:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1558:12:35;;1579:6;;1558:36;;-1:-1:-1;;;1558:36:35;;-1:-1:-1;;;;;1579:6:35;;;1558:36;;;4559:74:37;4649:18;;;4642:34;;;1558:12:35;;;-1:-1:-1;1558:20:35;;-1:-1:-1;4532:18:37;;1558:36:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1625:12:35;;1648:4;;1654:6;;1625:36;;;;;-1:-1:-1;;;;;1648:4:35;;;1625:36;;;4922:34:37;1654:6:35;;;4972:18:37;;;4965:43;1605:17:35;;1625:12;;;;;:22;;4834:18:37;;1625:36:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1605:56;;1671:58;1680:9;1691:6;1671:58;;;;;;;;;;;;;;;;;:8;:58::i;:::-;1423:313;;1393:343::o;2161:134:19:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:19;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;743:149:35:-;803:12;;:19;;;;;;;;794:42;;-1:-1:-1;;;;;803:12:35;;:17;;:19;;;;;:12;;:19;;;;;;;:12;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;803:19:35;;;;;;;;;;;;:::i;:::-;794:42;;;;;;;;;;;;;;;;;:8;:42::i;:::-;855:12;;:21;;;;;;;;846:39;;-1:-1:-1;;;;;855:12:35;;:19;;:21;;;;;:12;;:21;;;;;;;:12;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;855:21:35;;;;;;;;;;;;:::i;:::-;846:39;;;;;;;;;;;;;;;;;:8;:39::i;:::-;743:149::o;2930:133:19:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:19;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:19;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;898:211:35:-;997:6;;988:16;;-1:-1:-1;;;988:16:35;;-1:-1:-1;;;;;997:6:35;;;988:16;;;846:74:37;967:10:35;;988:8;;;;819:18:37;;988:16:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1014:12:35;;1032:4;;1014:31;;-1:-1:-1;;;1014:31:35;;-1:-1:-1;;;;;1032:4:35;;;1014:31;;;4559:74:37;4649:18;;;4642:34;;;1014:12:35;;;-1:-1:-1;1014:17:35;;-1:-1:-1;4532:18:37;;1014:31:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1065:12:35;;1088:4;;1065:28;;-1:-1:-1;;;1065:28:35;;-1:-1:-1;;;;;1088:4:35;;;1065:28;;;846:74:37;1056:46:35;;1065:12;;;;;:22;;819:18:37;;1065:28:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1095:6;1056:8;:46::i;:::-;940:169;898:211::o;1742:429::-;1834:6;;1825:16;;-1:-1:-1;;;1825:16:35;;-1:-1:-1;;;;;1834:6:35;;;1825:16;;;846:74:37;1804:10:35;;1825:8;;;;819:18:37;;1825:16:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1851:12:35;;1869:4;;1851:31;;-1:-1:-1;;;1851:31:35;;-1:-1:-1;;;;;1869:4:35;;;1851:31;;;4559:74:37;4649:18;;;4642:34;;;1851:12:35;;;-1:-1:-1;1851:17:35;;-1:-1:-1;4532:18:37;;1851:31:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1902:4:35;;1893:14;;-1:-1:-1;;;1893:14:35;;-1:-1:-1;;;;;1902:4:35;;;1893:14;;;846:74:37;1893:8:35;;;;819:18:37;;1893:14:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1917:12:35;;1938:6;;1917:39;;-1:-1:-1;;;1917:39:35;;-1:-1:-1;;;;;1938:6:35;;;1917:39;;;4559:74:37;1946:9:35;4649:18:37;;;4642:34;1917:12:35;;;-1:-1:-1;1917:20:35;;-1:-1:-1;4532:18:37;;1917:39:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1976:6:35;;1967:16;;-1:-1:-1;;;1967:16:35;;-1:-1:-1;;;;;1976:6:35;;;1967:16;;;846:74:37;1967:8:35;;;;819:18:37;;1967:16:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1993:12:35;;2019:4;;2025:6;;1993:50;;;;;-1:-1:-1;;;;;2019:4:35;;;1993:50;;;6920:34:37;2025:6:35;;;6970:18:37;;;6963:43;2033:9:35;7022:18:37;;;7015:34;1993:12:35;;;-1:-1:-1;1993:25:35;;-1:-1:-1;6832:18:37;;1993:50:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2063:12:35;;2086:4;;2063:28;;-1:-1:-1;;;2063:28:35;;-1:-1:-1;;;;;2086:4:35;;;2063:28;;;846:74:37;2054:49:35;;2063:12;;;;;:22;;819:18:37;;2063:28:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2093:9;2054:8;:49::i;:::-;2122:12;;2145:6;;2122:30;;-1:-1:-1;;;2122:30:35;;-1:-1:-1;;;;;2145:6:35;;;2122:30;;;846:74:37;2113:51:35;;2122:12;;;;;:22;;819:18:37;;2122:30:35;700:226:37;2301:140:19;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2177:203:35;2268:6;;2259:16;;-1:-1:-1;;;2259:16:35;;-1:-1:-1;;;;;2268:6:35;;;2259:16;;;846:74:37;2239:10:35;;2259:8;;;;819:18:37;;2259:16:35;700:226:37;2778:146:19;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:13;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:13;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;4559:74:37;;;-1:-1:-1;;;4649:18:37;;;4642:34;2196:43:13;;;;;;;;;4532:18:37;;;2196:43:13;;;-1:-1:-1;;1671:64:13;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:13;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:13:o;1115:272:35:-;1204:6;;1190:21;;-1:-1:-1;;;1190:21:35;;-1:-1:-1;;;;;1204:6:35;;;1190:21;;;846:74:37;1169:10:35;;1190:13;;;;819:18:37;;1190:21:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1221:12:35;;1239:4;;1221:31;;-1:-1:-1;;;1221:31:35;;-1:-1:-1;;;;;1239:4:35;;;1221:31;;;4559:74:37;4649:18;;;4642:34;;;1221:12:35;;;-1:-1:-1;1221:17:35;;-1:-1:-1;4532:18:37;;1221:31:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1262:12:35;;1280:4;;1262:34;;;;;-1:-1:-1;;;;;1280:4:35;;;1262:34;;;4559:74:37;1286:9:35;4649:18:37;;;4642:34;1262:12:35;;;:17;;4532:18:37;;1262:34:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:14;309:37;;-1:-1:-1;;;;;1306:12:35;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1340:12:35;;1363:4;;1340:28;;-1:-1:-1;;;1340:28:35;;-1:-1:-1;;;;;1363:4:35;;;1340:28;;;846:74:37;1331:49:35;;-1:-1:-1;1340:12:35;;;-1:-1:-1;1340:22:35;;819:18:37;;1340:28:35;700:226:37;2013:142:19;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:19;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3262:157:13:-;3322:9;3317:96;;3352:30;;;;;8733:2:37;8715:21;;;8772:2;8752:18;;;8745:30;8811:25;8806:2;8791:18;;8784:53;8869:2;8854:18;;8531:347;3352:30:13;;;;;;;;3396:6;:4;:6::i;5476:178::-;5557:1;5552;:6;5548:100;;5579:30;5605:3;5579:30;;;;;;:::i;:::-;;;;;;;;5623:14;5632:1;5635;5623:8;:14::i;:::-;5476:178;;;:::o;17902:344::-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;9830:2:37;9812:21;;;9869:2;9849:18;;;9842:30;9908:34;9903:2;9888:18;;9881:62;9979:6;9974:2;9959:18;;9952:34;10018:3;10003:19;;9628:400;18062:43:13;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;5209:262::-;5271:1;5266;:6;5262:203;;5293:41;;;;;11453:2:37;11435:21;;;11492:2;11472:18;;;11465:30;11531:34;11526:2;11511:18;;11504:62;11602:4;11597:2;11582:18;;11575:32;11639:3;11624:19;;11251:398;5293:41:13;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;12562:74:37;;;-1:-1:-1;;;12652:18:37;;;12645:34;;;;2712:4:13;12695:18:37;;;12688:34;2489:11:13;;1671:64;2586:43;;12535:18:37;;2652:67:13;;;-1:-1:-1;;2652:67:13;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:13;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:13;2820:7;:14;;-1:-1:-1;;2820:14:13;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;14:681:37:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:37;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:37;;14:681;-1:-1:-1;;;;;;14:681:37:o;931:1636::-;1133:4;1162:2;1202;1191:9;1187:18;1232:2;1221:9;1214:21;1255:6;1290;1284:13;1321:6;1313;1306:22;1347:2;1337:12;;1380:2;1369:9;1365:18;1358:25;;1442:2;1432:6;1429:1;1425:14;1414:9;1410:30;1406:39;1480:2;1472:6;1468:15;1501:1;1522;1532:1006;1548:6;1543:3;1540:15;1532:1006;;;1617:22;;;-1:-1:-1;;1613:36:37;1601:49;;1673:13;;1760:9;;-1:-1:-1;;;;;1756:58:37;1741:74;;1854:11;;1848:18;1886:15;;;1879:27;;;1967:19;;1713:15;;;1999:24;;;2089:21;;;;2134:1;;2057:2;2045:15;;;2148:282;2164:8;2159:3;2156:17;2148:282;;;2245:15;;2262:66;2241:88;2227:103;;2399:17;;;;2192:1;2183:11;;;;;2356:14;;;;2148:282;;;-1:-1:-1;2516:12:37;;;;2453:5;-1:-1:-1;;;2481:15:37;;;;1574:1;1565:11;1532:1006;;;-1:-1:-1;2555:6:37;;931:1636;-1:-1:-1;;;;;;;;;931:1636:37:o;2572:250::-;2657:1;2667:113;2681:6;2678:1;2675:13;2667:113;;;2757:11;;;2751:18;2738:11;;;2731:39;2703:2;2696:10;2667:113;;;-1:-1:-1;;2814:1:37;2796:16;;2789:27;2572:250::o;2827:271::-;2869:3;2907:5;2901:12;2934:6;2929:3;2922:19;2950:76;3019:6;3012:4;3007:3;3003:14;2996:4;2989:5;2985:16;2950:76;:::i;:::-;3080:2;3059:15;-1:-1:-1;;3055:29:37;3046:39;;;;3087:4;3042:50;;2827:271;-1:-1:-1;;2827:271:37:o;3103:803::-;3265:4;3294:2;3334;3323:9;3319:18;3364:2;3353:9;3346:21;3387:6;3422;3416:13;3453:6;3445;3438:22;3491:2;3480:9;3476:18;3469:25;;3553:2;3543:6;3540:1;3536:14;3525:9;3521:30;3517:39;3503:53;;3591:2;3583:6;3579:15;3612:1;3622:255;3636:6;3633:1;3630:13;3622:255;;;3729:2;3725:7;3713:9;3705:6;3701:22;3697:36;3692:3;3685:49;3757:40;3790:6;3781;3775:13;3757:40;:::i;:::-;3747:50;-1:-1:-1;3855:12:37;;;;3820:15;;;;3658:1;3651:9;3622:255;;;-1:-1:-1;3894:6:37;;3103:803;-1:-1:-1;;;;;;;3103:803:37:o;4103:277::-;4170:6;4223:2;4211:9;4202:7;4198:23;4194:32;4191:52;;;4239:1;4236;4229:12;4191:52;4271:9;4265:16;4324:5;4317:13;4310:21;4303:5;4300:32;4290:60;;4346:1;4343;4336:12;4290:60;4369:5;4103:277;-1:-1:-1;;;4103:277:37:o;5019:184::-;5089:6;5142:2;5130:9;5121:7;5117:23;5113:32;5110:52;;;5158:1;5155;5148:12;5110:52;-1:-1:-1;5181:16:37;;5019:184;-1:-1:-1;5019:184:37:o;5208:::-;-1:-1:-1;;;5257:1:37;5250:88;5357:4;5354:1;5347:15;5381:4;5378:1;5371:15;5397:897;5477:6;5530:2;5518:9;5509:7;5505:23;5501:32;5498:52;;;5546:1;5543;5536:12;5498:52;5579:9;5573:16;5608:18;5649:2;5641:6;5638:14;5635:34;;;5665:1;5662;5655:12;5635:34;5703:6;5692:9;5688:22;5678:32;;5748:7;5741:4;5737:2;5733:13;5729:27;5719:55;;5770:1;5767;5760:12;5719:55;5799:2;5793:9;5821:2;5817;5814:10;5811:36;;;5827:18;;:::i;:::-;5902:2;5896:9;5870:2;5956:13;;-1:-1:-1;;5952:22:37;;;5976:2;5948:31;5944:40;5932:53;;;6000:18;;;6020:22;;;5997:46;5994:72;;;6046:18;;:::i;:::-;6086:10;6082:2;6075:22;6121:2;6113:6;6106:18;6161:7;6156:2;6151;6147;6143:11;6139:20;6136:33;6133:53;;;6182:1;6179;6172:12;6133:53;6195:68;6260:2;6255;6247:6;6243:15;6238:2;6234;6230:11;6195:68;:::i;:::-;6282:6;5397:897;-1:-1:-1;;;;;;;5397:897:37:o;7060:437::-;7139:1;7135:12;;;;7182;;;7203:61;;7257:4;7249:6;7245:17;7235:27;;7203:61;7310:2;7302:6;7299:14;7279:18;7276:38;7273:218;;-1:-1:-1;;;7344:1:37;7337:88;7448:4;7445:1;7438:15;7476:4;7473:1;7466:15;7273:218;;7060:437;;;:::o;7804:430::-;8001:66;7993:6;7989:79;7984:3;7977:92;7959:3;8098:6;8092:13;8114:74;8181:6;8177:1;8172:3;8168:11;8161:4;8153:6;8149:17;8114:74;:::i;:::-;8208:16;;;;8226:1;8204:24;;7804:430;-1:-1:-1;;;7804:430:37:o;8239:287::-;8368:3;8406:6;8400:13;8422:66;8481:6;8476:3;8469:4;8461:6;8457:17;8422:66;:::i;:::-;8504:16;;;;;8239:287;-1:-1:-1;;8239:287:37:o;8883:446::-;9133:2;9122:9;9115:21;9172:1;9167:2;9156:9;9152:18;9145:29;9210:7;9205:2;9194:9;9190:18;9183:35;9256:3;9249:4;9238:9;9234:20;9227:33;9096:4;9277:46;9318:3;9307:9;9303:19;9295:6;9277:46;:::i;10197:440::-;10447:2;10436:9;10429:21;10410:4;10473:49;10518:2;10507:9;10503:18;10110:2;10098:15;;-1:-1:-1;;;10138:4:37;10129:14;;10122:36;10183:2;10174:12;;10033:159;10473:49;10570:9;10562:6;10558:22;10553:2;10542:9;10538:18;10531:50;10598:33;10624:6;10616;10598:33;:::i;:::-;10590:41;10197:440;-1:-1:-1;;;;10197:440:37:o;10806:::-;11056:2;11045:9;11038:21;11019:4;11082:49;11127:2;11116:9;11112:18;10719:2;10707:15;;-1:-1:-1;;;10747:4:37;10738:14;;10731:36;10792:2;10783:12;;10642:159;11654:348;11884:2;11873:9;11866:21;11847:4;11904:49;11949:2;11938:9;11934:18;10110:2;10098:15;;-1:-1:-1;;;10138:4:37;10129:14;;10122:36;10183:2;10174:12;;10033:159;11904:49;11896:57;;11989:6;11984:2;11973:9;11969:18;11962:34;11654:348;;;;:::o;12007:::-;12237:2;12226:9;12219:21;12200:4;12257:49;12302:2;12291:9;12287:18;10719:2;10707:15;;-1:-1:-1;;;10747:4:37;10738:14;;10731:36;10792:2;10783:12;;10642:159","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","bridge()":"e78cea92","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","owner()":"8da5cb5b","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testApprove()":"1aeb10a6","testBurn()":"e13aba48","testCheckBalance()":"908783e5","testMintAndCheckBalance()":"6f2c893c","testTokenNameAndSymbol()":"218e00ff","testTransferFrom()":"70557298","user()":"4f8632ba"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCheckBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintAndCheckBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTokenNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/tests/SATPTokenContractTest.sol\":\"SATPTokenContractTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"src/test/solidity/contracts/SATPTokenContract.sol\":{\"keccak256\":\"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f\",\"dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D\"]},\"src/test/solidity/tests/SATPTokenContractTest.sol\":{\"keccak256\":\"0xd9f9b6cd7f7cb4950fed50e1b2d7ab975b09da66cf01a3ea5b0f3f48a958bac2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0bb4f474b1da3dfeabd4bfe914fabedebe08f05a4ef42baae51ce9569d8f2db\",\"dweb:/ipfs/QmXsuMdZAoo29XNHF5zVfL8pXjxSWJqcb2m7vj69MSpMNh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCheckBalance"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintAndCheckBalance"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTokenNameAndSymbol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFrom"},{"inputs":[],"stateMutability":"view","type":"function","name":"user","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/tests/SATPTokenContractTest.sol":"SATPTokenContractTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"src/test/solidity/contracts/SATPTokenContract.sol":{"keccak256":"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc","urls":["bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f","dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D"],"license":"GPL-3.0"},"src/test/solidity/tests/SATPTokenContractTest.sol":{"keccak256":"0xd9f9b6cd7f7cb4950fed50e1b2d7ab975b09da66cf01a3ea5b0f3f48a958bac2","urls":["bzz-raw://d0bb4f474b1da3dfeabd4bfe914fabedebe08f05a4ef42baae51ce9569d8f2db","dweb:/ipfs/QmXsuMdZAoo29XNHF5zVfL8pXjxSWJqcb2m7vj69MSpMNh"],"license":"GPL-3.0"}},"version":1},"id":35} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"bridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testApprove","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCheckBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintAndCheckBalance","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTokenNameAndSymbol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransferFrom","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"user","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117905560c0604052600560809081526437bbb732b960d91b60a0526200003f9062000101565b601c80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600681526562726964676560d01b6020820152620000879062000101565b601d80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260048152633ab9b2b960e11b6020820152620000cd9062000101565b601e80546001600160a01b0319166001600160a01b0392909216919091179055348015620000fa57600080fd5b50620002ee565b60006200010e8262000115565b5092915050565b600080826040516020016200012b91906200025a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd919062000278565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001fb9085908790600401620002aa565b600060405180830381600087803b1580156200021657600080fd5b505af11580156200022b573d6000803e3d6000fd5b50505050915091565b60005b838110156200025157818101518382015260200162000237565b50506000910152565b600082516200026e81846020870162000234565b9190910192915050565b6000602082840312156200028b57600080fd5b81516001600160a01b0381168114620002a357600080fd5b9392505050565b60018060a01b03831681526040602082015260008251806040840152620002d981606085016020870162000234565b601f01601f1916919091016060019392505050565b61331480620002fe6000396000f3fe60806040523480156200001157600080fd5b5060043610620001895760003560e01c806385226c8111620000dd578063ba414fa6116200008b578063e20c9f71116200006e578063e20c9f7114620002ae578063e78cea9214620002b8578063fa7626d414620002cc57600080fd5b8063ba414fa61462000289578063e13aba4814620002a457600080fd5b8063908783e511620000c0578063908783e5146200026b578063916a17c61462000275578063b5508aa9146200027f57600080fd5b806385226c81146200023e5780638da5cb5b146200025757600080fd5b80633f7286f4116200013b57806366d9a9a0116200011e57806366d9a9a014620002115780636f2c893c146200022a57806370557298146200023457600080fd5b80633f7286f414620001da5780634f8632ba14620001e457600080fd5b80631ed7831c11620001705780631ed7831c14620001a4578063218e00ff14620001c65780633e5e3c2314620001d057600080fd5b80630a9254e4146200018e5780631aeb10a6146200019a575b600080fd5b62000198620002da565b005b62000198620005d8565b620001ae620007b7565b604051620001bd919062001c09565b60405180910390f35b620001986200081b565b620001ae620009b5565b620001ae62000a17565b601e54620001f8906001600160a01b031681565b6040516001600160a01b039091168152602001620001bd565b6200021b62000a79565b604051620001bd919062001c58565b6200019862000b81565b6200019862000d01565b62000248620010d7565b604051620001bd919062001d7b565b601c54620001f8906001600160a01b031681565b62000198620011b1565b6200021b62001201565b6200024862001300565b62000293620013da565b6040519015158152602001620001bd565b620001986200150f565b620001ae6200175a565b601d54620001f8906001600160a01b031681565b600054620002939060ff1681565b601c5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200033457600080fd5b505af115801562000349573d6000803e3d6000fd5b5050601c546040516001600160a01b0390911692506200036a915062001bfb565b6001600160a01b039091168152602001604051809103906000f08015801562000397573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c546040516303223eab60e11b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b5050601b54601d546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c4919062001de1565b50601b54601d546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200055e92919091169063ea13407190602401602060405180830381865afa15801562000532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000558919062001de1565b620017bc565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620005bd57600080fd5b505af1158015620005d2573d6000803e3d6000fd5b50505050565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152681b1ae4d6e2ef50000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200063d57600080fd5b505af115801562000652573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018690529116925063095ea7b391506044016020604051808303816000875af1158015620006ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006d2919062001de1565b50601b54601e54601d546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152600092919091169063dd62ed3e90604401602060405180830381865afa15801562000749573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076f919062001e0c565b9050620007b381836040518060400160405280601b81526020017f417070726f76616c20616c6c6f77616e6365206d69736d61746368000000000081525062001834565b5050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200081157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620007f2575b5050505050905090565b601b54604080517f06fdde030000000000000000000000000000000000000000000000000000000081529051620008e7926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562000881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ab919081019062001e3c565b6040518060400160405280600981526020017f53415450546f6b656e000000000000000000000000000000000000000000000081525062001886565b601b54604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051620009b3926001600160a01b0316916395d89b419160048083019260009291908290030181865afa1580156200094d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000977919081019062001e3c565b6040518060400160405280600481526020017f534154500000000000000000000000000000000000000000000000000000000081525062001886565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000b785760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000b5f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000b0b5790505b5050505050815250508152602001906001019062000a9d565b50505050905090565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562000be757600080fd5b505af115801562000bfc573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000c56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7c919062001de1565b50601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9291909116906370a0823190602401602060405180830381865afa15801562000cd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cf7919062001e0c565b82620019e8565b50565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000d6657600080fd5b505af115801562000d7b573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000dd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dfb919062001de1565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e5657600080fd5b505af115801562000e6b573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152681b1ae4d6e2ef50000060248201529116925063095ea7b391506044016020604051808303816000875af115801562000ecd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef3919062001de1565b50601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000f4e57600080fd5b505af115801562000f63573d6000803e3d6000fd5b5050601b54601e54601d546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152681b1ae4d6e2ef5000006044820152911692506323b872dd91506064016020604051808303816000875af115801562000fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200100f919062001de1565b50601b54601e546040516370a0823160e01b81526001600160a01b0391821660048201526200109b9291909116906370a08231906024015b602060405180830381865afa15801562001065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108b919062001e0c565b681b1ae4d6e2ef500000620019e8565b601b54601d546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9291909116906370a082319060240162001047565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000b785783829060005260206000200180546200111d9062001ef5565b80601f01602080910402602001604051908101604052809291908181526020018280546200114b9062001ef5565b80156200119c5780601f1062001170576101008083540402835291602001916200119c565b820191906000526020600020905b8154815290600101906020018083116200117e57829003601f168201915b505050505081526020019060010190620010fb565b601d5460405163ca669fa760e01b81526001600160a01b0390911660048201526842e530adfce008000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000bcc565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000b785760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620012e757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012935790505b5050505050815250508152602001906001019062001225565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000b78578382906000526020600020018054620013469062001ef5565b80601f0160208091040260200160405190810160405280929190818152602001828054620013749062001ef5565b8015620013c55780601f106200139957610100808354040283529160200191620013c5565b820191906000526020600020905b815481529060010190602001808311620013a757829003601f168201915b50505050508152602001906001019062001324565b60008054610100900460ff1615620013fb5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200150a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200148c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001f31565b60408051601f1981840301815290829052620014a89162001f7b565b6000604051808303816000865af19150503d8060008114620014e7576040519150601f19603f3d011682016040523d82523d6000602084013e620014ec565b606091505b509150508080602001905181019062001506919062001de1565b9150505b919050565b601d546040516303223eab60e11b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200157457600080fd5b505af115801562001589573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af1158015620015e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001609919062001de1565b50601b54601e546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152681b1ae4d6e2ef5000006024820152911690639dc29fac906044016020604051808303816000875af115801562001681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016a7919062001de1565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200170757600080fd5b505af11580156200171c573d6000803e3d6000fd5b5050601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9450911691506370a082319060240162001047565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b8062000cfe577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620018229060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000cfe62001ae8565b81831462001881577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200186d919062001f99565b60405180910390a1620018818383620019e8565b505050565b8060405160200162001899919062001f7b565b6040516020818303038152906040528051906020012082604051602001620018c2919062001f7b565b6040516020818303038152906040528051906020012014620007b3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019649060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200199d919062001fe2565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620019d6919062002029565b60405180910390a1620007b362001ae8565b808214620007b3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001a769060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162001aaf919062002054565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620019d691906200208d565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001bea5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262001b85929160200162001f31565b60408051601f198184030181529082905262001ba19162001f7b565b6000604051808303816000865af19150503d806000811462001be0576040519150601f19603f3d011682016040523d82523d6000602084013e62001be5565b606091505b505050505b6000805461ff001916610100179055565b61122680620020b983390190565b6020808252825182820181905260009190848201906040850190845b8181101562001c4c5783516001600160a01b03168352928401929184019160010162001c25565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001d1857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001d025783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062001cbe565b50978a0197955050509187019160010162001c80565b50919998505050505050505050565b60005b8381101562001d4457818101518382015260200162001d2a565b50506000910152565b6000815180845262001d6781602086016020860162001d27565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001dd457603f1988860301845262001dc185835162001d4d565b9450928501929085019060010162001da2565b5092979650505050505050565b60006020828403121562001df457600080fd5b8151801515811462001e0557600080fd5b9392505050565b60006020828403121562001e1f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001e4f57600080fd5b815167ffffffffffffffff8082111562001e6857600080fd5b818401915084601f83011262001e7d57600080fd5b81518181111562001e925762001e9262001e26565b604051601f8201601f19908116603f0116810190838211818310171562001ebd5762001ebd62001e26565b8160405282815287602084870101111562001ed757600080fd5b62001eea83602083016020880162001d27565b979650505050505050565b600181811c9082168062001f0a57607f821691505b60208210810362001f2b57634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162001f6d81600485016020870162001d27565b919091016004019392505050565b6000825162001f8f81846020870162001d27565b9190910192915050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062001e05608083018462001d4d565b6040815260006200200d60408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262002021818562001d4d565b949350505050565b6040815260006200200d60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200207f60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200207f60408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b5060405162001226380380620012268339810160408190526200003491620001ac565b6040518060400160405280600981526020016829a0aa282a37b5b2b760b91b815250604051806040016040528060048152602001630534154560e41b815250816004908162000084919062000283565b50600562000093828262000283565b505050620000c87fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82620000fd60201b60201c565b50620000f57f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f82620000fd565b50506200034f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001a6565b5060005b92915050565b600060208284031215620001bf57600080fd5b81516001600160a01b0381168114620001d757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020957607f821691505b6020821081036200022a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027e57600081815260208120601f850160051c81016020861015620002595750805b601f850160051c820191505b818110156200027a5782815560010162000265565b5050505b505050565b81516001600160401b038111156200029f576200029f620001de565b620002b781620002b08454620001f4565b8462000230565b602080601f831160018114620002ef5760008415620002d65750858301515b600019600386901b1c1916600185901b1785556200027a565b600085815260208120601f198616915b828110156200032057888601518255948401946001909101908401620002ff565b50858210156200033f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ec7806200035f6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c63430008140033a264697066735822122079180fabc0f70583377cb945b60a5af9910512c3289b71ba1c6949075c11e19664736f6c63430008140033","sourceMap":"1572:26:17:-:0;;;1594:4;-1:-1:-1;;1572:26:17;;;;;;;;3161:44:20;;;;;;;;;;;318:17:42;213:2169;318:17;;213:2169;318:17;;;-1:-1:-1;;;318:17:42;;;;:8;:17::i;:::-;295:40;;;-1:-1:-1;;;;;;295:40:42;-1:-1:-1;;;;;295:40:42;;;;;;;;;;365:18;;;;;;;;;;;;-1:-1:-1;;;365:18:42;;;;;;:8;:18::i;:::-;341:42;;;-1:-1:-1;;;;;;341:42:42;-1:-1:-1;;;;;341:42:42;;;;;;;;;;411:16;;;;;;;;;;;;-1:-1:-1;;;411:16:42;;;;;;:8;:16::i;:::-;389:38;;;-1:-1:-1;;;;;;389:38:42;-1:-1:-1;;;;;389:38:42;;;;;;;;;;213:2169;;;;;;;;;;;;16374:125:21;16438:12;16472:20;16487:4;16472:14;:20::i;:::-;-1:-1:-1;16462:30:21;16374:125;-1:-1:-1;;16374:125:21:o;16093:242::-;16163:12;16177:18;16255:4;16238:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16238:22:21;;;;;;;16228:33;;16238:22;16228:33;;;;-1:-1:-1;;;;;;16279:19:21;;;;;709:25:45;;;16228:33:21;-1:-1:-1;16279:7:21;;;;682:18:45;;16279:19:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16308:20;;-1:-1:-1;;;16308:20:21;;16272:26;;-1:-1:-1;16308:8:21;;;;:20;;16272:26;;16323:4;;16308:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16093:242;;;:::o;14:250:45:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:45;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:45:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:45;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:45:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:45;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:45:o;:::-;213:2169:42;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001895760003560e01c806385226c8111620000dd578063ba414fa6116200008b578063e20c9f71116200006e578063e20c9f7114620002ae578063e78cea9214620002b8578063fa7626d414620002cc57600080fd5b8063ba414fa61462000289578063e13aba4814620002a457600080fd5b8063908783e511620000c0578063908783e5146200026b578063916a17c61462000275578063b5508aa9146200027f57600080fd5b806385226c81146200023e5780638da5cb5b146200025757600080fd5b80633f7286f4116200013b57806366d9a9a0116200011e57806366d9a9a014620002115780636f2c893c146200022a57806370557298146200023457600080fd5b80633f7286f414620001da5780634f8632ba14620001e457600080fd5b80631ed7831c11620001705780631ed7831c14620001a4578063218e00ff14620001c65780633e5e3c2314620001d057600080fd5b80630a9254e4146200018e5780631aeb10a6146200019a575b600080fd5b62000198620002da565b005b62000198620005d8565b620001ae620007b7565b604051620001bd919062001c09565b60405180910390f35b620001986200081b565b620001ae620009b5565b620001ae62000a17565b601e54620001f8906001600160a01b031681565b6040516001600160a01b039091168152602001620001bd565b6200021b62000a79565b604051620001bd919062001c58565b6200019862000b81565b6200019862000d01565b62000248620010d7565b604051620001bd919062001d7b565b601c54620001f8906001600160a01b031681565b62000198620011b1565b6200021b62001201565b6200024862001300565b62000293620013da565b6040519015158152602001620001bd565b620001986200150f565b620001ae6200175a565b601d54620001f8906001600160a01b031681565b600054620002939060ff1681565b601c5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200033457600080fd5b505af115801562000349573d6000803e3d6000fd5b5050601c546040516001600160a01b0390911692506200036a915062001bfb565b6001600160a01b039091168152602001604051809103906000f08015801562000397573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055601c546040516303223eab60e11b815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b5050601b54601d546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c4919062001de1565b50601b54601d546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200055e92919091169063ea13407190602401602060405180830381865afa15801562000532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000558919062001de1565b620017bc565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620005bd57600080fd5b505af1158015620005d2573d6000803e3d6000fd5b50505050565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152681b1ae4d6e2ef50000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200063d57600080fd5b505af115801562000652573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018690529116925063095ea7b391506044016020604051808303816000875af1158015620006ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006d2919062001de1565b50601b54601e54601d546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152600092919091169063dd62ed3e90604401602060405180830381865afa15801562000749573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076f919062001e0c565b9050620007b381836040518060400160405280601b81526020017f417070726f76616c20616c6c6f77616e6365206d69736d61746368000000000081525062001834565b5050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200081157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620007f2575b5050505050905090565b601b54604080517f06fdde030000000000000000000000000000000000000000000000000000000081529051620008e7926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562000881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ab919081019062001e3c565b6040518060400160405280600981526020017f53415450546f6b656e000000000000000000000000000000000000000000000081525062001886565b601b54604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051620009b3926001600160a01b0316916395d89b419160048083019260009291908290030181865afa1580156200094d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000977919081019062001e3c565b6040518060400160405280600481526020017f534154500000000000000000000000000000000000000000000000000000000081525062001886565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562000b785760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562000b5f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000b0b5790505b5050505050815250508152602001906001019062000a9d565b50505050905090565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562000be757600080fd5b505af115801562000bfc573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000c56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7c919062001de1565b50601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9291909116906370a0823190602401602060405180830381865afa15801562000cd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cf7919062001e0c565b82620019e8565b50565b601d5460405163ca669fa760e01b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000d6657600080fd5b505af115801562000d7b573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af115801562000dd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dfb919062001de1565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e5657600080fd5b505af115801562000e6b573d6000803e3d6000fd5b5050601b54601d5460405163095ea7b360e01b81526001600160a01b039182166004820152681b1ae4d6e2ef50000060248201529116925063095ea7b391506044016020604051808303816000875af115801562000ecd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef3919062001de1565b50601d5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000f4e57600080fd5b505af115801562000f63573d6000803e3d6000fd5b5050601b54601e54601d546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152681b1ae4d6e2ef5000006044820152911692506323b872dd91506064016020604051808303816000875af115801562000fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200100f919062001de1565b50601b54601e546040516370a0823160e01b81526001600160a01b0391821660048201526200109b9291909116906370a08231906024015b602060405180830381865afa15801562001065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108b919062001e0c565b681b1ae4d6e2ef500000620019e8565b601b54601d546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9291909116906370a082319060240162001047565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000b785783829060005260206000200180546200111d9062001ef5565b80601f01602080910402602001604051908101604052809291908181526020018280546200114b9062001ef5565b80156200119c5780601f1062001170576101008083540402835291602001916200119c565b820191906000526020600020905b8154815290600101906020018083116200117e57829003601f168201915b505050505081526020019060010190620010fb565b601d5460405163ca669fa760e01b81526001600160a01b0390911660048201526842e530adfce008000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000bcc565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562000b785760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620012e757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012935790505b5050505050815250508152602001906001019062001225565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000b78578382906000526020600020018054620013469062001ef5565b80601f0160208091040260200160405190810160405280929190818152602001828054620013749062001ef5565b8015620013c55780601f106200139957610100808354040283529160200191620013c5565b820191906000526020600020905b815481529060010190602001808311620013a757829003601f168201915b50505050508152602001906001019062001324565b60008054610100900460ff1615620013fb5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200150a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b828401528251808303840181526060830190935260009290916200148c917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162001f31565b60408051601f1981840301815290829052620014a89162001f7b565b6000604051808303816000865af19150503d8060008114620014e7576040519150601f19603f3d011682016040523d82523d6000602084013e620014ec565b606091505b509150508080602001905181019062001506919062001de1565b9150505b919050565b601d546040516303223eab60e11b81526001600160a01b039091166004820152683635c9adc5dea0000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200157457600080fd5b505af115801562001589573d6000803e3d6000fd5b5050601b54601e546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911692506340c10f1991506044016020604051808303816000875af1158015620015e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001609919062001de1565b50601b54601e546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152681b1ae4d6e2ef5000006024820152911690639dc29fac906044016020604051808303816000875af115801562001681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016a7919062001de1565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200170757600080fd5b505af11580156200171c573d6000803e3d6000fd5b5050601b54601e546040516370a0823160e01b81526001600160a01b03918216600482015262000cfe9450911691506370a082319060240162001047565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000811576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620007f2575050505050905090565b8062000cfe577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620018229060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162000cfe62001ae8565b81831462001881577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040516200186d919062001f99565b60405180910390a1620018818383620019e8565b505050565b8060405160200162001899919062001f7b565b6040516020818303038152906040528051906020012082604051602001620018c2919062001f7b565b6040516020818303038152906040528051906020012014620007b3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620019649060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040516200199d919062001fe2565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620019d6919062002029565b60405180910390a1620007b362001ae8565b808214620007b3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162001a769060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162001aaf919062002054565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620019d691906200208d565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562001bea5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262001b85929160200162001f31565b60408051601f198184030181529082905262001ba19162001f7b565b6000604051808303816000865af19150503d806000811462001be0576040519150601f19603f3d011682016040523d82523d6000602084013e62001be5565b606091505b505050505b6000805461ff001916610100179055565b61122680620020b983390190565b6020808252825182820181905260009190848201906040850190845b8181101562001c4c5783516001600160a01b03168352928401929184019160010162001c25565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562001d1857898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562001d025783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062001cbe565b50978a0197955050509187019160010162001c80565b50919998505050505050505050565b60005b8381101562001d4457818101518382015260200162001d2a565b50506000910152565b6000815180845262001d6781602086016020860162001d27565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562001dd457603f1988860301845262001dc185835162001d4d565b9450928501929085019060010162001da2565b5092979650505050505050565b60006020828403121562001df457600080fd5b8151801515811462001e0557600080fd5b9392505050565b60006020828403121562001e1f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001e4f57600080fd5b815167ffffffffffffffff8082111562001e6857600080fd5b818401915084601f83011262001e7d57600080fd5b81518181111562001e925762001e9262001e26565b604051601f8201601f19908116603f0116810190838211818310171562001ebd5762001ebd62001e26565b8160405282815287602084870101111562001ed757600080fd5b62001eea83602083016020880162001d27565b979650505050505050565b600181811c9082168062001f0a57607f821691505b60208210810362001f2b57634e487b7160e01b600052602260045260246000fd5b50919050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825162001f6d81600485016020870162001d27565b919091016004019392505050565b6000825162001f8f81846020870162001d27565b9190910192915050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062001e05608083018462001d4d565b6040815260006200200d60408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262002021818562001d4d565b949350505050565b6040815260006200200d60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200207f60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200207f60408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b5060405162001226380380620012268339810160408190526200003491620001ac565b6040518060400160405280600981526020016829a0aa282a37b5b2b760b91b815250604051806040016040528060048152602001630534154560e41b815250816004908162000084919062000283565b50600562000093828262000283565b505050620000c87fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82620000fd60201b60201c565b50620000f57f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f82620000fd565b50506200034f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001a6565b5060005b92915050565b600060208284031215620001bf57600080fd5b81516001600160a01b0381168114620001d757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020957607f821691505b6020821081036200022a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027e57600081815260208120601f850160051c81016020861015620002595750805b601f850160051c820191505b818110156200027a5782815560010162000265565b5050505b505050565b81516001600160401b038111156200029f576200029f620001de565b620002b781620002b08454620001f4565b8462000230565b602080601f831160018114620002ef5760008415620002d65750858301515b600019600386901b1c1916600185901b1785556200027a565b600085815260208120601f198616915b828110156200032057888601518255948401946001909101908401620002ff565b50858210156200033f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ec7806200035f6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c63430008140033a264697066735822122079180fabc0f70583377cb945b60a5af9910512c3289b71ba1c6949075c11e19664736f6c63430008140033","sourceMap":"213:2169:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;434:303;;;:::i;:::-;;1393:343;;;:::i;2161:134:23:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;743:149:42;;;:::i;2930:133:23:-;;;:::i;2631:141::-;;;:::i;389:38:42:-;;;;;-1:-1:-1;;;;;389:38:42;;;;;;-1:-1:-1;;;;;864:55:45;;;846:74;;834:2;819:18;389:38:42;700:226:45;2447:178:23;;;:::i;:::-;;;;;;;:::i;898:211:42:-;;;:::i;1742:429::-;;;:::i;2301:140:23:-;;;:::i;:::-;;;;;;;:::i;295:40:42:-;;;;;-1:-1:-1;;;;;295:40:42;;;2177:203;;;:::i;2778:146:23:-;;;:::i;1866:141::-;;;:::i;1819:584:17:-;;;:::i;:::-;;;4078:14:45;;4071:22;4053:41;;4041:2;4026:18;1819:584:17;3913:187:45;1115:272:42;;;:::i;2013:142:23:-;;;:::i;341:42:42:-;;;;;-1:-1:-1;;;;;341:42:42;;;1572:26:17;;;;;;;;;434:303:42;477:5;;468:15;;-1:-1:-1;;;468:15:42;;-1:-1:-1;;;;;477:5:42;;;468:15;;;846:74:45;468:8:42;;;;819:18:45;;468:15:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;530:5:42;;508:28;;-1:-1:-1;;;;;530:5:42;;;;-1:-1:-1;508:28:42;;-1:-1:-1;508:28:42;:::i;:::-;-1:-1:-1;;;;;864:55:45;;;846:74;;834:2;819:18;508:28:42;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:12:42;:43;;;;-1:-1:-1;;;;;493:43:42;;;;;;561:5;;547:20;;-1:-1:-1;;;547:20:42;;561:5;;547:20;;;846:74:45;547:13:42;;;;819:18:45;;547:20:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;577:12:42;;606:6;;577:36;;;;;-1:-1:-1;;;;;606:6:42;;;577:36;;;846:74:45;577:12:42;;;-1:-1:-1;577:28:42;;-1:-1:-1;819:18:45;;577:36:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;671:12:42;;698:6;;671:34;;;;;-1:-1:-1;;;;;698:6:42;;;671:34;;;846:74:45;660:46:42;;671:12;;;;;:26;;819:18:45;;671:34:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;660:10;:46::i;:::-;317:28:18;309:37;;-1:-1:-1;;;;;716:12:42;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;434:303::o;1393:343::-;1543:4;;1534:14;;-1:-1:-1;;;1534:14:42;;-1:-1:-1;;;;;1543:4:42;;;1534:14;;;846:74:45;1450:9:42;;1534:8;;;;819:18:45;;1534:14:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1558:12:42;;1579:6;;1558:36;;-1:-1:-1;;;1558:36:42;;-1:-1:-1;;;;;1579:6:42;;;1558:36;;;4561:74:45;4651:18;;;4644:34;;;1558:12:42;;;-1:-1:-1;1558:20:42;;-1:-1:-1;4534:18:45;;1558:36:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1625:12:42;;1648:4;;1654:6;;1625:36;;;;;-1:-1:-1;;;;;1648:4:42;;;1625:36;;;4924:34:45;1654:6:42;;;4974:18:45;;;4967:43;1605:17:42;;1625:12;;;;;:22;;4836:18:45;;1625:36:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1605:56;;1671:58;1680:9;1691:6;1671:58;;;;;;;;;;;;;;;;;:8;:58::i;:::-;1423:313;;1393:343::o;2161:134:23:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:23;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;743:149:42:-;803:12;;:19;;;;;;;;794:42;;-1:-1:-1;;;;;803:12:42;;:17;;:19;;;;;:12;;:19;;;;;;;:12;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;803:19:42;;;;;;;;;;;;:::i;:::-;794:42;;;;;;;;;;;;;;;;;:8;:42::i;:::-;855:12;;:21;;;;;;;;846:39;;-1:-1:-1;;;;;855:12:42;;:19;;:21;;;;;:12;;:21;;;;;;;:12;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;855:21:42;;;;;;;;;;;;:::i;:::-;846:39;;;;;;;;;;;;;;;;;:8;:39::i;:::-;743:149::o;2930:133:23:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:23;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:23;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;898:211:42:-;997:6;;988:16;;-1:-1:-1;;;988:16:42;;-1:-1:-1;;;;;997:6:42;;;988:16;;;846:74:45;967:10:42;;988:8;;;;819:18:45;;988:16:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1014:12:42;;1032:4;;1014:31;;-1:-1:-1;;;1014:31:42;;-1:-1:-1;;;;;1032:4:42;;;1014:31;;;4561:74:45;4651:18;;;4644:34;;;1014:12:42;;;-1:-1:-1;1014:17:42;;-1:-1:-1;4534:18:45;;1014:31:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1065:12:42;;1088:4;;1065:28;;-1:-1:-1;;;1065:28:42;;-1:-1:-1;;;;;1088:4:42;;;1065:28;;;846:74:45;1056:46:42;;1065:12;;;;;:22;;819:18:45;;1065:28:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1095:6;1056:8;:46::i;:::-;940:169;898:211::o;1742:429::-;1834:6;;1825:16;;-1:-1:-1;;;1825:16:42;;-1:-1:-1;;;;;1834:6:42;;;1825:16;;;846:74:45;1804:10:42;;1825:8;;;;819:18:45;;1825:16:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1851:12:42;;1869:4;;1851:31;;-1:-1:-1;;;1851:31:42;;-1:-1:-1;;;;;1869:4:42;;;1851:31;;;4561:74:45;4651:18;;;4644:34;;;1851:12:42;;;-1:-1:-1;1851:17:42;;-1:-1:-1;4534:18:45;;1851:31:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1902:4:42;;1893:14;;-1:-1:-1;;;1893:14:42;;-1:-1:-1;;;;;1902:4:42;;;1893:14;;;846:74:45;1893:8:42;;;;819:18:45;;1893:14:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1917:12:42;;1938:6;;1917:39;;-1:-1:-1;;;1917:39:42;;-1:-1:-1;;;;;1938:6:42;;;1917:39;;;4561:74:45;1946:9:42;4651:18:45;;;4644:34;1917:12:42;;;-1:-1:-1;1917:20:42;;-1:-1:-1;4534:18:45;;1917:39:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1976:6:42;;1967:16;;-1:-1:-1;;;1967:16:42;;-1:-1:-1;;;;;1976:6:42;;;1967:16;;;846:74:45;1967:8:42;;;;819:18:45;;1967:16:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1993:12:42;;2019:4;;2025:6;;1993:50;;;;;-1:-1:-1;;;;;2019:4:42;;;1993:50;;;6922:34:45;2025:6:42;;;6972:18:45;;;6965:43;2033:9:42;7024:18:45;;;7017:34;1993:12:42;;;-1:-1:-1;1993:25:42;;-1:-1:-1;6834:18:45;;1993:50:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2063:12:42;;2086:4;;2063:28;;-1:-1:-1;;;2063:28:42;;-1:-1:-1;;;;;2086:4:42;;;2063:28;;;846:74:45;2054:49:42;;2063:12;;;;;:22;;819:18:45;;2063:28:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2093:9;2054:8;:49::i;:::-;2122:12;;2145:6;;2122:30;;-1:-1:-1;;;2122:30:42;;-1:-1:-1;;;;;2145:6:42;;;2122:30;;;846:74:45;2113:51:42;;2122:12;;;;;:22;;819:18:45;;2122:30:42;700:226:45;2301:140:23;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2177:203:42;2268:6;;2259:16;;-1:-1:-1;;;2259:16:42;;-1:-1:-1;;;;;2268:6:42;;;2259:16;;;846:74:45;2239:10:42;;2259:8;;;;819:18:45;;2259:16:42;700:226:45;2778:146:23;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:17;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:17;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;4561:74:45;;;-1:-1:-1;;;4651:18:45;;;4644:34;2196:43:17;;;;;;;;;4534:18:45;;;2196:43:17;;;-1:-1:-1;;1671:64:17;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:17;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:17:o;1115:272:42:-;1204:6;;1190:21;;-1:-1:-1;;;1190:21:42;;-1:-1:-1;;;;;1204:6:42;;;1190:21;;;846:74:45;1169:10:42;;1190:13;;;;819:18:45;;1190:21:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1221:12:42;;1239:4;;1221:31;;-1:-1:-1;;;1221:31:42;;-1:-1:-1;;;;;1239:4:42;;;1221:31;;;4561:74:45;4651:18;;;4644:34;;;1221:12:42;;;-1:-1:-1;1221:17:42;;-1:-1:-1;4534:18:45;;1221:31:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1262:12:42;;1280:4;;1262:34;;;;;-1:-1:-1;;;;;1280:4:42;;;1262:34;;;4561:74:45;1286:9:42;4651:18:45;;;4644:34;1262:12:42;;;:17;;4534:18:45;;1262:34:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;317:28:18;309:37;;-1:-1:-1;;;;;1306:12:42;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1340:12:42;;1363:4;;1340:28;;-1:-1:-1;;;1340:28:42;;-1:-1:-1;;;;;1363:4:42;;;1340:28;;;846:74:45;1331:49:42;;-1:-1:-1;1340:12:42;;;-1:-1:-1;1340:22:42;;819:18:45;;1340:28:42;700:226:45;2013:142:23;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:23;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;3262:157:17:-;3322:9;3317:96;;3352:30;;;;;8735:2:45;8717:21;;;8774:2;8754:18;;;8747:30;8813:25;8808:2;8793:18;;8786:53;8871:2;8856:18;;8533:347;3352:30:17;;;;;;;;3396:6;:4;:6::i;5476:178::-;5557:1;5552;:6;5548:100;;5579:30;5605:3;5579:30;;;;;;:::i;:::-;;;;;;;;5623:14;5632:1;5635;5623:8;:14::i;:::-;5476:178;;;:::o;17902:344::-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;9832:2:45;9814:21;;;9871:2;9851:18;;;9844:30;9910:34;9905:2;9890:18;;9883:62;9981:6;9976:2;9961:18;;9954:34;10020:3;10005:19;;9630:400;18062:43:17;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;5209:262::-;5271:1;5266;:6;5262:203;;5293:41;;;;;11455:2:45;11437:21;;;11494:2;11474:18;;;11467:30;11533:34;11528:2;11513:18;;11506:62;11604:4;11599:2;11584:18;;11577:32;11641:3;11626:19;;11253:398;5293:41:17;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;12564:74:45;;;-1:-1:-1;;;12654:18:45;;;12647:34;;;;2712:4:17;12697:18:45;;;12690:34;2489:11:17;;1671:64;2586:43;;12537:18:45;;2652:67:17;;;-1:-1:-1;;2652:67:17;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:17;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:17;2820:7;:14;;-1:-1:-1;;2820:14:17;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;14:681:45:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:45;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:45;;14:681;-1:-1:-1;;;;;;14:681:45:o;931:1638::-;1135:4;1164:2;1204;1193:9;1189:18;1234:2;1223:9;1216:21;1257:6;1292;1286:13;1323:6;1315;1308:22;1349:2;1339:12;;1382:2;1371:9;1367:18;1360:25;;1444:2;1434:6;1431:1;1427:14;1416:9;1412:30;1408:39;1482:2;1474:6;1470:15;1503:1;1524;1534:1006;1550:6;1545:3;1542:15;1534:1006;;;1619:22;;;-1:-1:-1;;1615:36:45;1603:49;;1675:13;;1762:9;;-1:-1:-1;;;;;1758:58:45;1743:74;;1856:11;;1850:18;1888:15;;;1881:27;;;1969:19;;1715:15;;;2001:24;;;2091:21;;;;2136:1;;2059:2;2047:15;;;2150:282;2166:8;2161:3;2158:17;2150:282;;;2247:15;;2264:66;2243:88;2229:103;;2401:17;;;;2194:1;2185:11;;;;;2358:14;;;;2150:282;;;-1:-1:-1;2518:12:45;;;;2455:5;-1:-1:-1;;;2483:15:45;;;;1576:1;1567:11;1534:1006;;;-1:-1:-1;2557:6:45;;931:1638;-1:-1:-1;;;;;;;;;931:1638:45:o;2574:250::-;2659:1;2669:113;2683:6;2680:1;2677:13;2669:113;;;2759:11;;;2753:18;2740:11;;;2733:39;2705:2;2698:10;2669:113;;;-1:-1:-1;;2816:1:45;2798:16;;2791:27;2574:250::o;2829:271::-;2871:3;2909:5;2903:12;2936:6;2931:3;2924:19;2952:76;3021:6;3014:4;3009:3;3005:14;2998:4;2991:5;2987:16;2952:76;:::i;:::-;3082:2;3061:15;-1:-1:-1;;3057:29:45;3048:39;;;;3089:4;3044:50;;2829:271;-1:-1:-1;;2829:271:45:o;3105:803::-;3267:4;3296:2;3336;3325:9;3321:18;3366:2;3355:9;3348:21;3389:6;3424;3418:13;3455:6;3447;3440:22;3493:2;3482:9;3478:18;3471:25;;3555:2;3545:6;3542:1;3538:14;3527:9;3523:30;3519:39;3505:53;;3593:2;3585:6;3581:15;3614:1;3624:255;3638:6;3635:1;3632:13;3624:255;;;3731:2;3727:7;3715:9;3707:6;3703:22;3699:36;3694:3;3687:49;3759:40;3792:6;3783;3777:13;3759:40;:::i;:::-;3749:50;-1:-1:-1;3857:12:45;;;;3822:15;;;;3660:1;3653:9;3624:255;;;-1:-1:-1;3896:6:45;;3105:803;-1:-1:-1;;;;;;;3105:803:45:o;4105:277::-;4172:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:52;;;4241:1;4238;4231:12;4193:52;4273:9;4267:16;4326:5;4319:13;4312:21;4305:5;4302:32;4292:60;;4348:1;4345;4338:12;4292:60;4371:5;4105:277;-1:-1:-1;;;4105:277:45:o;5021:184::-;5091:6;5144:2;5132:9;5123:7;5119:23;5115:32;5112:52;;;5160:1;5157;5150:12;5112:52;-1:-1:-1;5183:16:45;;5021:184;-1:-1:-1;5021:184:45:o;5210:::-;-1:-1:-1;;;5259:1:45;5252:88;5359:4;5356:1;5349:15;5383:4;5380:1;5373:15;5399:897;5479:6;5532:2;5520:9;5511:7;5507:23;5503:32;5500:52;;;5548:1;5545;5538:12;5500:52;5581:9;5575:16;5610:18;5651:2;5643:6;5640:14;5637:34;;;5667:1;5664;5657:12;5637:34;5705:6;5694:9;5690:22;5680:32;;5750:7;5743:4;5739:2;5735:13;5731:27;5721:55;;5772:1;5769;5762:12;5721:55;5801:2;5795:9;5823:2;5819;5816:10;5813:36;;;5829:18;;:::i;:::-;5904:2;5898:9;5872:2;5958:13;;-1:-1:-1;;5954:22:45;;;5978:2;5950:31;5946:40;5934:53;;;6002:18;;;6022:22;;;5999:46;5996:72;;;6048:18;;:::i;:::-;6088:10;6084:2;6077:22;6123:2;6115:6;6108:18;6163:7;6158:2;6153;6149;6145:11;6141:20;6138:33;6135:53;;;6184:1;6181;6174:12;6135:53;6197:68;6262:2;6257;6249:6;6245:15;6240:2;6236;6232:11;6197:68;:::i;:::-;6284:6;5399:897;-1:-1:-1;;;;;;;5399:897:45:o;7062:437::-;7141:1;7137:12;;;;7184;;;7205:61;;7259:4;7251:6;7247:17;7237:27;;7205:61;7312:2;7304:6;7301:14;7281:18;7278:38;7275:218;;-1:-1:-1;;;7346:1:45;7339:88;7450:4;7447:1;7440:15;7478:4;7475:1;7468:15;7275:218;;7062:437;;;:::o;7806:430::-;8003:66;7995:6;7991:79;7986:3;7979:92;7961:3;8100:6;8094:13;8116:74;8183:6;8179:1;8174:3;8170:11;8163:4;8155:6;8151:17;8116:74;:::i;:::-;8210:16;;;;8228:1;8206:24;;7806:430;-1:-1:-1;;;7806:430:45:o;8241:287::-;8370:3;8408:6;8402:13;8424:66;8483:6;8478:3;8471:4;8463:6;8459:17;8424:66;:::i;:::-;8506:16;;;;;8241:287;-1:-1:-1;;8241:287:45:o;8885:446::-;9135:2;9124:9;9117:21;9174:1;9169:2;9158:9;9154:18;9147:29;9212:7;9207:2;9196:9;9192:18;9185:35;9258:3;9251:4;9240:9;9236:20;9229:33;9098:4;9279:46;9320:3;9309:9;9305:19;9297:6;9279:46;:::i;10199:440::-;10449:2;10438:9;10431:21;10412:4;10475:49;10520:2;10509:9;10505:18;10112:2;10100:15;;-1:-1:-1;;;10140:4:45;10131:14;;10124:36;10185:2;10176:12;;10035:159;10475:49;10572:9;10564:6;10560:22;10555:2;10544:9;10540:18;10533:50;10600:33;10626:6;10618;10600:33;:::i;:::-;10592:41;10199:440;-1:-1:-1;;;;10199:440:45:o;10808:::-;11058:2;11047:9;11040:21;11021:4;11084:49;11129:2;11118:9;11114:18;10721:2;10709:15;;-1:-1:-1;;;10749:4:45;10740:14;;10733:36;10794:2;10785:12;;10644:159;11656:348;11886:2;11875:9;11868:21;11849:4;11906:49;11951:2;11940:9;11936:18;10112:2;10100:15;;-1:-1:-1;;;10140:4:45;10131:14;;10124:36;10185:2;10176:12;;10035:159;11906:49;11898:57;;11991:6;11986:2;11975:9;11971:18;11964:34;11656:348;;;;:::o;12009:::-;12239:2;12228:9;12221:21;12202:4;12259:49;12304:2;12293:9;12289:18;10721:2;10709:15;;-1:-1:-1;;;10749:4:45;10740:14;;10733:36;10794:2;10785:12;;10644:159","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","bridge()":"e78cea92","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","owner()":"8da5cb5b","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testApprove()":"1aeb10a6","testBurn()":"e13aba48","testCheckBalance()":"908783e5","testMintAndCheckBalance()":"6f2c893c","testTokenNameAndSymbol()":"218e00ff","testTransferFrom()":"70557298","user()":"4f8632ba"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCheckBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintAndCheckBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTokenNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/tests/SATPTokenContractTest.sol\":\"SATPTokenContractTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"src/test/solidity/contracts/SATPTokenContract.sol\":{\"keccak256\":\"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f\",\"dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D\"]},\"src/test/solidity/tests/SATPTokenContractTest.sol\":{\"keccak256\":\"0xd9f9b6cd7f7cb4950fed50e1b2d7ab975b09da66cf01a3ea5b0f3f48a958bac2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d0bb4f474b1da3dfeabd4bfe914fabedebe08f05a4ef42baae51ce9569d8f2db\",\"dweb:/ipfs/QmXsuMdZAoo29XNHF5zVfL8pXjxSWJqcb2m7vj69MSpMNh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testApprove"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCheckBalance"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintAndCheckBalance"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTokenNameAndSymbol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTransferFrom"},{"inputs":[],"stateMutability":"view","type":"function","name":"user","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/tests/SATPTokenContractTest.sol":"SATPTokenContractTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"src/test/solidity/contracts/SATPTokenContract.sol":{"keccak256":"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc","urls":["bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f","dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D"],"license":"GPL-3.0"},"src/test/solidity/tests/SATPTokenContractTest.sol":{"keccak256":"0xd9f9b6cd7f7cb4950fed50e1b2d7ab975b09da66cf01a3ea5b0f3f48a958bac2","urls":["bzz-raw://d0bb4f474b1da3dfeabd4bfe914fabedebe08f05a4ef42baae51ce9569d8f2db","dweb:/ipfs/QmXsuMdZAoo29XNHF5zVfL8pXjxSWJqcb2m7vj69MSpMNh"],"license":"GPL-3.0"}},"version":1},"id":42} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json index cd177d22f6..ee96da7a44 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_bridge_address","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"assign","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"receiver_account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"bridge_address","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"getToken","inputs":[{"name":"tokenId","type":"string","internalType":"string"}],"outputs":[{"name":"token","type":"tuple","internalType":"struct Token","components":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"lock","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokens","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokensInteractions","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint8","internalType":"enum InteractionType"}],"outputs":[{"name":"interactionType","type":"uint8","internalType":"enum InteractionType"},{"name":"available","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"unwrap","inputs":[{"name":"tokenId","type":"string","internalType":"string"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"wrapSuccess","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"interactions","type":"tuple[]","internalType":"struct InteractionSignature[]","components":[{"name":"interactionType","type":"uint8","internalType":"enum InteractionType"},{"name":"functionsSignature","type":"string[]","internalType":"string[]"},{"name":"variables","type":"uint8[][]","internalType":"enum VarType[][]"},{"name":"available","type":"bool","internalType":"bool"}]}],"outputs":[{"name":"wrapSuccess","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Assign","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"receiver_account","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false},{"type":"event","name":"Lock","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unlock","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unwrap","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Wrap","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"contractName","type":"string","indexed":false,"internalType":"string"},{"name":"contractAddress","type":"address","indexed":false,"internalType":"address"},{"name":"tokenType","type":"uint8","indexed":false,"internalType":"enum TokenType"},{"name":"owner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InsuficientAmountLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"TokenAlreadyWrapped","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotAvailable","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotUnlocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506040516200318e3803806200318e8339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600480546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b61306680620001286000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a1bc17c511610097578063e1efb59611610066578063e1efb59614610231578063ea8f547f14610244578063f272660b1461029b578063f2fde38b146102ae57600080fd5b8063a1bc17c5146101d8578063b48272cc146101eb578063c1733f68146101fe578063d9cf884c1461021e57600080fd5b80635137b8a7116100d35780635137b8a7146101955780636a0876e0146101aa578063715018a6146101bd5780638da5cb5b146101c757600080fd5b806304c2320b14610105578063056b01ce146101345780631255c189146101575780634534ba1714610182575b600080fd5b610118610113366004612281565b6102c1565b60405161012b9796959493929190612330565b60405180910390f35b61014761014236600461239c565b6104ba565b604051901515815260200161012b565b60045461016a906001600160a01b031681565b6040516001600160a01b03909116815260200161012b565b6101476101903660046123f8565b6105f3565b61019d61075e565b60405161012b919061244f565b6101476101b83660046124c0565b610837565b6101c561091c565b005b6000546001600160a01b031661016a565b6101476101e6366004612281565b610930565b6101476101f936600461239c565b610b77565b61021161020c366004612281565b610cc5565b60405161012b9190612579565b61014761022c36600461239c565b610f49565b61014761023f36600461239c565b6110dc565b61028d610252366004612630565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161012b92919061268e565b6101476102a9366004612958565b611202565b6101c56102bc366004612a37565b611533565b80516020818301810180516001825292820191909301209152805481906102e790612a52565b80601f016020809104026020016040519081016040528092919081815260200182805461031390612a52565b80156103605780601f1061033557610100808354040283529160200191610360565b820191906000526020600020905b81548152906001019060200180831161034357829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161039390612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf90612a52565b801561040c5780601f106103e15761010080835404028352916020019161040c565b820191906000526020600020905b8154815290600101906020018083116103ef57829003601f168201915b50505050509080600301805461042190612a52565b80601f016020809104026020016040519081016040528092919081815260200182805461044d90612a52565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b50505050600483015460059093015491926001600160a01b031691905087565b60006104c461158a565b60006001600160a01b03166001846040516104df9190612a8c565b908152604051908190036020019020600101546001600160a01b031603610524578260405163c0bab25f60e01b815260040161051b9190612aa8565b60405180910390fd5b610530836000846115d0565b61057c5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c656400000000000000000000604482015260640161051b565b8160018460405161058d9190612a8c565b908152604051908190036020018120600501919091556105ae908490612a8c565b604051908190038120838252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a25060015b92915050565b60006105fd61158a565b8160018560405161060e9190612a8c565b908152602001604051809103902060050154101561066e5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b6564604482015260640161051b565b61067b84600284866115e7565b6106c75760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c65640000000000000000604482015260640161051b565b816001856040516106d89190612a8c565b908152602001604051809103902060050160008282546106f89190612ad1565b909155505060405161070b908590612a8c565b604080519182900382206001600160a01b038616835260208301859052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a25060019392505050565b60606003805480602002602001604051908101604052809291908181526020016000905b8282101561082e5783829060005260206000200180546107a190612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546107cd90612a52565b801561081a5780601f106107ef5761010080835404028352916020019161081a565b820191906000526020600020905b8154815290600101906020018083116107fd57829003601f168201915b505050505081526020019060010190610782565b50505050905090565b600061084161158a565b3063f272660b88888888888860006040519080825280602002602001820160405280156108ab57816020015b6108986040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161086d5790505b506040518863ffffffff1660e01b81526004016108ce9796959493929190612b70565b6020604051808303816000875af11580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190612cc7565b979650505050505050565b61092461158a565b61092e6000611903565b565b600061093a61158a565b60006001600160a01b03166001836040516109559190612a8c565b908152604051908190036020019020600101546001600160a01b031603610991578160405163c0bab25f60e01b815260040161051b9190612aa8565b60006001836040516109a39190612a8c565b90815260200160405180910390206005015411156109ef57816040517fb7d2c10a00000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b610aa1600183604051610a029190612a8c565b90815260200160405180910390206002018054610a1e90612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a90612a52565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050611960565b600182604051610ab19190612a8c565b9081526040519081900360200190206000610acc8282611f94565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055610afa600283016000611f94565b610b08600383016000611f94565b5060048101805473ffffffffffffffffffffffffffffffffffffffff191690556000600590910155604051610b3e908390612a8c565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000610b8161158a565b81600184604051610b929190612a8c565b9081526020016040518091039020600501541015610bf25760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b65640000604482015260640161051b565b610bfe836001846115d0565b610c4a5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c656400000000000000000000604482015260640161051b565b81600184604051610c5b9190612a8c565b90815260200160405180910390206005016000828254610c7b9190612ad1565b9091555050604051610c8e908490612a8c565b604051908190038120838252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee99906020016105e1565b6040805160e0810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c0810191909152600182604051610d0d9190612a8c565b90815260200160405180910390206040518060e0016040529081600082018054610d3690612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6290612a52565b8015610daf5780601f10610d8457610100808354040283529160200191610daf565b820191906000526020600020905b815481529060010190602001808311610d9257829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166004811115610dec57610dec612306565b6004811115610dfd57610dfd612306565b8152602001600282018054610e1190612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d90612a52565b8015610e8a5780601f10610e5f57610100808354040283529160200191610e8a565b820191906000526020600020905b815481529060010190602001808311610e6d57829003601f168201915b50505050508152602001600382018054610ea390612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecf90612a52565b8015610f1c5780601f10610ef157610100808354040283529160200191610f1c565b820191906000526020600020905b815481529060010190602001808311610eff57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260059091015460409091015292915050565b6000610f5361158a565b60006001600160a01b0316600184604051610f6e9190612a8c565b908152604051908190036020019020600101546001600160a01b031603610faa578260405163c0bab25f60e01b815260040161051b9190612aa8565b81600184604051610fbb9190612a8c565b90815260200160405180910390206005015410156110095782826040517fed579e6000000000000000000000000000000000000000000000000000000000815260040161051b929190612ce4565b6000611017846005856115d0565b905080156110a857826001856040516110309190612a8c565b908152602001604051809103902060050160008282546110509190612ad1565b9091555050604051611063908590612a8c565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e906020015b60405180910390a260019150506105ed565b836040517f58300fe700000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b60006110e661158a565b60006001600160a01b03166001846040516111019190612a8c565b908152604051908190036020019020600101546001600160a01b03160361113d578260405163c0bab25f60e01b815260040161051b9190612aa8565b600061114b846004856115d0565b905080156111ce57826001856040516111649190612a8c565b908152602001604051809103902060050160008282546111849190612d06565b9091555050604051611197908590612a8c565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001611096565b836040517f8244096a00000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b600061120c61158a565b60006001600160a01b03166001866040516112279190612a8c565b908152604051908190036020019020600101546001600160a01b03161461127c57846040517f67ab234400000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b6112868583611abe565b6002856040516112969190612a8c565b9081526040805160209281900383019020600360008181529190935220015460ff161561133a576112c8856003611bde565b61133a5760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e00000000606482015260840161051b565b6040518060e00160405280898152602001886001600160a01b0316815260200187600481111561136c5761136c612306565b8152602001868152602001858152602001846001600160a01b0316815260200160008152506001866040516113a19190612a8c565b908152604051908190036020019020815181906113be9082612d67565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600481111561142757611427612306565b0217905550606082015160028201906114409082612d67565b50608082015160038201906114559082612d67565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c090910151600590910155600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016114d18682612d67565b50846040516114e09190612a8c565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8989898760405161151d9493929190612e27565b60405180910390a2506001979650505050505050565b61153b61158a565b6001600160a01b03811661157e576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161051b565b61158781611903565b50565b6000546001600160a01b0316331461092e576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161051b565b60006115df84848460006115e7565b949350505050565b60006002856040516115f99190612a8c565b9081526020016040518091039020600085600581111561161b5761161b612306565b600581111561162c5761162c612306565b815260208101919091526040016000206003015460ff1661164f575060006115df565b60005b6002866040516116629190612a8c565b9081526020016040518091039020600086600581111561168457611684612306565b600581111561169557611695612306565b81526020810191909152604001600020600101548110156118f75760006002876040516116c29190612a8c565b908152602001604051809103902060008760058111156116e4576116e4612306565b60058111156116f5576116f5612306565b8152602001908152602001600020600101828154811061171757611717612e6b565b906000526020600020016040516020016117319190612e81565b604051602081830303815290604052805190602001209050600061184d8261184860028b6040516117629190612a8c565b908152602001604051809103902060008b600581111561178457611784612306565b600581111561179557611795612306565b815260200190815260200160002060020186815481106117b7576117b7612e6b565b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561183b57602002820191906000526020600020906000905b82829054906101000a900460ff16600681111561181957611819612306565b8152602060019283018181049485019490930390920291018084116117fa5790505b50505050508b898b611bf4565b611ece565b905060006001896040516118619190612a8c565b908152604051908190036020018120600101546001600160a01b031690611889908490612a8c565b6000604051808303816000865af19150503d80600081146118c6576040519150601f19603f3d011682016040523d82523d6000602084013e6118cb565b606091505b50509050806118e15760009450505050506115df565b50505080806118ef90612ef7565b915050611652565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b600354811015611aba57611a1c6003828154811061198357611983612e6b565b90600052602060002001805461199890612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546119c490612a52565b8015611a115780601f106119e657610100808354040283529160200191611a11565b820191906000526020600020905b8154815290600101906020018083116119f457829003601f168201915b505050505083611f6f565b15611aa85760038054611a3190600190612ad1565b81548110611a4157611a41612e6b565b9060005260206000200160038281548110611a5e57611a5e612e6b565b906000526020600020019081611a749190612f10565b506003805480611a8657611a86612feb565b600190038181906000526020600020016000611aa29190611f94565b90555050565b80611ab281612ef7565b915050611963565b5050565b60005b8151811015611bd957818181518110611adc57611adc612e6b565b6020026020010151600284604051611af49190612a8c565b90815260200160405180910390206000848481518110611b1657611b16612e6b565b6020026020010151600001516005811115611b3357611b33612306565b6005811115611b4457611b44612306565b8152602081019190915260400160002081518154829060ff19166001836005811115611b7257611b72612306565b02179055506020828101518051611b8f9260018501920190611fce565b5060408201518051611bab916002840191602090910190612024565b50606091909101516003909101805460ff191691151591909117905580611bd181612ef7565b915050611ac1565b505050565b6000611bed83836000806115e7565b9392505050565b60606000855167ffffffffffffffff811115611c1257611c126121a1565b604051908082528060200260200182016040528015611c4557816020015b6060815260200190600190039081611c305790505b50905060005b8651811015611ec4576005878281518110611c6857611c68612e6b565b60200260200101516006811115611c8157611c81612306565b03611cc35760408051306020820152015b604051602081830303815290604052828281518110611cb357611cb3612e6b565b6020026020010181905250611eb2565b6002878281518110611cd757611cd7612e6b565b60200260200101516006811115611cf057611cf0612306565b03611d065785604051602001611c929190612aa8565b6004878281518110611d1a57611d1a612e6b565b60200260200101516006811115611d3357611d33612306565b03611d4957604080516020810186905201611c92565b6003878281518110611d5d57611d5d612e6b565b60200260200101516006811115611d7657611d76612306565b03611db457600186604051611d8b9190612a8c565b908152604080519182900360209081018320600401546001600160a01b03169083015201611c92565b6000878281518110611dc857611dc8612e6b565b60200260200101516006811115611de157611de1612306565b03611e1f57600186604051611df69190612a8c565b908152604080519182900360209081018320600101546001600160a01b03169083015201611c92565b6006878281518110611e3357611e33612e6b565b60200260200101516006811115611e4c57611e4c612306565b03611e6a57604080516001600160a01b038716602082015201611c92565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f7274656400000000000000000000604482015260640161051b565b80611ebc81612ef7565b915050611c4b565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b8251811015611f685781838281518110611f2b57611f2b612e6b565b6020026020010151604051602001611f44929190613001565b60405160208183030381529060405291508080611f6090612ef7565b915050611f0f565b5092915050565b600081518351148015611bed5750508051602091820120825192909101919091201490565b508054611fa090612a52565b6000825580601f10611fb0575050565b601f016020900490600052602060002090810190611587919061207d565b828054828255906000526020600020908101928215612014579160200282015b8281111561201457825182906120049082612d67565b5091602001919060010190611fee565b50612020929150612092565b5090565b828054828255906000526020600020908101928215612071579160200282015b8281111561207157825180516120619184916020909101906120af565b5091602001919060010190612044565b5061202092915061215f565b5b80821115612020576000815560010161207e565b808211156120205760006120a68282611f94565b50600101612092565b82805482825590600052602060002090601f016020900481019282156121535791602002820160005b8382111561212457835183826101000a81548160ff0219169083600681111561210357612103612306565b021790555092602001926001016020816000010492830192600103026120d8565b80156121515782816101000a81549060ff0219169055600101602081600001049283019260010302612124565b505b5061202092915061207d565b80821115612020576000612173828261217c565b5060010161215f565b50805460008255601f016020900490600052602060002090810190611587919061207d565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156121da576121da6121a1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612209576122096121a1565b604052919050565b600082601f83011261222257600080fd5b813567ffffffffffffffff81111561223c5761223c6121a1565b61224f601f8201601f19166020016121e0565b81815284602083860101111561226457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561229357600080fd5b813567ffffffffffffffff8111156122aa57600080fd5b6115df84828501612211565b60005b838110156122d15781810151838201526020016122b9565b50506000910152565b600081518084526122f28160208601602086016122b6565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6005811061232c5761232c612306565b9052565b60e08152600061234360e083018a6122da565b6001600160a01b03808a166020850152612360604085018a61231c565b838203606085015261237282896122da565b9150838203608085015261238682886122da565b951660a0840152505060c0015295945050505050565b600080604083850312156123af57600080fd5b823567ffffffffffffffff8111156123c657600080fd5b6123d285828601612211565b95602094909401359450505050565b80356001600160a01b0381168114610b7257600080fd5b60008060006060848603121561240d57600080fd5b833567ffffffffffffffff81111561242457600080fd5b61243086828701612211565b93505061243f602085016123e1565b9150604084013590509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156124a457603f198886030184526124928583516122da565b94509285019290850190600101612476565b5092979650505050505050565b803560058110610b7257600080fd5b60008060008060008060c087890312156124d957600080fd5b863567ffffffffffffffff808211156124f157600080fd5b6124fd8a838b01612211565b975061250b60208a016123e1565b965061251960408a016124b1565b9550606089013591508082111561252f57600080fd5b61253b8a838b01612211565b9450608089013591508082111561255157600080fd5b5061255e89828a01612211565b92505061256d60a088016123e1565b90509295509295509295565b602081526000825160e060208401526125966101008401826122da565b905060208401516001600160a01b038082166040860152604086015191506125c1606086018361231c565b60608601519150601f19808685030160808701526125df84846122da565b935060808701519250808685030160a0870152506125fd83836122da565b92508060a08701511660c0860152505060c084015160e08401528091505092915050565b803560068110610b7257600080fd5b6000806040838503121561264357600080fd5b823567ffffffffffffffff81111561265a57600080fd5b61266685828601612211565b92505061267560208401612621565b90509250929050565b6006811061232c5761232c612306565b6040810161269c828561267e565b82151560208301529392505050565b600067ffffffffffffffff8211156126c5576126c56121a1565b5060051b60200190565b600082601f8301126126e057600080fd5b813560206126f56126f0836126ab565b6121e0565b828152600592831b850182019282820191908785111561271457600080fd5b8387015b858110156127b957803567ffffffffffffffff8111156127385760008081fd5b8801603f81018a1361274a5760008081fd5b85810135604061275c6126f0836126ab565b82815291851b8301810191888101908d8411156127795760008081fd5b938201935b838510156127a85784359250600783106127985760008081fd5b828252938901939089019061277e565b885250505093850193508401612718565b5090979650505050505050565b801515811461158757600080fd5b8035610b72816127c6565b600082601f8301126127f057600080fd5b6127fd6126f083356126ab565b82358082526020808301929160051b8501018581111561281c57600080fd5b602085015b8181101561294d5767ffffffffffffffff808235111561284057600080fd5b813587016080818a03601f1901121561285857600080fd5b6128606121b7565b61286c60208301612621565b815260408201358381111561288057600080fd5b8201603f81018b1361289157600080fd5b60208101356128a26126f0826126ab565b81815260059190911b82016040019060208101908d8311156128c357600080fd5b604084015b838110156128fc5787813511156128de57600080fd5b6128ee8f60408335880101612211565b8352602092830192016128c8565b50602085015250505060608201358381111561291757600080fd5b6129268b6020838601016126cf565b604083015250612938608083016127d4565b60608201528652505060209384019301612821565b509095945050505050565b600080600080600080600060e0888a03121561297357600080fd5b873567ffffffffffffffff8082111561298b57600080fd5b6129978b838c01612211565b98506129a560208b016123e1565b97506129b360408b016124b1565b965060608a01359150808211156129c957600080fd5b6129d58b838c01612211565b955060808a01359150808211156129eb57600080fd5b6129f78b838c01612211565b9450612a0560a08b016123e1565b935060c08a0135915080821115612a1b57600080fd5b50612a288a828b016127df565b91505092959891949750929550565b600060208284031215612a4957600080fd5b611bed826123e1565b600181811c90821680612a6657607f821691505b602082108103612a8657634e487b7160e01b600052602260045260246000fd5b50919050565b60008251612a9e8184602087016122b6565b9190910192915050565b602081526000611bed60208301846122da565b634e487b7160e01b600052601160045260246000fd5b818103818111156105ed576105ed612abb565b600081518084526020808501808196508360051b810191508286016000805b86811015612b62578385038a52825180518087529087019087870190845b81811015612b4d57835160078110612b3b57612b3b612306565b83529289019291890191600101612b21565b50509a87019a95505091850191600101612b03565b509298975050505050505050565b60e081526000612b8360e083018a6122da565b60206001600160a01b03808b16828601526040612ba28187018c61231c565b606086850381880152612bb5858c6122da565b9450608087860381890152612bca868c6122da565b955060a0848b16818a015288870360c08a015286945089518088528688019550868160051b890101878c0160005b83811015612cad57601f198b84030189528151868401612c1985835161267e565b818c0151858d01899052805191829052600582901b8601880191908d01908887019060005b81811015612c6c57609f19898603018352612c5a8585516122da565b9450928f0192918f0191600101612c3e565b50505050898201518582038b870152612c858282612ae4565b928a0151801515878c0152929150612c9a9050565b998b019993505090890190600101612bf8565b505080995050505050505050505098975050505050505050565b600060208284031215612cd957600080fd5b8151611bed816127c6565b604081526000612cf760408301856122da565b90508260208301529392505050565b808201808211156105ed576105ed612abb565b601f821115611bd957600081815260208120601f850160051c81016020861015612d405750805b601f850160051c820191505b81811015612d5f57828155600101612d4c565b505050505050565b815167ffffffffffffffff811115612d8157612d816121a1565b612d9581612d8f8454612a52565b84612d19565b602080601f831160018114612dca5760008415612db25750858301515b600019600386901b1c1916600185901b178555612d5f565b600085815260208120601f198616915b82811015612df957888601518255948401946001909101908401612dda565b5085821015612e175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608081526000612e3a60808301876122da565b90506001600160a01b038086166020840152612e59604084018661231c565b80841660608401525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000808354612e8f81612a52565b60018281168015612ea75760018114612ebc57612eeb565b60ff1984168752821515830287019450612eeb565b8760005260208060002060005b85811015612ee25781548a820152908401908201612ec9565b50505082870194505b50929695505050505050565b600060018201612f0957612f09612abb565b5060010190565b818103612f1b575050565b612f258254612a52565b67ffffffffffffffff811115612f3d57612f3d6121a1565b612f4b81612d8f8454612a52565b6000601f821160018114612f7f5760008315612f675750848201545b600019600385901b1c1916600184901b178455612fe4565b600085815260209020601f19841690600086815260209020845b83811015612fb95782860154825560019586019590910190602001612f99565b5085831015612fd75781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b600083516130138184602088016122b6565b8351908301906130278183602088016122b6565b0194935050505056fea264697066735822122061f8f07054ee3a2d9a71872f7ff8a9dc2f86a362579cf974a5c1acbbce2c412f64736f6c63430008140033","sourceMap":"2711:14214:31:-:0;;;3914:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3960:15;-1:-1:-1;;;;;1273:26:2;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:2;;1350:1;1322:31;;;455:51:37;428:18;;1322:31:2;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;3987:14:31::1;:41:::0;;-1:-1:-1;;;;;;3987:41:31::1;-1:-1:-1::0;;;;;3987:41:31;;;::::1;::::0;;;::::1;::::0;;2711:14214;;2912:187:2;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;;;;;3020:17:2;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:37:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:37;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:37:o;309:203::-;2711:14214:31;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063a1bc17c511610097578063e1efb59611610066578063e1efb59614610231578063ea8f547f14610244578063f272660b1461029b578063f2fde38b146102ae57600080fd5b8063a1bc17c5146101d8578063b48272cc146101eb578063c1733f68146101fe578063d9cf884c1461021e57600080fd5b80635137b8a7116100d35780635137b8a7146101955780636a0876e0146101aa578063715018a6146101bd5780638da5cb5b146101c757600080fd5b806304c2320b14610105578063056b01ce146101345780631255c189146101575780634534ba1714610182575b600080fd5b610118610113366004612281565b6102c1565b60405161012b9796959493929190612330565b60405180910390f35b61014761014236600461239c565b6104ba565b604051901515815260200161012b565b60045461016a906001600160a01b031681565b6040516001600160a01b03909116815260200161012b565b6101476101903660046123f8565b6105f3565b61019d61075e565b60405161012b919061244f565b6101476101b83660046124c0565b610837565b6101c561091c565b005b6000546001600160a01b031661016a565b6101476101e6366004612281565b610930565b6101476101f936600461239c565b610b77565b61021161020c366004612281565b610cc5565b60405161012b9190612579565b61014761022c36600461239c565b610f49565b61014761023f36600461239c565b6110dc565b61028d610252366004612630565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161012b92919061268e565b6101476102a9366004612958565b611202565b6101c56102bc366004612a37565b611533565b80516020818301810180516001825292820191909301209152805481906102e790612a52565b80601f016020809104026020016040519081016040528092919081815260200182805461031390612a52565b80156103605780601f1061033557610100808354040283529160200191610360565b820191906000526020600020905b81548152906001019060200180831161034357829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161039390612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf90612a52565b801561040c5780601f106103e15761010080835404028352916020019161040c565b820191906000526020600020905b8154815290600101906020018083116103ef57829003601f168201915b50505050509080600301805461042190612a52565b80601f016020809104026020016040519081016040528092919081815260200182805461044d90612a52565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b50505050600483015460059093015491926001600160a01b031691905087565b60006104c461158a565b60006001600160a01b03166001846040516104df9190612a8c565b908152604051908190036020019020600101546001600160a01b031603610524578260405163c0bab25f60e01b815260040161051b9190612aa8565b60405180910390fd5b610530836000846115d0565b61057c5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c656400000000000000000000604482015260640161051b565b8160018460405161058d9190612a8c565b908152604051908190036020018120600501919091556105ae908490612a8c565b604051908190038120838252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a25060015b92915050565b60006105fd61158a565b8160018560405161060e9190612a8c565b908152602001604051809103902060050154101561066e5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b6564604482015260640161051b565b61067b84600284866115e7565b6106c75760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c65640000000000000000604482015260640161051b565b816001856040516106d89190612a8c565b908152602001604051809103902060050160008282546106f89190612ad1565b909155505060405161070b908590612a8c565b604080519182900382206001600160a01b038616835260208301859052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a25060019392505050565b60606003805480602002602001604051908101604052809291908181526020016000905b8282101561082e5783829060005260206000200180546107a190612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546107cd90612a52565b801561081a5780601f106107ef5761010080835404028352916020019161081a565b820191906000526020600020905b8154815290600101906020018083116107fd57829003601f168201915b505050505081526020019060010190610782565b50505050905090565b600061084161158a565b3063f272660b88888888888860006040519080825280602002602001820160405280156108ab57816020015b6108986040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161086d5790505b506040518863ffffffff1660e01b81526004016108ce9796959493929190612b70565b6020604051808303816000875af11580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190612cc7565b979650505050505050565b61092461158a565b61092e6000611903565b565b600061093a61158a565b60006001600160a01b03166001836040516109559190612a8c565b908152604051908190036020019020600101546001600160a01b031603610991578160405163c0bab25f60e01b815260040161051b9190612aa8565b60006001836040516109a39190612a8c565b90815260200160405180910390206005015411156109ef57816040517fb7d2c10a00000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b610aa1600183604051610a029190612a8c565b90815260200160405180910390206002018054610a1e90612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a90612a52565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050611960565b600182604051610ab19190612a8c565b9081526040519081900360200190206000610acc8282611f94565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055610afa600283016000611f94565b610b08600383016000611f94565b5060048101805473ffffffffffffffffffffffffffffffffffffffff191690556000600590910155604051610b3e908390612a8c565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000610b8161158a565b81600184604051610b929190612a8c565b9081526020016040518091039020600501541015610bf25760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b65640000604482015260640161051b565b610bfe836001846115d0565b610c4a5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c656400000000000000000000604482015260640161051b565b81600184604051610c5b9190612a8c565b90815260200160405180910390206005016000828254610c7b9190612ad1565b9091555050604051610c8e908490612a8c565b604051908190038120838252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee99906020016105e1565b6040805160e0810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c0810191909152600182604051610d0d9190612a8c565b90815260200160405180910390206040518060e0016040529081600082018054610d3690612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6290612a52565b8015610daf5780601f10610d8457610100808354040283529160200191610daf565b820191906000526020600020905b815481529060010190602001808311610d9257829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166004811115610dec57610dec612306565b6004811115610dfd57610dfd612306565b8152602001600282018054610e1190612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d90612a52565b8015610e8a5780601f10610e5f57610100808354040283529160200191610e8a565b820191906000526020600020905b815481529060010190602001808311610e6d57829003601f168201915b50505050508152602001600382018054610ea390612a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecf90612a52565b8015610f1c5780601f10610ef157610100808354040283529160200191610f1c565b820191906000526020600020905b815481529060010190602001808311610eff57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260059091015460409091015292915050565b6000610f5361158a565b60006001600160a01b0316600184604051610f6e9190612a8c565b908152604051908190036020019020600101546001600160a01b031603610faa578260405163c0bab25f60e01b815260040161051b9190612aa8565b81600184604051610fbb9190612a8c565b90815260200160405180910390206005015410156110095782826040517fed579e6000000000000000000000000000000000000000000000000000000000815260040161051b929190612ce4565b6000611017846005856115d0565b905080156110a857826001856040516110309190612a8c565b908152602001604051809103902060050160008282546110509190612ad1565b9091555050604051611063908590612a8c565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e906020015b60405180910390a260019150506105ed565b836040517f58300fe700000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b60006110e661158a565b60006001600160a01b03166001846040516111019190612a8c565b908152604051908190036020019020600101546001600160a01b03160361113d578260405163c0bab25f60e01b815260040161051b9190612aa8565b600061114b846004856115d0565b905080156111ce57826001856040516111649190612a8c565b908152602001604051809103902060050160008282546111849190612d06565b9091555050604051611197908590612a8c565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001611096565b836040517f8244096a00000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b600061120c61158a565b60006001600160a01b03166001866040516112279190612a8c565b908152604051908190036020019020600101546001600160a01b03161461127c57846040517f67ab234400000000000000000000000000000000000000000000000000000000815260040161051b9190612aa8565b6112868583611abe565b6002856040516112969190612a8c565b9081526040805160209281900383019020600360008181529190935220015460ff161561133a576112c8856003611bde565b61133a5760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e00000000606482015260840161051b565b6040518060e00160405280898152602001886001600160a01b0316815260200187600481111561136c5761136c612306565b8152602001868152602001858152602001846001600160a01b0316815260200160008152506001866040516113a19190612a8c565b908152604051908190036020019020815181906113be9082612d67565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600481111561142757611427612306565b0217905550606082015160028201906114409082612d67565b50608082015160038201906114559082612d67565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c090910151600590910155600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016114d18682612d67565b50846040516114e09190612a8c565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8989898760405161151d9493929190612e27565b60405180910390a2506001979650505050505050565b61153b61158a565b6001600160a01b03811661157e576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161051b565b61158781611903565b50565b6000546001600160a01b0316331461092e576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161051b565b60006115df84848460006115e7565b949350505050565b60006002856040516115f99190612a8c565b9081526020016040518091039020600085600581111561161b5761161b612306565b600581111561162c5761162c612306565b815260208101919091526040016000206003015460ff1661164f575060006115df565b60005b6002866040516116629190612a8c565b9081526020016040518091039020600086600581111561168457611684612306565b600581111561169557611695612306565b81526020810191909152604001600020600101548110156118f75760006002876040516116c29190612a8c565b908152602001604051809103902060008760058111156116e4576116e4612306565b60058111156116f5576116f5612306565b8152602001908152602001600020600101828154811061171757611717612e6b565b906000526020600020016040516020016117319190612e81565b604051602081830303815290604052805190602001209050600061184d8261184860028b6040516117629190612a8c565b908152602001604051809103902060008b600581111561178457611784612306565b600581111561179557611795612306565b815260200190815260200160002060020186815481106117b7576117b7612e6b565b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561183b57602002820191906000526020600020906000905b82829054906101000a900460ff16600681111561181957611819612306565b8152602060019283018181049485019490930390920291018084116117fa5790505b50505050508b898b611bf4565b611ece565b905060006001896040516118619190612a8c565b908152604051908190036020018120600101546001600160a01b031690611889908490612a8c565b6000604051808303816000865af19150503d80600081146118c6576040519150601f19603f3d011682016040523d82523d6000602084013e6118cb565b606091505b50509050806118e15760009450505050506115df565b50505080806118ef90612ef7565b915050611652565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b600354811015611aba57611a1c6003828154811061198357611983612e6b565b90600052602060002001805461199890612a52565b80601f01602080910402602001604051908101604052809291908181526020018280546119c490612a52565b8015611a115780601f106119e657610100808354040283529160200191611a11565b820191906000526020600020905b8154815290600101906020018083116119f457829003601f168201915b505050505083611f6f565b15611aa85760038054611a3190600190612ad1565b81548110611a4157611a41612e6b565b9060005260206000200160038281548110611a5e57611a5e612e6b565b906000526020600020019081611a749190612f10565b506003805480611a8657611a86612feb565b600190038181906000526020600020016000611aa29190611f94565b90555050565b80611ab281612ef7565b915050611963565b5050565b60005b8151811015611bd957818181518110611adc57611adc612e6b565b6020026020010151600284604051611af49190612a8c565b90815260200160405180910390206000848481518110611b1657611b16612e6b565b6020026020010151600001516005811115611b3357611b33612306565b6005811115611b4457611b44612306565b8152602081019190915260400160002081518154829060ff19166001836005811115611b7257611b72612306565b02179055506020828101518051611b8f9260018501920190611fce565b5060408201518051611bab916002840191602090910190612024565b50606091909101516003909101805460ff191691151591909117905580611bd181612ef7565b915050611ac1565b505050565b6000611bed83836000806115e7565b9392505050565b60606000855167ffffffffffffffff811115611c1257611c126121a1565b604051908082528060200260200182016040528015611c4557816020015b6060815260200190600190039081611c305790505b50905060005b8651811015611ec4576005878281518110611c6857611c68612e6b565b60200260200101516006811115611c8157611c81612306565b03611cc35760408051306020820152015b604051602081830303815290604052828281518110611cb357611cb3612e6b565b6020026020010181905250611eb2565b6002878281518110611cd757611cd7612e6b565b60200260200101516006811115611cf057611cf0612306565b03611d065785604051602001611c929190612aa8565b6004878281518110611d1a57611d1a612e6b565b60200260200101516006811115611d3357611d33612306565b03611d4957604080516020810186905201611c92565b6003878281518110611d5d57611d5d612e6b565b60200260200101516006811115611d7657611d76612306565b03611db457600186604051611d8b9190612a8c565b908152604080519182900360209081018320600401546001600160a01b03169083015201611c92565b6000878281518110611dc857611dc8612e6b565b60200260200101516006811115611de157611de1612306565b03611e1f57600186604051611df69190612a8c565b908152604080519182900360209081018320600101546001600160a01b03169083015201611c92565b6006878281518110611e3357611e33612e6b565b60200260200101516006811115611e4c57611e4c612306565b03611e6a57604080516001600160a01b038716602082015201611c92565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f7274656400000000000000000000604482015260640161051b565b80611ebc81612ef7565b915050611c4b565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b8251811015611f685781838281518110611f2b57611f2b612e6b565b6020026020010151604051602001611f44929190613001565b60405160208183030381529060405291508080611f6090612ef7565b915050611f0f565b5092915050565b600081518351148015611bed5750508051602091820120825192909101919091201490565b508054611fa090612a52565b6000825580601f10611fb0575050565b601f016020900490600052602060002090810190611587919061207d565b828054828255906000526020600020908101928215612014579160200282015b8281111561201457825182906120049082612d67565b5091602001919060010190611fee565b50612020929150612092565b5090565b828054828255906000526020600020908101928215612071579160200282015b8281111561207157825180516120619184916020909101906120af565b5091602001919060010190612044565b5061202092915061215f565b5b80821115612020576000815560010161207e565b808211156120205760006120a68282611f94565b50600101612092565b82805482825590600052602060002090601f016020900481019282156121535791602002820160005b8382111561212457835183826101000a81548160ff0219169083600681111561210357612103612306565b021790555092602001926001016020816000010492830192600103026120d8565b80156121515782816101000a81549060ff0219169055600101602081600001049283019260010302612124565b505b5061202092915061207d565b80821115612020576000612173828261217c565b5060010161215f565b50805460008255601f016020900490600052602060002090810190611587919061207d565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156121da576121da6121a1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612209576122096121a1565b604052919050565b600082601f83011261222257600080fd5b813567ffffffffffffffff81111561223c5761223c6121a1565b61224f601f8201601f19166020016121e0565b81815284602083860101111561226457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561229357600080fd5b813567ffffffffffffffff8111156122aa57600080fd5b6115df84828501612211565b60005b838110156122d15781810151838201526020016122b9565b50506000910152565b600081518084526122f28160208601602086016122b6565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b6005811061232c5761232c612306565b9052565b60e08152600061234360e083018a6122da565b6001600160a01b03808a166020850152612360604085018a61231c565b838203606085015261237282896122da565b9150838203608085015261238682886122da565b951660a0840152505060c0015295945050505050565b600080604083850312156123af57600080fd5b823567ffffffffffffffff8111156123c657600080fd5b6123d285828601612211565b95602094909401359450505050565b80356001600160a01b0381168114610b7257600080fd5b60008060006060848603121561240d57600080fd5b833567ffffffffffffffff81111561242457600080fd5b61243086828701612211565b93505061243f602085016123e1565b9150604084013590509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156124a457603f198886030184526124928583516122da565b94509285019290850190600101612476565b5092979650505050505050565b803560058110610b7257600080fd5b60008060008060008060c087890312156124d957600080fd5b863567ffffffffffffffff808211156124f157600080fd5b6124fd8a838b01612211565b975061250b60208a016123e1565b965061251960408a016124b1565b9550606089013591508082111561252f57600080fd5b61253b8a838b01612211565b9450608089013591508082111561255157600080fd5b5061255e89828a01612211565b92505061256d60a088016123e1565b90509295509295509295565b602081526000825160e060208401526125966101008401826122da565b905060208401516001600160a01b038082166040860152604086015191506125c1606086018361231c565b60608601519150601f19808685030160808701526125df84846122da565b935060808701519250808685030160a0870152506125fd83836122da565b92508060a08701511660c0860152505060c084015160e08401528091505092915050565b803560068110610b7257600080fd5b6000806040838503121561264357600080fd5b823567ffffffffffffffff81111561265a57600080fd5b61266685828601612211565b92505061267560208401612621565b90509250929050565b6006811061232c5761232c612306565b6040810161269c828561267e565b82151560208301529392505050565b600067ffffffffffffffff8211156126c5576126c56121a1565b5060051b60200190565b600082601f8301126126e057600080fd5b813560206126f56126f0836126ab565b6121e0565b828152600592831b850182019282820191908785111561271457600080fd5b8387015b858110156127b957803567ffffffffffffffff8111156127385760008081fd5b8801603f81018a1361274a5760008081fd5b85810135604061275c6126f0836126ab565b82815291851b8301810191888101908d8411156127795760008081fd5b938201935b838510156127a85784359250600783106127985760008081fd5b828252938901939089019061277e565b885250505093850193508401612718565b5090979650505050505050565b801515811461158757600080fd5b8035610b72816127c6565b600082601f8301126127f057600080fd5b6127fd6126f083356126ab565b82358082526020808301929160051b8501018581111561281c57600080fd5b602085015b8181101561294d5767ffffffffffffffff808235111561284057600080fd5b813587016080818a03601f1901121561285857600080fd5b6128606121b7565b61286c60208301612621565b815260408201358381111561288057600080fd5b8201603f81018b1361289157600080fd5b60208101356128a26126f0826126ab565b81815260059190911b82016040019060208101908d8311156128c357600080fd5b604084015b838110156128fc5787813511156128de57600080fd5b6128ee8f60408335880101612211565b8352602092830192016128c8565b50602085015250505060608201358381111561291757600080fd5b6129268b6020838601016126cf565b604083015250612938608083016127d4565b60608201528652505060209384019301612821565b509095945050505050565b600080600080600080600060e0888a03121561297357600080fd5b873567ffffffffffffffff8082111561298b57600080fd5b6129978b838c01612211565b98506129a560208b016123e1565b97506129b360408b016124b1565b965060608a01359150808211156129c957600080fd5b6129d58b838c01612211565b955060808a01359150808211156129eb57600080fd5b6129f78b838c01612211565b9450612a0560a08b016123e1565b935060c08a0135915080821115612a1b57600080fd5b50612a288a828b016127df565b91505092959891949750929550565b600060208284031215612a4957600080fd5b611bed826123e1565b600181811c90821680612a6657607f821691505b602082108103612a8657634e487b7160e01b600052602260045260246000fd5b50919050565b60008251612a9e8184602087016122b6565b9190910192915050565b602081526000611bed60208301846122da565b634e487b7160e01b600052601160045260246000fd5b818103818111156105ed576105ed612abb565b600081518084526020808501808196508360051b810191508286016000805b86811015612b62578385038a52825180518087529087019087870190845b81811015612b4d57835160078110612b3b57612b3b612306565b83529289019291890191600101612b21565b50509a87019a95505091850191600101612b03565b509298975050505050505050565b60e081526000612b8360e083018a6122da565b60206001600160a01b03808b16828601526040612ba28187018c61231c565b606086850381880152612bb5858c6122da565b9450608087860381890152612bca868c6122da565b955060a0848b16818a015288870360c08a015286945089518088528688019550868160051b890101878c0160005b83811015612cad57601f198b84030189528151868401612c1985835161267e565b818c0151858d01899052805191829052600582901b8601880191908d01908887019060005b81811015612c6c57609f19898603018352612c5a8585516122da565b9450928f0192918f0191600101612c3e565b50505050898201518582038b870152612c858282612ae4565b928a0151801515878c0152929150612c9a9050565b998b019993505090890190600101612bf8565b505080995050505050505050505098975050505050505050565b600060208284031215612cd957600080fd5b8151611bed816127c6565b604081526000612cf760408301856122da565b90508260208301529392505050565b808201808211156105ed576105ed612abb565b601f821115611bd957600081815260208120601f850160051c81016020861015612d405750805b601f850160051c820191505b81811015612d5f57828155600101612d4c565b505050505050565b815167ffffffffffffffff811115612d8157612d816121a1565b612d9581612d8f8454612a52565b84612d19565b602080601f831160018114612dca5760008415612db25750858301515b600019600386901b1c1916600185901b178555612d5f565b600085815260208120601f198616915b82811015612df957888601518255948401946001909101908401612dda565b5085821015612e175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608081526000612e3a60808301876122da565b90506001600160a01b038086166020840152612e59604084018661231c565b80841660608401525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000808354612e8f81612a52565b60018281168015612ea75760018114612ebc57612eeb565b60ff1984168752821515830287019450612eeb565b8760005260208060002060005b85811015612ee25781548a820152908401908201612ec9565b50505082870194505b50929695505050505050565b600060018201612f0957612f09612abb565b5060010190565b818103612f1b575050565b612f258254612a52565b67ffffffffffffffff811115612f3d57612f3d6121a1565b612f4b81612d8f8454612a52565b6000601f821160018114612f7f5760008315612f675750848201545b600019600385901b1c1916600184901b178455612fe4565b600085815260209020601f19841690600086815260209020845b83811015612fb95782860154825560019586019590910190602001612f99565b5085831015612fd75781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b600083516130138184602088016122b6565b8351908301906130278183602088016122b6565b0194935050505056fea264697066735822122061f8f07054ee3a2d9a71872f7ff8a9dc2f86a362579cf974a5c1acbbce2c412f64736f6c63430008140033","sourceMap":"2711:14214:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2838:40;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;8998:419;;;;;;:::i;:::-;;:::i;:::-;;;4076:14:37;;4069:22;4051:41;;4039:2;4024:18;8998:419:31;3911:187:37;3188:29:31;;;;;-1:-1:-1;;;;;3188:29:31;;;;;;-1:-1:-1;;;;;4267:55:37;;;4249:74;;4237:2;4222:18;3188:29:31;4103:226:37;10410:461:31;;;;;;:::i;:::-;;:::i;10965:94::-;;;:::i;:::-;;;;;;;:::i;5937:335::-;;;;;;:::i;:::-;;:::i;2293:101:2:-;;;:::i;:::-;;1638:85;1684:7;1710:6;-1:-1:-1;;;;;1710:6:2;1638:85;;6516:431:31;;;;;;:::i;:::-;;:::i;9675:381::-;;;;;;:::i;:::-;;:::i;11643:121::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8030:709::-;;;;;;:::i;:::-;;:::i;7205:560::-;;;;;;:::i;:::-;;:::i;2963:94::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2963:94:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4736:1007::-;;;;;;:::i;:::-;;:::i;2543:215:2:-;;;;;;:::i;:::-;;:::i;2838:40:31:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2838:40:31;;;;;;;;;;;-1:-1:-1;;;;;2838:40:31;;;-1:-1:-1;;;2838:40:31;;;;;;-1:-1:-1;2838:40:31;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2838:40:31;;;;;;;;;;;-1:-1:-1;;;;;2838:40:31;;;-1:-1:-1;2838:40:31;:::o;8998:419::-;9079:12;1531:13:2;:11;:13::i;:::-;9149:1:31::1;-1:-1:-1::0;;;;;9106:45:31::1;:6;9113:7;9106:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;9106:31:31::1;:45:::0;9103:107:::1;;9191:7;9173:26;;-1:-1:-1::0;;;9173:26:31::1;;;;;;;;:::i;:::-;;;;;;;;9103:107;9236:47;9245:7;9254:20;9276:6;9236:8;:47::i;:::-;9228:83;;;::::0;-1:-1:-1;;;9228:83:31;;16522:2:37;9228:83:31::1;::::0;::::1;16504:21:37::0;16561:2;16541:18;;;16534:30;16600:24;16580:18;;;16573:52;16642:18;;9228:83:31::1;16320:346:37::0;9228:83:31::1;9347:6;9322;9329:7;9322:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:22:::1;;:31:::0;;;;9368:21:::1;::::0;9373:7;;9368:21:::1;:::i;:::-;;::::0;;;;::::1;::::0;;16817:25:37;;;9368:21:31;::::1;::::0;16805:2:37;16790:18;9368:21:31::1;;;;;;;;-1:-1:-1::0;9406:4:31::1;1554:1:2;8998:419:31::0;;;;:::o;10410:461::-;10519:12;1531:13:2;:11;:13::i;:::-;10577:6:31::1;10551;10558:7;10551:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;10543:77;;;::::0;-1:-1:-1;;;10543:77:31;;17055:2:37;10543:77:31::1;::::0;::::1;17037:21:37::0;;;17074:18;;;17067:30;17133:34;17113:18;;;17106:62;17185:18;;10543:77:31::1;16853:356:37::0;10543:77:31::1;10639:67;10648:7;10657:22;10681:6;10689:16;10639:8;:67::i;:::-;10631:104;;;::::0;-1:-1:-1;;;10631:104:31;;17416:2:37;10631:104:31::1;::::0;::::1;17398:21:37::0;17455:2;17435:18;;;17428:30;17494:26;17474:18;;;17467:54;17538:18;;10631:104:31::1;17214:348:37::0;10631:104:31::1;10772:6;10746;10753:7;10746:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10802:41:31::1;::::0;::::1;::::0;10809:7;;10802:41:::1;:::i;:::-;;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;18081:55:37;;18063:74;;18168:2;18153:18;;18146:34;;;10802:41:31;::::1;::::0;18036:18:37;10802:41:31::1;;;;;;;-1:-1:-1::0;10860:4:31::1;10410:461:::0;;;;;:::o;10965:94::-;11015:15;11049:3;11042:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10965:94;:::o;5937:335::-;6119:16;1531:13:2;:11;:13::i;:::-;6154:4:31::1;:9;6164:12:::0;6178:15;6195:9;6206:7;6215:11;6228:5;6262:1:::1;6235:29;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6235:29:31::1;;;;;;;;;;;;;;;;;6154:111;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6147:118:::0;5937:335;-1:-1:-1;;;;;;;5937:335:31:o;2293:101:2:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;6516:431:31:-;6583:12;1531:13:2;:11;:13::i;:::-;6653:1:31::1;-1:-1:-1::0;;;;;6610:45:31::1;:6;6617:7;6610:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;6610:31:31::1;:45:::0;6607:108:::1;;6696:7;6678:26;;-1:-1:-1::0;;;6678:26:31::1;;;;;;;;:::i;6607:108::-;6752:1;6727:6;6734:7;6727:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;6724:83;;;6788:7;6776:20;;;;;;;;;;;:::i;6724:83::-;6816:40;6832:6;6839:7;6832:15;;;;;;:::i;:::-;;;;;;;;;;;;;:23;;6816:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:40::i;:::-;6873:6;6880:7;6873:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;::::1;6866:22;6873:15:::0;;6866:22:::1;:::i;:::-;;::::0;::::1;::::0;;-1:-1:-1;;6866:22:31;;;::::1;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;6866:22:31::1;::::0;::::1;::::0;;-1:-1:-1;;6866:22:31::1;::::0;;::::1;;::::0;;::::1;::::0;6904:15:::1;::::0;::::1;::::0;6911:7;;6904:15:::1;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;6936:4:31::1;1554:1:2;6516:431:31::0;;;:::o;9675:381::-;9756:12;1531:13:2;:11;:13::i;:::-;9814:6:31::1;9788;9795:7;9788:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;9780:75;;;::::0;-1:-1:-1;;;9780:75:31;;22674:2:37;9780:75:31::1;::::0;::::1;22656:21:37::0;22713:2;22693:18;;;22686:30;22752:32;22732:18;;;22725:60;22802:18;;9780:75:31::1;22472:354:37::0;9780:75:31::1;9874:47;9883:7;9892:20;9914:6;9874:8;:47::i;:::-;9866:82;;;::::0;-1:-1:-1;;;9866:82:31;;23033:2:37;9866:82:31::1;::::0;::::1;23015:21:37::0;23072:2;23052:18;;;23045:30;23111:24;23091:18;;;23084:52;23153:18;;9866:82:31::1;22831:346:37::0;9866:82:31::1;9985:6;9959;9966:7;9959:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10007:21:31::1;::::0;::::1;::::0;10012:7;;10007:21:::1;:::i;:::-;;::::0;;;;::::1;::::0;;16817:25:37;;;10007:21:31;::::1;::::0;16805:2:37;16790:18;10007:21:31::1;16671:177:37::0;11643:121:31;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11742:6:31;11749:7;11742:15;;;;;;:::i;:::-;;;;;;;;;;;;;11735:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11735:22:31;;;-1:-1:-1;;11735:22:31;;;;-1:-1:-1;;;;;11735:22:31;;;;;;;;;;;-1:-1:-1;;;11735:22:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11735:22:31;;;-1:-1:-1;;11735:22:31;;;;-1:-1:-1;;;;;11735:22:31;;;;;;;;;;;;;;;;11643:121;-1:-1:-1;;11643:121:31:o;8030:709::-;8113:12;1531:13:2;:11;:13::i;:::-;8193:1:31::1;-1:-1:-1::0;;;;;8150:45:31::1;:6;8157:7;8150:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;8150:31:31::1;:45:::0;8147:107:::1;;8235:7;8217:26;;-1:-1:-1::0;;;8217:26:31::1;;;;;;;;:::i;8147:107::-;8292:6;8267;8274:7;8267:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:31;8264:108;;;8345:7;8354:6;8321:40;;;;;;;;;;;;:::i;8264:108::-;8382:18;8403:49;8412:7;8421:22;8445:6;8403:8;:49::i;:::-;8382:70;;8466:13;8463:227;;;8606:6;8580;8587:7;8580:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8631:23:31::1;::::0;::::1;::::0;8638:7;;8631:23:::1;:::i;:::-;;::::0;;;;::::1;::::0;;16817:25:37;;;8631:23:31;::::1;::::0;16805:2:37;16790:18;8631:23:31::1;;;;;;;;8675:4;8668:11;;;;;8463:227;8724:7;8707:25;;;;;;;;;;;:::i;7205:560::-:0;7286:12;1531:13:2;:11;:13::i;:::-;7356:1:31::1;-1:-1:-1::0;;;;;7313:45:31::1;:6;7320:7;7313:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;7313:31:31::1;:45:::0;7310:107:::1;;7398:7;7380:26;;-1:-1:-1::0;;;7380:26:31::1;;;;;;;;:::i;7310:107::-;7427:16;7446:47;7455:7;7464:20;7486:6;7446:8;:47::i;:::-;7427:66;;7507:11;7504:214;;;7636:6;7610;7617:7;7610:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;7661:21:31::1;::::0;::::1;::::0;7666:7;;7661:21:::1;:::i;:::-;;::::0;;;;::::1;::::0;;16817:25:37;;;7661:21:31;::::1;::::0;16805:2:37;16790:18;7661:21:31::1;16671:177:37::0;7504:214:31::1;7750:7;7735:23;;;;;;;;;;;:::i;4736:1007::-:0;4962:16;1531:13:2;:11;:13::i;:::-;5036:1:31::1;-1:-1:-1::0;;;;;4993:45:31::1;:6;5000:7;4993:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;4993:31:31::1;:45;4990:110;;5081:7;5061:28;;;;;;;;;;;:::i;4990:110::-;5205:53;5236:7;5245:12;5205:30;:53::i;:::-;5272:18;5291:7;5272:27;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;5300:30:::1;5272:59;::::0;;;;;;;;:69:::1;::::0;::::1;;5269:221;;;5365:49;5374:7;5383:30;5365:8;:49::i;:::-;5357:122;;;::::0;-1:-1:-1;;;5357:122:31;;23810:2:37;5357:122:31::1;::::0;::::1;23792:21:37::0;23849:2;23829:18;;;23822:30;23888:34;23868:18;;;23861:62;23959:30;23939:18;;;23932:58;24007:19;;5357:122:31::1;23608:424:37::0;5357:122:31::1;5518:79;;;;;;;;5524:12;5518:79;;;;5538:15;-1:-1:-1::0;;;;;5518:79:31::1;;;;;5555:9;5518:79;;;;;;;;:::i;:::-;;;;;5566:7;5518:79;;;;5575:11;5518:79;;;;5588:5;-1:-1:-1::0;;;;;5518:79:31::1;;;;;5595:1;5518:79;;::::0;5500:6:::1;5507:7;5500:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:97;;:15;;:97:::1;::::0;:15;:97:::1;:::i;:::-;-1:-1:-1::0;5500:97:31::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;5500:97:31;;::::1;-1:-1:-1::0;;5500:97:31;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;5500:97:31;;-1:-1:-1;;;5500:97:31;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;5500:97:31::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;5500:97:31::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;5500:97:31::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;5500:97:31::1;-1:-1:-1::0;;;;;5500:97:31;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;5612:3:::1;:17:::0;;-1:-1:-1;5612:17:31;::::1;::::0;;-1:-1:-1;5612:17:31;;;;;::::1;;5621:7:::0;5612:17;::::1;:::i;:::-;;5658:7;5653:62;;;;;;:::i;:::-;;;;;;;;;5667:12;5681:15;5698:9;5709:5;5653:62;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;5732:4:31::1;4736:1007:::0;;;;;;;;;:::o;2543:215:2:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:2;::::1;2623:91;;2672:31;::::0;::::1;::::0;;2700:1:::1;2672:31;::::0;::::1;4249:74:37::0;4222:18;;2672:31:2::1;4103:226:37::0;2623:91:2::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:2;735:10:7;1855:23:2;1851:101;;1901:40;;;;;735:10:7;1901:40:2;;;4249:74:37;4222:18;;1901:40:2;4103:226:37;12997:200:31;13105:12;13136:54;13145:7;13154:15;13171:6;13187:1;13136:8;:54::i;:::-;13129:61;12997:200;-1:-1:-1;;;;12997:200:31:o;13855:876::-;13981:4;14002:18;14021:7;14002:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;14030:15;14002:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;14002:44:31;:54;;;;;13997:98;;-1:-1:-1;14079:5:31;14072:12;;13997:98;14110:6;14105:598;14126:18;14145:7;14126:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;14154:15;14126:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;14126:44:31;:63;;:70;14122:74;;14105:598;;;14217:23;14277:18;14296:7;14277:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;14305:15;14277:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:63;;14341:1;14277:66;;;;;;;;:::i;:::-;;;;;;;;14260:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;14250:95;;;;;;14217:129;;14361:26;14390:137;14410:16;14428:98;14441:18;14460:7;14441:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;14469:15;14441:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:54;;14496:1;14441:57;;;;;;;;:::i;:::-;;;;;;;;14428:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14500:7;14509:8;14519:6;14428:12;:98::i;:::-;14390:19;:137::i;:::-;14361:166;;14543:16;14565:6;14572:7;14565:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:31;;;-1:-1:-1;;;;;14565:31:31;;:51;;14602:13;;14565:51;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14542:74;;;14635:11;14630:63;;14673:5;14666:12;;;;;;;;14630:63;14203:500;;;14198:3;;;;;:::i;:::-;;;;14105:598;;;-1:-1:-1;14720:4:31;;13855:876;-1:-1:-1;;;;;13855:876:31:o;2912:187:2:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;3020:17:2;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;11186:276:31:-;11254:9;11249:207;11273:3;:10;11269:14;;11249:207;;;11308:25;11322:3;11326:1;11322:6;;;;;;;;:::i;:::-;;;;;;;;11308:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11330:2;11308:13;:25::i;:::-;11304:142;;;11362:3;11366:10;;:14;;11379:1;;11366:14;:::i;:::-;11362:19;;;;;;;;:::i;:::-;;;;;;;;11353:3;11357:1;11353:6;;;;;;;;:::i;:::-;;;;;;;;:28;;;;;;:::i;:::-;;11399:3;:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;11249:207;11186:276;:::o;11304:142::-;11285:3;;;;:::i;:::-;;;;11249:207;;;;11186:276;:::o;12008:281::-;12138:6;12134:149;12154:12;:19;12150:1;:23;12134:149;;;12257:12;12270:1;12257:15;;;;;;;;:::i;:::-;;;;;;;12194:18;12213:7;12194:27;;;;;;:::i;:::-;;;;;;;;;;;;;:60;12222:12;12235:1;12222:15;;;;;;;;:::i;:::-;;;;;;;:31;;;12194:60;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;12194:60:31;:78;;;;:60;;-1:-1:-1;;12194:78:31;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;12194:78:31;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12194:78:31;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12194:78:31;;;;;;;;;;;;-1:-1:-1;;12194:78:31;;;;;;;;;;12175:3;;;;:::i;:::-;;;;12134:149;;;;12008:281;;:::o;12516:180::-;12609:12;12640:49;12649:7;12658:15;12675:1;12686;12640:8;:49::i;:::-;12633:56;12516:180;-1:-1:-1;;;12516:180:31:o;15795:1128::-;15926:14;15951:28;15994:9;:16;15982:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15951:60;;16026:6;16021:866;16042:9;:16;16038:1;:20;16021:866;;;16099:14;16083:9;16093:1;16083:12;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;:::i;:::-;;16079:798;;16152:25;;;16171:4;16152:25;;;4249:74:37;4222:18;16152:25:31;;;;;;;;;;;;;16133:13;16147:1;16133:16;;;;;;;;:::i;:::-;;;;;;:44;;;;16079:798;;;16218:15;16202:9;16212:1;16202:12;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;:::i;:::-;;16198:679;;16283:7;16272:19;;;;;;;;:::i;16198:679::-;16332:14;16316:9;16326:1;16316:12;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;:::i;:::-;;16312:565;;16385:18;;;;;;16817:25:37;;;16790:18;16385::31;16671:177:37;16312:565:31;16444:13;16428:9;16438:1;16428:12;;;;;;;;:::i;:::-;;;;;;;:29;;;;;;;;:::i;:::-;;16424:453;;16507:6;16514:7;16507:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:21;;;-1:-1:-1;;;;;16507:21:31;16496:33;;;4249:74:37;4222:18;16496:33:31;4103:226:37;16424:453:31;16570:23;16554:9;16564:1;16554:12;;;;;;;;:::i;:::-;;;;;;;:39;;;;;;;;:::i;:::-;;16550:327;;16643:6;16650:7;16643:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:31;;;-1:-1:-1;;;;;16643:31:31;16632:43;;;4249:74:37;4222:18;16632:43:31;4103:226:37;16550:327:31;16716:16;16700:9;16710:1;16700:12;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;:::i;:::-;;16696:181;;16771:20;;;-1:-1:-1;;;;;4267:55:37;;16771:20:31;;;4249:74:37;4222:18;16771:20:31;4103:226:37;16696:181:31;16830:32;;-1:-1:-1;;;16830:32:31;;30091:2:37;16830:32:31;;;30073:21:37;30130:2;30110:18;;;30103:30;30169:24;30149:18;;;30142:52;30211:18;;16830:32:31;29889:346:37;16696:181:31;16060:3;;;;:::i;:::-;;;;16021:866;;;-1:-1:-1;16903:13:31;15795:1128;-1:-1:-1;;;;;15795:1128:31:o;15001:382::-;15162:34;;;30391:66:37;30379:79;;15162:34:31;;;30367:92:37;15162:34:31;;;;;;;;;30475:11:37;;;;15162:34:31;;;15211:9;15206:141;15230:13;:20;15226:1;:24;15206:141;;;15304:13;15319;15333:1;15319:16;;;;;;;;:::i;:::-;;;;;;;15287:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15271:65;;15252:3;;;;;:::i;:::-;;;;15206:141;;;;15001:382;;;;:::o;2914:182:8:-;2986:4;3034:1;3028:15;3015:1;3009:15;:34;:80;;;;-1:-1:-1;;3070:19:8;;;;;;;3047;;;;;;;;;;:42;;2914:182::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:184:37:-;-1:-1:-1;;;63:1:37;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:253;275:2;269:9;317:4;305:17;;352:18;337:34;;373:22;;;334:62;331:88;;;399:18;;:::i;:::-;435:2;428:22;203:253;:::o;461:275::-;532:2;526:9;597:2;578:13;;-1:-1:-1;;574:27:37;562:40;;632:18;617:34;;653:22;;;614:62;611:88;;;679:18;;:::i;:::-;715:2;708:22;461:275;;-1:-1:-1;461:275:37:o;741:531::-;784:5;837:3;830:4;822:6;818:17;814:27;804:55;;855:1;852;845:12;804:55;891:6;878:20;917:18;913:2;910:26;907:52;;;939:18;;:::i;:::-;983:55;1026:2;1007:13;;-1:-1:-1;;1003:27:37;1032:4;999:38;983:55;:::i;:::-;1063:2;1054:7;1047:19;1109:3;1102:4;1097:2;1089:6;1085:15;1081:26;1078:35;1075:55;;;1126:1;1123;1116:12;1075:55;1191:2;1184:4;1176:6;1172:17;1165:4;1156:7;1152:18;1139:55;1239:1;1214:16;;;1232:4;1210:27;1203:38;;;;1218:7;741:531;-1:-1:-1;;;741:531:37:o;1277:322::-;1346:6;1399:2;1387:9;1378:7;1374:23;1370:32;1367:52;;;1415:1;1412;1405:12;1367:52;1455:9;1442:23;1488:18;1480:6;1477:30;1474:50;;;1520:1;1517;1510:12;1474:50;1543;1585:7;1576:6;1565:9;1561:22;1543:50;:::i;1604:250::-;1689:1;1699:113;1713:6;1710:1;1707:13;1699:113;;;1789:11;;;1783:18;1770:11;;;1763:39;1735:2;1728:10;1699:113;;;-1:-1:-1;;1846:1:37;1828:16;;1821:27;1604:250::o;1859:271::-;1901:3;1939:5;1933:12;1966:6;1961:3;1954:19;1982:76;2051:6;2044:4;2039:3;2035:14;2028:4;2021:5;2017:16;1982:76;:::i;:::-;2112:2;2091:15;-1:-1:-1;;2087:29:37;2078:39;;;;2119:4;2074:50;;1859:271;-1:-1:-1;;1859:271:37:o;2135:184::-;-1:-1:-1;;;2184:1:37;2177:88;2284:4;2281:1;2274:15;2308:4;2305:1;2298:15;2324:140;2405:1;2398:5;2395:12;2385:46;;2411:18;;:::i;:::-;2440;;2324:140::o;2469:946::-;2839:3;2828:9;2821:22;2802:4;2866:46;2907:3;2896:9;2892:19;2884:6;2866:46;:::i;:::-;-1:-1:-1;;;;;3021:2:37;3013:6;3009:15;3004:2;2993:9;2989:18;2982:43;3034:53;3083:2;3072:9;3068:18;3060:6;3034:53;:::i;:::-;3135:9;3127:6;3123:22;3118:2;3107:9;3103:18;3096:50;3169:33;3195:6;3187;3169:33;:::i;:::-;3155:47;;3251:9;3243:6;3239:22;3233:3;3222:9;3218:19;3211:51;3279:33;3305:6;3297;3279:33;:::i;:::-;3349:15;;3343:3;3328:19;;3321:44;-1:-1:-1;;3396:3:37;3381:19;3374:35;3271:41;2469:946;-1:-1:-1;;;;;2469:946:37:o;3420:390::-;3498:6;3506;3559:2;3547:9;3538:7;3534:23;3530:32;3527:52;;;3575:1;3572;3565:12;3527:52;3615:9;3602:23;3648:18;3640:6;3637:30;3634:50;;;3680:1;3677;3670:12;3634:50;3703;3745:7;3736:6;3725:9;3721:22;3703:50;:::i;:::-;3693:60;3800:2;3785:18;;;;3772:32;;-1:-1:-1;;;;3420:390:37:o;4334:196::-;4402:20;;-1:-1:-1;;;;;4451:54:37;;4441:65;;4431:93;;4520:1;4517;4510:12;4535:464;4622:6;4630;4638;4691:2;4679:9;4670:7;4666:23;4662:32;4659:52;;;4707:1;4704;4697:12;4659:52;4747:9;4734:23;4780:18;4772:6;4769:30;4766:50;;;4812:1;4809;4802:12;4766:50;4835;4877:7;4868:6;4857:9;4853:22;4835:50;:::i;:::-;4825:60;;;4904:38;4938:2;4927:9;4923:18;4904:38;:::i;:::-;4894:48;;4989:2;4978:9;4974:18;4961:32;4951:42;;4535:464;;;;;:::o;5004:803::-;5166:4;5195:2;5235;5224:9;5220:18;5265:2;5254:9;5247:21;5288:6;5323;5317:13;5354:6;5346;5339:22;5392:2;5381:9;5377:18;5370:25;;5454:2;5444:6;5441:1;5437:14;5426:9;5422:30;5418:39;5404:53;;5492:2;5484:6;5480:15;5513:1;5523:255;5537:6;5534:1;5531:13;5523:255;;;5630:2;5626:7;5614:9;5606:6;5602:22;5598:36;5593:3;5586:49;5658:40;5691:6;5682;5676:13;5658:40;:::i;:::-;5648:50;-1:-1:-1;5756:12:37;;;;5721:15;;;;5559:1;5552:9;5523:255;;;-1:-1:-1;5795:6:37;;5004:803;-1:-1:-1;;;;;;;5004:803:37:o;5812:150::-;5887:20;;5936:1;5926:12;;5916:40;;5952:1;5949;5942:12;5967:990;6116:6;6124;6132;6140;6148;6156;6209:3;6197:9;6188:7;6184:23;6180:33;6177:53;;;6226:1;6223;6216:12;6177:53;6266:9;6253:23;6295:18;6336:2;6328:6;6325:14;6322:34;;;6352:1;6349;6342:12;6322:34;6375:50;6417:7;6408:6;6397:9;6393:22;6375:50;:::i;:::-;6365:60;;6444:38;6478:2;6467:9;6463:18;6444:38;:::i;:::-;6434:48;;6501:45;6542:2;6531:9;6527:18;6501:45;:::i;:::-;6491:55;;6599:2;6588:9;6584:18;6571:32;6555:48;;6628:2;6618:8;6615:16;6612:36;;;6644:1;6641;6634:12;6612:36;6667:52;6711:7;6700:8;6689:9;6685:24;6667:52;:::i;:::-;6657:62;;6772:3;6761:9;6757:19;6744:33;6728:49;;6802:2;6792:8;6789:16;6786:36;;;6818:1;6815;6808:12;6786:36;;6841:52;6885:7;6874:8;6863:9;6859:24;6841:52;:::i;:::-;6831:62;;;6912:39;6946:3;6935:9;6931:19;6912:39;:::i;:::-;6902:49;;5967:990;;;;;;;;:::o;6962:1195::-;7139:2;7128:9;7121:21;7102:4;7177:6;7171:13;7220:4;7215:2;7204:9;7200:18;7193:32;7248:52;7295:3;7284:9;7280:19;7266:12;7248:52;:::i;:::-;7234:66;;7349:2;7341:6;7337:15;7331:22;-1:-1:-1;;;;;7470:2:37;7454:14;7450:23;7445:2;7434:9;7430:18;7423:51;7523:2;7515:6;7511:15;7505:22;7483:44;;7536:61;7593:2;7582:9;7578:18;7562:14;7536:61;:::i;:::-;7646:2;7638:6;7634:15;7628:22;7606:44;;7673:2;7669:7;7741:2;7729:9;7721:6;7717:22;7713:31;7707:3;7696:9;7692:19;7685:60;7768:41;7802:6;7786:14;7768:41;:::i;:::-;7754:55;;7858:3;7850:6;7846:16;7840:23;7818:45;;7928:2;7916:9;7908:6;7904:22;7900:31;7894:3;7883:9;7879:19;7872:60;;7955:41;7989:6;7973:14;7955:41;:::i;:::-;7941:55;;8062:2;8055:3;8047:6;8043:16;8037:23;8033:32;8027:3;8016:9;8012:19;8005:61;;;8122:3;8114:6;8110:16;8104:23;8097:4;8086:9;8082:20;8075:53;8145:6;8137:14;;;6962:1195;;;;:::o;8162:156::-;8243:20;;8292:1;8282:12;;8272:40;;8308:1;8305;8298:12;8323:430;8422:6;8430;8483:2;8471:9;8462:7;8458:23;8454:32;8451:52;;;8499:1;8496;8489:12;8451:52;8539:9;8526:23;8572:18;8564:6;8561:30;8558:50;;;8604:1;8601;8594:12;8558:50;8627;8669:7;8660:6;8649:9;8645:22;8627:50;:::i;:::-;8617:60;;;8696:51;8743:2;8732:9;8728:18;8696:51;:::i;:::-;8686:61;;8323:430;;;;;:::o;8758:146::-;8845:1;8838:5;8835:12;8825:46;;8851:18;;:::i;8909:302::-;9084:2;9069:18;;9096:50;9073:9;9128:6;9096:50;:::i;:::-;9196:6;9189:14;9182:22;9177:2;9166:9;9162:18;9155:50;8909:302;;;;;:::o;9216:203::-;9296:4;9329:18;9321:6;9318:30;9315:56;;;9351:18;;:::i;:::-;-1:-1:-1;9396:1:37;9392:14;9408:4;9388:25;;9216:203::o;9424:1931::-;9493:5;9546:3;9539:4;9531:6;9527:17;9523:27;9513:55;;9564:1;9561;9554:12;9513:55;9600:6;9587:20;9626:4;9650:80;9666:63;9726:2;9666:63;:::i;:::-;9650:80;:::i;:::-;9764:15;;;9826:1;9866:11;;;9854:24;;9850:33;;;9795:12;;;;9752:3;9895:15;;;9892:35;;;9923:1;9920;9913:12;9892:35;9959:2;9951:6;9947:15;9971:1355;9987:6;9982:3;9979:15;9971:1355;;;10073:3;10060:17;10109:18;10096:11;10093:35;10090:125;;;10169:1;10198:2;10194;10187:14;10090:125;10238:24;;10297:2;10289:11;;10285:21;-1:-1:-1;10275:119:37;;10348:1;10377:2;10373;10366:14;10275:119;10438:2;10434;10430:11;10417:25;10465:2;10493:80;10509:63;10569:2;10509:63;:::i;10493:80::-;10617:17;;;10711:11;;;10703:20;;10699:29;;;10656:14;;;;10744:17;;;10741:107;;;10802:1;10831:2;10827;10820:14;10741:107;10874:11;;;;10898:355;10916:8;10909:5;10906:19;10898:355;;;11010:5;10997:19;10984:32;;11053:1;11046:5;11043:12;11033:129;;11106:1;11140:3;11135;11128:16;11033:129;11179:20;;;10937:14;;;;11225;;;;10898:355;;;11266:18;;-1:-1:-1;;;11304:12:37;;;;-1:-1:-1;10004:12:37;;9971:1355;;;-1:-1:-1;11344:5:37;;9424:1931;-1:-1:-1;;;;;;;9424:1931:37:o;11360:118::-;11446:5;11439:13;11432:21;11425:5;11422:32;11412:60;;11468:1;11465;11458:12;11483:128;11548:20;;11577:28;11548:20;11577:28;:::i;11616:2266::-;11690:5;11743:3;11736:4;11728:6;11724:17;11720:27;11710:55;;11761:1;11758;11751:12;11710:55;11785:98;11801:81;11874:6;11861:20;11801:81;:::i;11785:98::-;11929:20;;11917:33;;;11975:4;11966:14;;;;11905:3;12023:1;12019:28;12007:41;;12003:52;12067:15;;;12064:35;;;12095:1;12092;12085:12;12064:35;12131:4;12123:6;12119:17;12145:1708;12161:6;12156:3;12153:15;12145:1708;;;12227:18;12283:2;12277:3;12264:17;12261:25;12258:45;;;12299:1;12296;12289:12;12258:45;12338:17;;12326:30;;12404:4;12380:12;;;-1:-1:-1;;12376:26:37;12372:37;12369:57;;;12422:1;12419;12412:12;12369:57;12452:22;;:::i;:::-;12501:46;12541:4;12537:2;12533:13;12501:46;:::i;:::-;12494:5;12487:61;12598:2;12594;12590:11;12577:25;12631:2;12621:8;12618:16;12615:36;;;12647:1;12644;12637:12;12615:36;12674:17;;12726:2;12718:11;;12714:21;-1:-1:-1;12704:49:37;;12749:1;12746;12739:12;12704:49;12797:4;12793:2;12789:13;12776:27;12829:80;12845:63;12905:2;12845:63;:::i;12829:80::-;12953:17;;;13053:1;13049:10;;;;13041:19;;13062:2;13037:28;;13003:4;12992:16;;;13081:17;;;13078:37;;;13111:1;13108;13101:12;13078:37;13149:2;13145;13141:11;13165:284;13183:8;13176:5;13173:19;13165:284;;;13280:2;13272:5;13259:19;13256:27;13253:47;;;13296:1;13293;13286:12;13253:47;13331:61;13388:3;13383:2;13374:5;13361:19;13357:2;13353:28;13349:37;13331:61;:::i;:::-;13317:76;;13430:4;13419:16;;;;13204;13165:284;;;-1:-1:-1;13480:4:37;13469:16;;13462:31;-1:-1:-1;;;13543:2:37;13535:11;;13522:25;13563:16;;;13560:36;;;13592:1;13589;13582:12;13560:36;13632:78;13706:3;13699:4;13688:8;13684:2;13680:17;13676:28;13632:78;:::i;:::-;13627:2;13620:5;13616:14;13609:102;;13747:30;13771:4;13767:2;13763:13;13747:30;:::i;:::-;13742:2;13731:14;;13724:54;13791:18;;-1:-1:-1;;13838:4:37;13829:14;;;;12178;12145:1708;;;-1:-1:-1;13871:5:37;;11616:2266;-1:-1:-1;;;;;11616:2266:37:o;13887:1276::-;14109:6;14117;14125;14133;14141;14149;14157;14210:3;14198:9;14189:7;14185:23;14181:33;14178:53;;;14227:1;14224;14217:12;14178:53;14267:9;14254:23;14296:18;14337:2;14329:6;14326:14;14323:34;;;14353:1;14350;14343:12;14323:34;14376:50;14418:7;14409:6;14398:9;14394:22;14376:50;:::i;:::-;14366:60;;14445:38;14479:2;14468:9;14464:18;14445:38;:::i;:::-;14435:48;;14502:45;14543:2;14532:9;14528:18;14502:45;:::i;:::-;14492:55;;14600:2;14589:9;14585:18;14572:32;14556:48;;14629:2;14619:8;14616:16;14613:36;;;14645:1;14642;14635:12;14613:36;14668:52;14712:7;14701:8;14690:9;14686:24;14668:52;:::i;:::-;14658:62;;14773:3;14762:9;14758:19;14745:33;14729:49;;14803:2;14793:8;14790:16;14787:36;;;14819:1;14816;14809:12;14787:36;14842:52;14886:7;14875:8;14864:9;14860:24;14842:52;:::i;:::-;14832:62;;14913:39;14947:3;14936:9;14932:19;14913:39;:::i;:::-;14903:49;;15005:3;14994:9;14990:19;14977:33;14961:49;;15035:2;15025:8;15022:16;15019:36;;;15051:1;15048;15041:12;15019:36;;15074:83;15149:7;15138:8;15127:9;15123:24;15074:83;:::i;:::-;15064:93;;;13887:1276;;;;;;;;;;:::o;15168:186::-;15227:6;15280:2;15268:9;15259:7;15255:23;15251:32;15248:52;;;15296:1;15293;15286:12;15248:52;15319:29;15338:9;15319:29;:::i;15359:437::-;15438:1;15434:12;;;;15481;;;15502:61;;15556:4;15548:6;15544:17;15534:27;;15502:61;15609:2;15601:6;15598:14;15578:18;15575:38;15572:218;;-1:-1:-1;;;15643:1:37;15636:88;15747:4;15744:1;15737:15;15775:4;15772:1;15765:15;15572:218;;15359:437;;;:::o;15801:289::-;15932:3;15970:6;15964:13;15986:66;16045:6;16040:3;16033:4;16025:6;16021:17;15986:66;:::i;:::-;16068:16;;;;;15801:289;-1:-1:-1;;15801:289:37:o;16095:220::-;16244:2;16233:9;16226:21;16207:4;16264:45;16305:2;16294:9;16290:18;16282:6;16264:45;:::i;17567:184::-;-1:-1:-1;;;17616:1:37;17609:88;17716:4;17713:1;17706:15;17740:4;17737:1;17730:15;17756:128;17823:9;;;17844:11;;;17841:37;;;17858:18;;:::i;18191:1176::-;18259:3;18297:5;18291:12;18324:6;18319:3;18312:19;18350:4;18391:2;18386:3;18382:12;18416:11;18443;18436:18;;18493:6;18490:1;18486:14;18479:5;18475:26;18463:38;;18535:2;18528:5;18524:14;18556:1;18577;18587:754;18603:6;18598:3;18595:15;18587:754;;;18668:16;;;18656:29;;18708:13;;18780:9;;18802:22;;;18888:11;;;;18846:13;;;;18923:1;18937:298;18953:8;18948:3;18945:17;18937:298;;;19032:8;19026:15;19075:1;19071:2;19068:9;19058:43;;19081:18;;:::i;:::-;19118:17;;19204;;;;19161:14;;;;18981:1;18972:11;18937:298;;;-1:-1:-1;;19319:12:37;;;;19256:5;-1:-1:-1;;19284:15:37;;;;18629:1;18620:11;18587:754;;;-1:-1:-1;19357:4:37;;18191:1176;-1:-1:-1;;;;;;;;18191:1176:37:o;19372:2845::-;19870:3;19859:9;19852:22;19833:4;19897:46;19938:3;19927:9;19923:19;19915:6;19897:46;:::i;:::-;19962:2;-1:-1:-1;;;;;20073:2:37;20065:6;20061:15;20056:2;20045:9;20041:18;20034:43;20096:2;20107:53;20156:2;20145:9;20141:18;20133:6;20107:53;:::i;:::-;20179:2;20229:9;20221:6;20217:22;20212:2;20201:9;20197:18;20190:50;20263:33;20289:6;20281;20263:33;:::i;:::-;20249:47;;20315:3;20366:9;20358:6;20354:22;20349:2;20338:9;20334:18;20327:50;20400:33;20426:6;20418;20400:33;:::i;:::-;20386:47;;20452:3;20503:2;20495:6;20491:15;20486:2;20475:9;20471:18;20464:43;20556:9;20548:6;20544:22;20538:3;20527:9;20523:19;20516:51;20587:6;20576:17;;20622:6;20616:13;20653:6;20645;20638:22;20688:2;20680:6;20676:15;20669:22;;20747:2;20737:6;20734:1;20730:14;20722:6;20718:27;20714:36;20785:2;20777:6;20773:15;20806:1;20816:1372;20830:6;20827:1;20824:13;20816:1372;;;20920:2;20916:7;20907:6;20899;20895:19;20891:33;20886:3;20879:46;20954:6;20948:13;21000:2;20992:6;20988:15;21016:50;21059:6;21054:2;21048:9;21016:50;:::i;:::-;21105:11;;;21099:18;21137:15;;;21130:27;;;21218:19;;21250:24;;;;21358:1;21354:16;;;21342:29;;21338:38;;;21405:21;;;;21296:15;;;;21450:1;21464:297;21480:8;21475:3;21472:17;21464:297;;;21586:3;21582:8;21573:6;21565;21561:19;21557:34;21550:5;21543:49;21619:42;21654:6;21643:8;21637:15;21619:42;:::i;:::-;21609:52;-1:-1:-1;21690:17:37;;;;21733:14;;;;21508:1;21499:11;21464:297;;;21468:3;;;;21810:2;21806;21802:11;21796:18;21863:6;21855;21851:19;21846:2;21838:6;21834:15;21827:44;21898:67;21958:6;21942:14;21898:67;:::i;:::-;22006:11;;;22000:18;3885:13;;3878:21;22063:15;;;3866:34;22000:18;21884:81;-1:-1:-1;22031:48:37;;-1:-1:-1;3815:91:37;22031:48;22166:12;;;;22102:6;-1:-1:-1;;22131:15:37;;;;20852:1;20845:9;20816:1372;;;20820:3;;22205:6;22197:14;;;;;;;;;;;19372:2845;;;;;;;;;;:::o;22222:245::-;22289:6;22342:2;22330:9;22321:7;22317:23;22313:32;22310:52;;;22358:1;22355;22348:12;22310:52;22390:9;22384:16;22409:28;22431:5;22409:28;:::i;23182:291::-;23359:2;23348:9;23341:21;23322:4;23379:45;23420:2;23409:9;23405:18;23397:6;23379:45;:::i;:::-;23371:53;;23460:6;23455:2;23444:9;23440:18;23433:34;23182:291;;;;;:::o;23478:125::-;23543:9;;;23564:10;;;23561:36;;;23577:18;;:::i;24163:545::-;24265:2;24260:3;24257:11;24254:448;;;24301:1;24326:5;24322:2;24315:17;24371:4;24367:2;24357:19;24441:2;24429:10;24425:19;24422:1;24418:27;24412:4;24408:38;24477:4;24465:10;24462:20;24459:47;;;-1:-1:-1;24500:4:37;24459:47;24555:2;24550:3;24546:12;24543:1;24539:20;24533:4;24529:31;24519:41;;24610:82;24628:2;24621:5;24618:13;24610:82;;;24673:17;;;24654:1;24643:13;24610:82;;;24614:3;;;24163:545;;;:::o;24884:1352::-;25010:3;25004:10;25037:18;25029:6;25026:30;25023:56;;;25059:18;;:::i;:::-;25088:97;25178:6;25138:38;25170:4;25164:11;25138:38;:::i;:::-;25132:4;25088:97;:::i;:::-;25240:4;;25304:2;25293:14;;25321:1;25316:663;;;;26023:1;26040:6;26037:89;;;-1:-1:-1;26092:19:37;;;26086:26;26037:89;-1:-1:-1;;24841:1:37;24837:11;;;24833:24;24829:29;24819:40;24865:1;24861:11;;;24816:57;26139:81;;25286:944;;25316:663;24110:1;24103:14;;;24147:4;24134:18;;-1:-1:-1;;25352:20:37;;;25470:236;25484:7;25481:1;25478:14;25470:236;;;25573:19;;;25567:26;25552:42;;25665:27;;;;25633:1;25621:14;;;;25500:19;;25470:236;;;25474:3;25734:6;25725:7;25722:19;25719:201;;;25795:19;;;25789:26;-1:-1:-1;;25878:1:37;25874:14;;;25890:3;25870:24;25866:37;25862:42;25847:58;25832:74;;25719:201;-1:-1:-1;;;;;25966:1:37;25950:14;;;25946:22;25933:36;;-1:-1:-1;24884:1352:37:o;26241:546::-;26487:3;26476:9;26469:22;26450:4;26508:46;26549:3;26538:9;26534:19;26526:6;26508:46;:::i;:::-;26500:54;;-1:-1:-1;;;;;26663:2:37;26655:6;26651:15;26646:2;26635:9;26631:18;26624:43;26676:53;26725:2;26714:9;26710:18;26702:6;26676:53;:::i;:::-;26777:2;26769:6;26765:15;26760:2;26749:9;26745:18;26738:43;;26241:546;;;;;;;:::o;26792:184::-;-1:-1:-1;;;26841:1:37;26834:88;26941:4;26938:1;26931:15;26965:4;26962:1;26955:15;26981:842;27109:3;27138:1;27171:6;27165:13;27201:36;27227:9;27201:36;:::i;:::-;27256:1;27273:18;;;27300:133;;;;27447:1;27442:356;;;;27266:532;;27300:133;-1:-1:-1;;27333:24:37;;27321:37;;27406:14;;27399:22;27387:35;;27378:45;;;-1:-1:-1;27300:133:37;;27442:356;27473:6;27470:1;27463:17;27503:4;27548:2;27545:1;27535:16;27573:1;27587:165;27601:6;27598:1;27595:13;27587:165;;;27679:14;;27666:11;;;27659:35;27722:16;;;;27616:10;;27587:165;;;27591:3;;;27781:6;27776:3;27772:16;27765:23;;27266:532;-1:-1:-1;27814:3:37;;26981:842;-1:-1:-1;;;;;;26981:842:37:o;28120:135::-;28159:3;28180:17;;;28177:43;;28200:18;;:::i;:::-;-1:-1:-1;28247:1:37;28236:13;;28120:135::o;28260:1435::-;28379:3;28373:4;28370:13;28367:26;;28386:5;;28260:1435::o;28367:26::-;28416:37;28448:3;28442:10;28416:37;:::i;:::-;28476:18;28468:6;28465:30;28462:56;;;28498:18;;:::i;:::-;28527:97;28617:6;28577:38;28609:4;28603:11;28577:38;:::i;28527:97::-;28650:1;28678:2;28670:6;28667:14;28695:1;28690:748;;;;29482:1;29499:6;29496:89;;;-1:-1:-1;29551:19:37;;;29545:26;29496:89;-1:-1:-1;;24841:1:37;24837:11;;;24833:24;24829:29;24819:40;24865:1;24861:11;;;24816:57;29598:81;;28660:1029;;28690:748;24110:1;24103:14;;;24147:4;24134:18;;-1:-1:-1;;28726:20:37;;;24110:1;24103:14;;;24147:4;24134:18;;28890:9;28912:251;28926:7;28923:1;28920:14;28912:251;;;29008:21;;;29002:28;28987:44;;29058:1;29131:18;;;;29086:15;;;;28949:4;28942:12;28912:251;;;28916:3;29191:6;29182:7;29179:19;29176:203;;;29252:21;;;29246:28;-1:-1:-1;;29337:1:37;29333:14;;;29349:3;29329:24;29325:37;29321:42;29306:58;29291:74;;29176:203;;;;29425:1;29416:6;29413:1;29409:14;29405:22;29399:4;29392:36;28660:1029;;;;28260:1435;;:::o;29700:184::-;-1:-1:-1;;;29749:1:37;29742:88;29849:4;29846:1;29839:15;29873:4;29870:1;29863:15;30497:492;30672:3;30710:6;30704:13;30726:66;30785:6;30780:3;30773:4;30765:6;30761:17;30726:66;:::i;:::-;30855:13;;30814:16;;;;30877:70;30855:13;30814:16;30924:4;30912:17;;30877:70;:::i;:::-;30963:20;;30497:492;-1:-1:-1;;;;30497:492:37:o","linkReferences":{}},"methodIdentifiers":{"assign(string,address,uint256)":"4534ba17","bridge_address()":"1255c189","burn(string,uint256)":"b48272cc","getAllAssetsIDs()":"5137b8a7","getToken(string)":"c1733f68","lock(string,uint256)":"e1efb596","mint(string,uint256)":"056b01ce","owner()":"8da5cb5b","renounceOwnership()":"715018a6","tokens(string)":"04c2320b","tokensInteractions(string,uint8)":"ea8f547f","transferOwnership(address)":"f2fde38b","unlock(string,uint256)":"d9cf884c","unwrap(string)":"a1bc17c5","wrap(string,address,uint8,string,string,address)":"6a0876e0","wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])":"f272660b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsuficientAmountLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenAlreadyWrapped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotUnlocked\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver_account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Assign\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Unlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"receiver_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"assign\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"getToken\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Token\",\"name\":\"token\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"tokens\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"enum InteractionType\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"tokensInteractions\",\"outputs\":[{\"internalType\":\"enum InteractionType\",\"name\":\"interactionType\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"wrapSuccess\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum InteractionType\",\"name\":\"interactionType\",\"type\":\"uint8\"},{\"internalType\":\"string[]\",\"name\":\"functionsSignature\",\"type\":\"string[]\"},{\"internalType\":\"enum VarType[][]\",\"name\":\"variables\",\"type\":\"uint8[][]\"},{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"}],\"internalType\":\"struct InteractionSignature[]\",\"name\":\"interactions\",\"type\":\"tuple[]\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"wrapSuccess\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"assign(string,address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be assigned.\",\"receiver_account\":\"The address of the receiver account.\",\"tokenId\":\"The unique identifier of the token.\"}},\"burn(string,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be burned.\",\"tokenId\":\"The unique identifier of the token.\"}},\"constructor\":{\"params\":{\"_bridge_address\":\"The address of the bridge contract. This needs to be changed, maybe the owner should not be a bridge but other account.\"}},\"getAllAssetsIDs()\":{\"returns\":{\"_0\":\"An array of token IDs.\"}},\"getToken(string)\":{\"params\":{\"tokenId\":\"The unique identifier of the token.\"},\"returns\":{\"token\":\"the token with the given token ID.\"}},\"lock(string,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be locked.\",\"tokenId\":\"The unique identifier of the token.\"}},\"mint(string,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be minted.\",\"tokenId\":\"The unique identifier of the token.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unlock(string,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to be unlocked.\",\"tokenId\":\"The unique identifier of the token.\"}},\"unwrap(string)\":{\"params\":{\"tokenId\":\"The unique identifier of the token.\"}},\"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])\":{\"params\":{\"contractAddress\":\"The address of the token contract.\",\"interactions\":\"The interactions to be used for the token.\",\"owner\":\"The owner of the token.\",\"tokenId\":\"The unique identifier of the token.\",\"tokenType\":\"The type of the token.\"}}},\"title\":\"SATPWrapper This contract serves as a wrapper for the Secure Asset Transfer Protocol (SATP) using the Hermes plugin. It provides functionalities to interact with the SATP protocol within the Cactus framework. This contract provides a semantic layer to facilitate interactions with other contracts.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"assign(string,address,uint256)\":{\"notice\":\"Assigns a given amount of tokens with the given token ID to a receiver account. This method calls the assign function of the token contract.\"},\"bridge_address()\":{\"notice\":\"The address of the bridge contract. TODO: Change this to the Token Struct\"},\"burn(string,uint256)\":{\"notice\":\"Burns a given amount of tokens with the given token ID. This method calls the burn function of the token contract.\"},\"constructor\":{\"notice\":\"Constructor for the SATPWrapperContract.\"},\"getAllAssetsIDs()\":{\"notice\":\"Gets all the token IDs.\"},\"getToken(string)\":{\"notice\":\"Gets a token with the given token ID.\"},\"lock(string,uint256)\":{\"notice\":\"Locks a given amount of tokens with the given token ID. This method calls the lock function of the token contract.\"},\"mint(string,uint256)\":{\"notice\":\"Mints a given amount of tokens with the given token ID. This method calls the mint function of the token contract.\"},\"tokens(string)\":{\"notice\":\"Maping of token IDs to Token structs.\"},\"tokensInteractions(string,uint8)\":{\"notice\":\"Mapping of token IDs to InteractionSignature structs.\"},\"unlock(string,uint256)\":{\"notice\":\"Unlocks a given amount of tokens with the given token ID. This method calls the unlock function of the token contract.\"},\"unwrap(string)\":{\"notice\":\"Unwraps a token with the given token ID. This method deletes the token from the mapping and the array of token IDs. (Should they be deleted from the array?)\"},\"wrap(string,address,uint8,string,string,address)\":{\"notice\":\"Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. TODO: Implement that functionality for standard tokens. \"},\"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])\":{\"notice\":\"Wraps a token with the given parameters. Given interactions will call a method that creates the ontology of the token so the other methods (eg. lock, unlock, mint, burn, assign) can interact with the token. This interactions should be given by the bridge and be througly tested and checked before being used, as they can be used to call any function in the token contract.\"}},\"notice\":\"Ensure that the contract is deployed and configured correctly before interacting with it.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/main/solidity/contracts/SATPWrapperContract.sol\":\"SATPWrapperContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/main/solidity/contracts/SATPWrapperContract.sol\":{\"keccak256\":\"0x98c34a72b3ea7502b8c23d59379efbb38391e4da891941fead39025272f037d2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://9502f5d2d18c28b85e7f69b385197990d82d81161e9d0e827356f6b09b0b95a9\",\"dweb:/ipfs/QmQZuxgyPZnXRA4d47Z6LnPta2XcaxsnfoJtzRdge4XmDg\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_bridge_address","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"InsuficientAmountLocked"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenAlreadyWrapped"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenLocked"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotAvailable"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotLocked"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotUnlocked"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"address","name":"receiver_account","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Assign","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Lock","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Unlock","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true}],"type":"event","name":"Unwrap","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"string","name":"contractName","type":"string","indexed":false},{"internalType":"address","name":"contractAddress","type":"address","indexed":false},{"internalType":"enum TokenType","name":"tokenType","type":"uint8","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false}],"type":"event","name":"Wrap","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"address","name":"receiver_account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"assign","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge_address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"struct Token","name":"token","type":"tuple","components":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"tokens","outputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"enum InteractionType","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"tokensInteractions","outputs":[{"internalType":"enum InteractionType","name":"interactionType","type":"uint8"},{"internalType":"bool","name":"available","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"unwrap","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"bool","name":"wrapSuccess","type":"bool"}]},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct InteractionSignature[]","name":"interactions","type":"tuple[]","components":[{"internalType":"enum InteractionType","name":"interactionType","type":"uint8"},{"internalType":"string[]","name":"functionsSignature","type":"string[]"},{"internalType":"enum VarType[][]","name":"variables","type":"uint8[][]"},{"internalType":"bool","name":"available","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"bool","name":"wrapSuccess","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"assign(string,address,uint256)":{"params":{"amount":"The amount of tokens to be assigned.","receiver_account":"The address of the receiver account.","tokenId":"The unique identifier of the token."}},"burn(string,uint256)":{"params":{"amount":"The amount of tokens to be burned.","tokenId":"The unique identifier of the token."}},"constructor":{"params":{"_bridge_address":"The address of the bridge contract. This needs to be changed, maybe the owner should not be a bridge but other account."}},"getAllAssetsIDs()":{"returns":{"_0":"An array of token IDs."}},"getToken(string)":{"params":{"tokenId":"The unique identifier of the token."},"returns":{"token":"the token with the given token ID."}},"lock(string,uint256)":{"params":{"amount":"The amount of tokens to be locked.","tokenId":"The unique identifier of the token."}},"mint(string,uint256)":{"params":{"amount":"The amount of tokens to be minted.","tokenId":"The unique identifier of the token."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unlock(string,uint256)":{"params":{"amount":"The amount of tokens to be unlocked.","tokenId":"The unique identifier of the token."}},"unwrap(string)":{"params":{"tokenId":"The unique identifier of the token."}},"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])":{"params":{"contractAddress":"The address of the token contract.","interactions":"The interactions to be used for the token.","owner":"The owner of the token.","tokenId":"The unique identifier of the token.","tokenType":"The type of the token."}}},"version":1},"userdoc":{"kind":"user","methods":{"assign(string,address,uint256)":{"notice":"Assigns a given amount of tokens with the given token ID to a receiver account. This method calls the assign function of the token contract."},"bridge_address()":{"notice":"The address of the bridge contract. TODO: Change this to the Token Struct"},"burn(string,uint256)":{"notice":"Burns a given amount of tokens with the given token ID. This method calls the burn function of the token contract."},"constructor":{"notice":"Constructor for the SATPWrapperContract."},"getAllAssetsIDs()":{"notice":"Gets all the token IDs."},"getToken(string)":{"notice":"Gets a token with the given token ID."},"lock(string,uint256)":{"notice":"Locks a given amount of tokens with the given token ID. This method calls the lock function of the token contract."},"mint(string,uint256)":{"notice":"Mints a given amount of tokens with the given token ID. This method calls the mint function of the token contract."},"tokens(string)":{"notice":"Maping of token IDs to Token structs."},"tokensInteractions(string,uint8)":{"notice":"Mapping of token IDs to InteractionSignature structs."},"unlock(string,uint256)":{"notice":"Unlocks a given amount of tokens with the given token ID. This method calls the unlock function of the token contract."},"unwrap(string)":{"notice":"Unwraps a token with the given token ID. This method deletes the token from the mapping and the array of token IDs. (Should they be deleted from the array?)"},"wrap(string,address,uint8,string,string,address)":{"notice":"Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. TODO: Implement that functionality for standard tokens. "},"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[])":{"notice":"Wraps a token with the given parameters. Given interactions will call a method that creates the ontology of the token so the other methods (eg. lock, unlock, mint, burn, assign) can interact with the token. This interactions should be given by the bridge and be througly tested and checked before being used, as they can be used to call any function in the token contract."}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/main/solidity/contracts/SATPWrapperContract.sol":"SATPWrapperContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/main/solidity/contracts/SATPWrapperContract.sol":{"keccak256":"0x98c34a72b3ea7502b8c23d59379efbb38391e4da891941fead39025272f037d2","urls":["bzz-raw://9502f5d2d18c28b85e7f69b385197990d82d81161e9d0e827356f6b09b0b95a9","dweb:/ipfs/QmQZuxgyPZnXRA4d47Z6LnPta2XcaxsnfoJtzRdge4XmDg"],"license":"GPL-3.0"}},"version":1},"id":31} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_bridge_address","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"NFT_IDs","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"assign","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"receiver_account","type":"address","internalType":"address"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"bridge_address","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"getToken","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"token","type":"tuple","internalType":"struct Token","components":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}]}],"stateMutability":"view"},{"type":"function","name":"getToken","inputs":[{"name":"tokenId","type":"string","internalType":"string"}],"outputs":[{"name":"token","type":"tuple","internalType":"struct Token","components":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}]}],"stateMutability":"view"},{"type":"function","name":"lock","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokens","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}],"stateMutability":"view"},{"type":"function","name":"tokensInteractions","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint8","internalType":"enum InteractionType"}],"outputs":[{"name":"interactionType","type":"uint8","internalType":"enum InteractionType"},{"name":"available","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"assetAttribute","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"unwrap","inputs":[{"name":"tokenId","type":"string","internalType":"string"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"interactions","type":"tuple[]","internalType":"struct InteractionSignature[]","components":[{"name":"interactionType","type":"uint8","internalType":"enum InteractionType"},{"name":"functionsSignature","type":"string[]","internalType":"string[]"},{"name":"variables","type":"uint8[][]","internalType":"enum AssetParameterIdentifier[][]"},{"name":"available","type":"bool","internalType":"bool"}]},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}],"outputs":[{"name":"wrapSuccess","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"wrap","inputs":[{"name":"contractName","type":"string","internalType":"string"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenType","type":"uint8","internalType":"enum TokenType"},{"name":"tokenId","type":"string","internalType":"string"},{"name":"referenceId","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"},{"name":"ercTokenStandard","type":"uint8","internalType":"enum ERCTokenStandard"}],"outputs":[{"name":"wrapSuccess","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approve","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"spender","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Assign","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"receiver_account","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false},{"type":"event","name":"Lock","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unlock","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unwrap","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Wrap","inputs":[{"name":"tokenId","type":"string","indexed":true,"internalType":"string"},{"name":"contractName","type":"string","indexed":false,"internalType":"string"},{"name":"contractAddress","type":"address","indexed":false,"internalType":"address"},{"name":"tokenType","type":"uint8","indexed":false,"internalType":"enum TokenType"},{"name":"owner","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InsuficientAmountLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"TokenAlreadyWrapped","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenLocked","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotAvailable","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]},{"type":"error","name":"TokenNotSupported","inputs":[{"name":"tokenId","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b50604051620046fa380380620046fa8339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600580546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b6145d280620001286000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063715018a6116100cd578063d9cf884c11610081578063e1efb59611610066578063e1efb59614610350578063ea8f547f14610363578063f2fde38b146103ba57600080fd5b8063d9cf884c1461032a578063dbf156391461033d57600080fd5b8063a1bc17c5116100b2578063a1bc17c5146102f1578063b48272cc14610304578063c1733f681461031757600080fd5b8063715018a6146102d65780638da5cb5b146102e057600080fd5b806319d09bc911610124578063433f60ac11610109578063433f60ac1461029b5780634534ba17146102ae5780635137b8a7146102c157600080fd5b806319d09bc91461023d578063324980b51461027b57600080fd5b806304c2320b14610156578063056b01ce146101865780631255c189146101a9578063150b7a02146101d4575b600080fd5b61016961016436600461370f565b6103cd565b60405161017d9897969594939291906137ce565b60405180910390f35b610199610194366004613853565b6105d1565b604051901515815260200161017d565b6005546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b61020c6101e23660046138af565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017d565b61019961024b366004613853565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b61028e610289366004613853565b61092b565b60405161017d919061394a565b6101996102a9366004613cf0565b61114d565b6101996102bc366004613de0565b6114c0565b6102c961191b565b60405161017d9190613e8c565b6102de6119f4565b005b6000546001600160a01b03166101bc565b6101996102ff36600461370f565b611a08565b610199610312366004613853565b611c59565b61028e61032536600461370f565b61209c565b610199610338366004613853565b6120eb565b61019961034b366004613e9f565b612568565b61019961035e366004613853565b612650565b6103ac610371366004613f6a565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161017d929190613fc8565b6102de6103c8366004613fe5565b612985565b80516020818301810180516001825292820191909301209152805481906103f390614000565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90614000565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161049f90614000565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90614000565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509080600301805461052d90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461055990614000565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050506004830154600584015460069094015492936001600160a01b039091169290915060ff1688565b60006105db6129dc565b60006001600160a01b03166001846040516105f6919061403a565b908152604051908190036020019020600101546001600160a01b03160361063b578260405163c0bab25f60e01b81526004016106329190614056565b60405180910390fd5b6000821161068b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b600060018460405161069d919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156106d1576106d1613794565b03610757576106e284600085612a22565b61072e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b8260018560405161073f919061403a565b908152604051908190036020019020600501556108d6565b600281600281111561076b5761076b613794565b036108bb57600384604051610780919061403a565b90815260408051602092819003830190206000868152925290205460ff16156107eb5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220616c7265616479206578697374736044820152606401610632565b6107f784600085612a22565b6108435760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051610854919061403a565b90815260200160405180910390206005016000828254610874919061407f565b92505081905550600160038560405161088d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556108d6565b8360405163c16fc3ad60e01b81526004016106329190614056565b836040516108e4919061403a565b604051908190038120848252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a260019150505b92915050565b61096f60408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b6000600184604051610981919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156109b5576109b5613794565b03610c3b576001846040516109ca919061403a565b9081526020016040518091039020604051806101000160405290816000820180546109f490614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090614000565b8015610a6d5780601f10610a4257610100808354040283529160200191610a6d565b820191906000526020600020905b815481529060010190602001808311610a5057829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166002811115610aaa57610aaa613794565b6002811115610abb57610abb613794565b8152602001600282018054610acf90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90614000565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b50505050508152602001600382018054610b6190614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90614000565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260058201546040820152600682015460609091019060ff166003811115610c1e57610c1e613794565b6003811115610c2f57610c2f613794565b81525050915050610925565b6002816002811115610c4f57610c4f613794565b0361114657600384604051610c64919061403a565b90815260408051602092819003830190206000868152925290205460ff1615610ef757604051806101000160405280600186604051610ca3919061403a565b9081526040519081900360200190208054610cbd90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990614000565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050508152602001600186604051610d50919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051610d93919061403a565b9081526040519081900360200190206001015460ff600160a01b909104166002811115610dc257610dc2613794565b8152602001858152602001600186604051610ddd919061403a565b90815260200160405180910390206003018054610df990614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2590614000565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b50505050508152602001600186604051610e8c919061403a565b9081526040805160209281900383019020600401546001600160a01b031683529082018690528051910190600190610ec590889061403a565b9081526040519081900360200190206006015460ff166003811115610eec57610eec613794565b815250915050610925565b604051806101000160405280600186604051610f13919061403a565b9081526040519081900360200190208054610f2d90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990614000565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b50505050508152602001600186604051610fc0919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051611003919061403a565b9081526040519081900360200190206001015460ff600160a01b90910416600281111561103257611032613794565b815260200185815260200160018660405161104d919061403a565b9081526020016040518091039020600301805461106990614000565b80601f016020809104026020016040519081016040528092919081815260200182805461109590614000565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081526020016001866040516110fc919061403a565b908152602001604051809103902060040160009054906101000a90046001600160a01b03166001600160a01b0316815260200160008152602001600186604051610ec5919061403a565b5092915050565b60006111576129dc565b60006001600160a01b0316600187604051611172919061403a565b908152604051908190036020019020600101546001600160a01b0316146111c757856040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016106329190614056565b6111d18684612a39565b6002866040516111e1919061403a565b9081526040805160209281900383019020600360008181529190935220015460ff161561128557611213866003612b59565b6112855760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e000000006064820152608401610632565b6040518061010001604052808a8152602001896001600160a01b031681526020018860028111156112b8576112b8613794565b8152602001878152602001868152602001856001600160a01b03168152602001600081526020018360038111156112f1576112f1613794565b815250600187604051611304919061403a565b9081526040519081900360200190208151819061132190826140e0565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600281111561138a5761138a613794565b0217905550606082015160028201906113a390826140e0565b50608082015160038201906113b890826140e0565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c0820151600582015560e082015160068201805460ff1916600183600381111561141957611419613794565b021790555050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905061145d87826140e0565b508560405161146c919061403a565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8a8a8a886040516114a994939291906141a0565b60405180910390a250600198975050505050505050565b60006114ca6129dc565b60006001600160a01b03166001856040516114e5919061403a565b908152604051908190036020019020600101546001600160a01b031603611521578360405163c0bab25f60e01b81526004016106329190614056565b600082116115715760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600185604051611583919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156115b7576115b7613794565b036116c257826001866040516115cd919061403a565b908152602001604051809103902060050154101561162d5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b65646044820152606401610632565b61163a8560028587612b6f565b6116865760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c656400000000000000006044820152606401610632565b82600186604051611697919061403a565b908152602001604051809103902060050160008282546116b791906141e4565b909155506118b99050565b60028160028111156116d6576116d6613794565b0361189e5760006001866040516116ed919061403a565b9081526020016040518091039020600501541161174c5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b65646044820152606401610632565b60038560405161175c919061403a565b908152604080519182900360209081019092206000868152925290205460ff1615156001146117cd5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b6117da8560028587612b6f565b6118265760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018086604051611837919061403a565b9081526020016040518091039020600501600082825461185791906141e4565b925050819055506000600386604051611870919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556118b9565b8460405163c16fc3ad60e01b81526004016106329190614056565b846040516118c7919061403a565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a2506001949350505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156119eb57838290600052602060002001805461195e90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461198a90614000565b80156119d75780601f106119ac576101008083540402835291602001916119d7565b820191906000526020600020905b8154815290600101906020018083116119ba57829003601f168201915b50505050508152602001906001019061193f565b50505050905090565b6119fc6129dc565b611a066000612e8b565b565b6000611a126129dc565b60006001600160a01b0316600183604051611a2d919061403a565b908152604051908190036020019020600101546001600160a01b031603611a69578160405163c0bab25f60e01b81526004016106329190614056565b6000600183604051611a7b919061403a565b9081526020016040518091039020600501541115611ac757816040517fb7d2c10a0000000000000000000000000000000000000000000000000000000081526004016106329190614056565b611b79600183604051611ada919061403a565b90815260200160405180910390206002018054611af690614000565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290614000565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050612ee8565b600182604051611b89919061403a565b9081526040519081900360200190206000611ba48282613422565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055611bd2600283016000613422565b611be0600383016000613422565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820155600601805460ff19169055604051611c2090839061403a565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000611c636129dc565b60006001600160a01b0316600184604051611c7e919061403a565b908152604051908190036020019020600101546001600160a01b031603611cba578260405163c0bab25f60e01b81526004016106329190614056565b60008211611d0a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051611d1c919061403a565b90815260405190819003602001902060019081015460ff600160a01b909104169150816002811115611d5057611d50613794565b03611e5a5782600185604051611d66919061403a565b9081526020016040518091039020600501541015611dc65760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b656400006044820152606401610632565b611dd284600185612a22565b611e1e5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b82600185604051611e2f919061403a565b90815260200160405180910390206005016000828254611e4f91906141e4565b909155506120579050565b6002816002811115611e6e57611e6e613794565b036108bb576000600185604051611e85919061403a565b90815260200160405180910390206005015411611f0a5760405162461bcd60e51b815260206004820152602360248201527f547279696e6720746f206275726e20616e20756e6163636f756e74656420417360448201527f73657400000000000000000000000000000000000000000000000000000000006064820152608401610632565b600384604051611f1a919061403a565b908152604080519182900360209081019092206000868152925290205460ff161515600114611f8b5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b611f9784600185612a22565b611fe35760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051611ff4919061403a565b9081526020016040518091039020600501600082825461201491906141e4565b92505081905550600060038560405161202d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612065919061403a565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee9990602001610917565b6120e060408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b61092582600061092b565b60006120f56129dc565b60006001600160a01b0316600184604051612110919061403a565b908152604051908190036020019020600101546001600160a01b03160361214c578260405163c0bab25f60e01b81526004016106329190614056565b6000821161219c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b60006001846040516121ae919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156121e2576121e2613794565b0361230057826001856040516121f8919061403a565b90815260200160405180910390206005015410156122465783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016106329291906141f7565b61225284600585612a22565b6122c45760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610632565b826001856040516122d5919061403a565b908152602001604051809103902060050160008282546122f591906141e4565b909155506125239050565b600281600281111561231457612314613794565b036108bb57600384604051612329919061403a565b908152604080519182900360209081019092206000868152925290205460ff16151560011461239a5760405162461bcd60e51b815260206004820152601060248201527f546f6b656e204e6f74204c6f636b6564000000000000000000000000000000006044820152606401610632565b60006001856040516123ac919061403a565b908152602001604051809103902060050154116124315760405162461bcd60e51b815260206004820152603360248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206163636f756e74656420666f72000000000000000000000000006064820152608401610632565b61243d84600585612a22565b6124af5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610632565b600180856040516124c0919061403a565b908152602001604051809103902060050160008282546124e091906141e4565b9250508190555060006003856040516124f9919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612531919061403a565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001610917565b60006125726129dc565b3063433f60ac89898989898960006040519080825280602002602001820160405280156125dc57816020015b6125c96040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161259e5790505b508a6040518963ffffffff1660e01b8152600401612601989796959493929190614219565b6020604051808303816000875af1158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906143ba565b98975050505050505050565b600061265a6129dc565b60006001600160a01b0316600184604051612675919061403a565b908152604051908190036020019020600101546001600160a01b0316036126b1578260405163c0bab25f60e01b81526004016106329190614056565b600082116127015760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051612713919061403a565b90815260405190819003602001902060019081015460ff600160a01b90910416915081600281111561274757612747613794565b036127e05761275884600485612a22565b6127a45760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b826001856040516127b5919061403a565b908152602001604051809103902060050160008282546127d5919061407f565b909155506129409050565b60028160028111156127f4576127f4613794565b036108bb57600384604051612809919061403a565b90815260408051602092819003830190206000868152925290205460ff16156128745760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20416c7265616479204c6f636b65640000000000000000000000006044820152606401610632565b61288084600485612a22565b6128cc5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b600180856040516128dd919061403a565b908152602001604051809103902060050160008282546128fd919061407f565b925050819055506001600385604051612916919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b8360405161294e919061403a565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001610917565b61298d6129dc565b6001600160a01b0381166129d0576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610632565b6129d981612e8b565b50565b6000546001600160a01b03163314611a06576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610632565b6000612a318484846000612b6f565b949350505050565b60005b8151811015612b5457818181518110612a5757612a576143d7565b6020026020010151600284604051612a6f919061403a565b90815260200160405180910390206000848481518110612a9157612a916143d7565b6020026020010151600001516006811115612aae57612aae613794565b6006811115612abf57612abf613794565b8152602081019190915260400160002081518154829060ff19166001836006811115612aed57612aed613794565b02179055506020828101518051612b0a926001850192019061345c565b5060408201518051612b269160028401916020909101906134b2565b50606091909101516003909101805460ff191691151591909117905580612b4c816143ed565b915050612a3c565b505050565b6000612b688383600080612b6f565b9392505050565b6000600285604051612b81919061403a565b90815260200160405180910390206000856006811115612ba357612ba3613794565b6006811115612bb457612bb4613794565b815260208101919091526040016000206003015460ff16612bd757506000612a31565b60005b600286604051612bea919061403a565b90815260200160405180910390206000866006811115612c0c57612c0c613794565b6006811115612c1d57612c1d613794565b8152602081019190915260400160002060010154811015612e7f576000600287604051612c4a919061403a565b90815260200160405180910390206000876006811115612c6c57612c6c613794565b6006811115612c7d57612c7d613794565b81526020019081526020016000206001018281548110612c9f57612c9f6143d7565b90600052602060002001604051602001612cb99190614406565b6040516020818303038152906040528051906020012090506000612dd582612dd060028b604051612cea919061403a565b908152602001604051809103902060008b6006811115612d0c57612d0c613794565b6006811115612d1d57612d1d613794565b81526020019081526020016000206002018681548110612d3f57612d3f6143d7565b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015612dc357602002820191906000526020600020906000905b82829054906101000a900460ff166007811115612da157612da1613794565b815260206001928301818104948501949093039092029101808411612d825790505b50505050508b898b613046565b613363565b90506000600189604051612de9919061403a565b908152604051908190036020018120600101546001600160a01b031690612e1190849061403a565b6000604051808303816000865af19150503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5050905080612e69576000945050505050612a31565b5050508080612e77906143ed565b915050612bda565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60045481101561304257612fa460048281548110612f0b57612f0b6143d7565b906000526020600020018054612f2090614000565b80601f0160208091040260200160405190810160405280929190818152602001828054612f4c90614000565b8015612f995780601f10612f6e57610100808354040283529160200191612f99565b820191906000526020600020905b815481529060010190602001808311612f7c57829003601f168201915b5050505050836133fd565b156130305760048054612fb9906001906141e4565b81548110612fc957612fc96143d7565b9060005260206000200160048281548110612fe657612fe66143d7565b906000526020600020019081612ffc919061447c565b50600480548061300e5761300e614557565b60019003818190600052602060002001600061302a9190613422565b90555050565b8061303a816143ed565b915050612eeb565b5050565b60606000855167ffffffffffffffff8111156130645761306461362f565b60405190808252806020026020018201604052801561309757816020015b60608152602001906001900390816130825790505b50905060005b86518110156133595760058782815181106130ba576130ba6143d7565b602002602001015160078111156130d3576130d3613794565b036131155760408051306020820152015b604051602081830303815290604052828281518110613105576131056143d7565b6020026020010181905250613347565b6002878281518110613129576131296143d7565b6020026020010151600781111561314257613142613794565b0361315857856040516020016130e49190614056565b600487828151811061316c5761316c6143d7565b6020026020010151600781111561318557613185613794565b0361319b576040805160208101869052016130e4565b60038782815181106131af576131af6143d7565b602002602001015160078111156131c8576131c8613794565b03613206576001866040516131dd919061403a565b908152604080519182900360209081018320600401546001600160a01b031690830152016130e4565b600087828151811061321a5761321a6143d7565b6020026020010151600781111561323357613233613794565b0361327157600186604051613248919061403a565b908152604080519182900360209081018320600101546001600160a01b031690830152016130e4565b6006878281518110613285576132856143d7565b6020026020010151600781111561329e5761329e613794565b036132bc57604080516001600160a01b0387166020820152016130e4565b60078782815181106132d0576132d06143d7565b602002602001015160078111156132e9576132e9613794565b036132ff576040805160208101869052016130e4565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f72746564000000000000000000006044820152606401610632565b80613351816143ed565b91505061309d565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561114657818382815181106133c0576133c06143d7565b60200260200101516040516020016133d992919061456d565b604051602081830303815290604052915080806133f5906143ed565b9150506133a4565b600081518351148015612b685750508051602091820120825192909101919091201490565b50805461342e90614000565b6000825580601f1061343e575050565b601f0160209004906000526020600020908101906129d9919061350b565b8280548282559060005260206000209081019282156134a2579160200282015b828111156134a2578251829061349290826140e0565b509160200191906001019061347c565b506134ae929150613520565b5090565b8280548282559060005260206000209081019282156134ff579160200282015b828111156134ff57825180516134ef91849160209091019061353d565b50916020019190600101906134d2565b506134ae9291506135ed565b5b808211156134ae576000815560010161350c565b808211156134ae5760006135348282613422565b50600101613520565b82805482825590600052602060002090601f016020900481019282156135e15791602002820160005b838211156135b257835183826101000a81548160ff0219169083600781111561359157613591613794565b02179055509260200192600101602081600001049283019260010302613566565b80156135df5782816101000a81549060ff02191690556001016020816000010492830192600103026135b2565b505b506134ae92915061350b565b808211156134ae576000613601828261360a565b506001016135ed565b50805460008255601f0160209004906000526020600020908101906129d9919061350b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156136685761366861362f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136975761369761362f565b604052919050565b600082601f8301126136b057600080fd5b813567ffffffffffffffff8111156136ca576136ca61362f565b6136dd601f8201601f191660200161366e565b8181528460208386010111156136f257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561372157600080fd5b813567ffffffffffffffff81111561373857600080fd5b612a318482850161369f565b60005b8381101561375f578181015183820152602001613747565b50506000910152565b60008151808452613780816020860160208601613744565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106137ba576137ba613794565b9052565b600481106137ba576137ba613794565b60006101008083526137e28184018c613768565b90506001600160a01b03808b166020850152613801604085018b6137aa565b8382036060850152613813828a613768565b915083820360808501526138278289613768565b925080871660a085015250508360c083015261384660e08301846137be565b9998505050505050505050565b6000806040838503121561386657600080fd5b823567ffffffffffffffff81111561387d57600080fd5b6138898582860161369f565b95602094909401359450505050565b80356001600160a01b0381168114611c5457600080fd5b6000806000806000608086880312156138c757600080fd5b6138d086613898565b94506138de60208701613898565b935060408601359250606086013567ffffffffffffffff8082111561390257600080fd5b818801915088601f83011261391657600080fd5b81358181111561392557600080fd5b89602082850101111561393757600080fd5b9699959850939650602001949392505050565b6020815260008251610100806020850152613969610120850183613768565b9150602085015161398560408601826001600160a01b03169052565b50604085015161399860608601826137aa565b506060850151601f19808685030160808701526139b58483613768565b935060808701519150808685030160a0870152506139d38382613768565b92505060a08501516139f060c08601826001600160a01b03169052565b5060c085015160e085015260e0850151613a0c828601826137be565b5090949350505050565b803560038110611c5457600080fd5b600067ffffffffffffffff821115613a3f57613a3f61362f565b5060051b60200190565b803560078110611c5457600080fd5b600082601f830112613a6957600080fd5b81356020613a7e613a7983613a25565b61366e565b828152600592831b8501820192828201919087851115613a9d57600080fd5b8387015b85811015613b4257803567ffffffffffffffff811115613ac15760008081fd5b8801603f81018a13613ad35760008081fd5b858101356040613ae5613a7983613a25565b82815291851b8301810191888101908d841115613b025760008081fd5b938201935b83851015613b31578435925060088310613b215760008081fd5b8282529389019390890190613b07565b885250505093850193508401613aa1565b5090979650505050505050565b80151581146129d957600080fd5b8035611c5481613b4f565b600082601f830112613b7957600080fd5b613b86613a798335613a25565b82358082526020808301929160051b85010185811115613ba557600080fd5b602085015b81811015613cd65767ffffffffffffffff8082351115613bc957600080fd5b813587016080818a03601f19011215613be157600080fd5b613be9613645565b613bf560208301613a49565b8152604082013583811115613c0957600080fd5b8201603f81018b13613c1a57600080fd5b6020810135613c2b613a7982613a25565b81815260059190911b82016040019060208101908d831115613c4c57600080fd5b604084015b83811015613c85578781351115613c6757600080fd5b613c778f6040833588010161369f565b835260209283019201613c51565b506020850152505050606082013583811115613ca057600080fd5b613caf8b602083860101613a58565b604083015250613cc160808301613b5d565b60608201528652505060209384019301613baa565b509095945050505050565b803560048110611c5457600080fd5b600080600080600080600080610100898b031215613d0d57600080fd5b883567ffffffffffffffff80821115613d2557600080fd5b613d318c838d0161369f565b9950613d3f60208c01613898565b9850613d4d60408c01613a16565b975060608b0135915080821115613d6357600080fd5b613d6f8c838d0161369f565b965060808b0135915080821115613d8557600080fd5b613d918c838d0161369f565b9550613d9f60a08c01613898565b945060c08b0135915080821115613db557600080fd5b50613dc28b828c01613b68565b925050613dd160e08a01613ce1565b90509295985092959890939650565b600080600060608486031215613df557600080fd5b833567ffffffffffffffff811115613e0c57600080fd5b613e188682870161369f565b935050613e2760208501613898565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015613e7f578284038952613e6d848351613768565b98850198935090840190600101613e55565b5091979650505050505050565b602081526000612b686020830184613e37565b600080600080600080600060e0888a031215613eba57600080fd5b873567ffffffffffffffff80821115613ed257600080fd5b613ede8b838c0161369f565b9850613eec60208b01613898565b9750613efa60408b01613a16565b965060608a0135915080821115613f1057600080fd5b613f1c8b838c0161369f565b955060808a0135915080821115613f3257600080fd5b50613f3f8a828b0161369f565b935050613f4e60a08901613898565b9150613f5c60c08901613ce1565b905092959891949750929550565b60008060408385031215613f7d57600080fd5b823567ffffffffffffffff811115613f9457600080fd5b613fa08582860161369f565b925050613faf60208401613a49565b90509250929050565b600781106137ba576137ba613794565b60408101613fd68285613fb8565b82151560208301529392505050565b600060208284031215613ff757600080fd5b612b6882613898565b600181811c9082168061401457607f821691505b60208210810361403457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161404c818460208701613744565b9190910192915050565b602081526000612b686020830184613768565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092557610925614069565b601f821115612b5457600081815260208120601f850160051c810160208610156140b95750805b601f850160051c820191505b818110156140d8578281556001016140c5565b505050505050565b815167ffffffffffffffff8111156140fa576140fa61362f565b61410e816141088454614000565b84614092565b602080601f831160018114614143576000841561412b5750858301515b600019600386901b1c1916600185901b1785556140d8565b600085815260208120601f198616915b8281101561417257888601518255948401946001909101908401614153565b50858210156141905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006141b36080830187613768565b90506001600160a01b0380861660208401526141d260408401866137aa565b80841660608401525095945050505050565b8181038181111561092557610925614069565b60408152600061420a6040830185613768565b90508260208301529392505050565b6101008152600061422e61010083018b613768565b6001600160a01b03808b16602085015261424b604085018b6137aa565b838203606085015261425d828a613768565b915083820360808501526142718289613768565b915080871660a08501525082810360c084015280855180835260208301915060208160051b8401016020880160005b838110156143a457601f198087850301865282516142bf858251613fb8565b6020810151608060208701526142d86080870182613e37565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561436d57858203880184528451805180845260209182019184019060005b818110156143555783516008811061434157614341613794565b835260209384019390920191600101614327565b50506020968701969590950194925050600101614305565b506060860151965061438360608b018815159052565b809950505050505050506020820191506020850194506001810190506142a0565b50508094505050505061384660e08301846137be565b6000602082840312156143cc57600080fd5b8151612b6881613b4f565b634e487b7160e01b600052603260045260246000fd5b6000600182016143ff576143ff614069565b5060010190565b600080835461441481614000565b6001828116801561442c576001811461444157614470565b60ff1984168752821515830287019450614470565b8760005260208060002060005b858110156144675781548a82015290840190820161444e565b50505082870194505b50929695505050505050565b818103614487575050565b6144918254614000565b67ffffffffffffffff8111156144a9576144a961362f565b6144b7816141088454614000565b6000601f8211600181146144eb57600083156144d35750848201545b600019600385901b1c1916600184901b178455614550565b600085815260209020601f19841690600086815260209020845b838110156145255782860154825560019586019590910190602001614505565b50858310156145435781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b6000835161457f818460208801613744565b835190830190614593818360208801613744565b0194935050505056fea2646970667358221220cc545097d62ab752192a515a53206f325e79a54a4fe781e2769cb76ecb844be064736f6c63430008140033","sourceMap":"3424:22129:35:-:0;;;4951:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4997:15;-1:-1:-1;;;;;1273:26:2;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:2;;1350:1;1322:31;;;455:51:45;428:18;;1322:31:2;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;5024:14:35::1;:41:::0;;-1:-1:-1;;;;;;5024:41:35::1;-1:-1:-1::0;;;;;5024:41:35;;;::::1;::::0;;;::::1;::::0;;3424:22129;;2912:187:2;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;;;;;3020:17:2;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:45:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:203::-;3424:22129:35;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101515760003560e01c8063715018a6116100cd578063d9cf884c11610081578063e1efb59611610066578063e1efb59614610350578063ea8f547f14610363578063f2fde38b146103ba57600080fd5b8063d9cf884c1461032a578063dbf156391461033d57600080fd5b8063a1bc17c5116100b2578063a1bc17c5146102f1578063b48272cc14610304578063c1733f681461031757600080fd5b8063715018a6146102d65780638da5cb5b146102e057600080fd5b806319d09bc911610124578063433f60ac11610109578063433f60ac1461029b5780634534ba17146102ae5780635137b8a7146102c157600080fd5b806319d09bc91461023d578063324980b51461027b57600080fd5b806304c2320b14610156578063056b01ce146101865780631255c189146101a9578063150b7a02146101d4575b600080fd5b61016961016436600461370f565b6103cd565b60405161017d9897969594939291906137ce565b60405180910390f35b610199610194366004613853565b6105d1565b604051901515815260200161017d565b6005546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b61020c6101e23660046138af565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017d565b61019961024b366004613853565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b61028e610289366004613853565b61092b565b60405161017d919061394a565b6101996102a9366004613cf0565b61114d565b6101996102bc366004613de0565b6114c0565b6102c961191b565b60405161017d9190613e8c565b6102de6119f4565b005b6000546001600160a01b03166101bc565b6101996102ff36600461370f565b611a08565b610199610312366004613853565b611c59565b61028e61032536600461370f565b61209c565b610199610338366004613853565b6120eb565b61019961034b366004613e9f565b612568565b61019961035e366004613853565b612650565b6103ac610371366004613f6a565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161017d929190613fc8565b6102de6103c8366004613fe5565b612985565b80516020818301810180516001825292820191909301209152805481906103f390614000565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90614000565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161049f90614000565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90614000565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509080600301805461052d90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461055990614000565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050506004830154600584015460069094015492936001600160a01b039091169290915060ff1688565b60006105db6129dc565b60006001600160a01b03166001846040516105f6919061403a565b908152604051908190036020019020600101546001600160a01b03160361063b578260405163c0bab25f60e01b81526004016106329190614056565b60405180910390fd5b6000821161068b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b600060018460405161069d919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156106d1576106d1613794565b03610757576106e284600085612a22565b61072e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b8260018560405161073f919061403a565b908152604051908190036020019020600501556108d6565b600281600281111561076b5761076b613794565b036108bb57600384604051610780919061403a565b90815260408051602092819003830190206000868152925290205460ff16156107eb5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220616c7265616479206578697374736044820152606401610632565b6107f784600085612a22565b6108435760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051610854919061403a565b90815260200160405180910390206005016000828254610874919061407f565b92505081905550600160038560405161088d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556108d6565b8360405163c16fc3ad60e01b81526004016106329190614056565b836040516108e4919061403a565b604051908190038120848252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a260019150505b92915050565b61096f60408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b6000600184604051610981919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156109b5576109b5613794565b03610c3b576001846040516109ca919061403a565b9081526020016040518091039020604051806101000160405290816000820180546109f490614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090614000565b8015610a6d5780601f10610a4257610100808354040283529160200191610a6d565b820191906000526020600020905b815481529060010190602001808311610a5057829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166002811115610aaa57610aaa613794565b6002811115610abb57610abb613794565b8152602001600282018054610acf90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90614000565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b50505050508152602001600382018054610b6190614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90614000565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260058201546040820152600682015460609091019060ff166003811115610c1e57610c1e613794565b6003811115610c2f57610c2f613794565b81525050915050610925565b6002816002811115610c4f57610c4f613794565b0361114657600384604051610c64919061403a565b90815260408051602092819003830190206000868152925290205460ff1615610ef757604051806101000160405280600186604051610ca3919061403a565b9081526040519081900360200190208054610cbd90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990614000565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050508152602001600186604051610d50919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051610d93919061403a565b9081526040519081900360200190206001015460ff600160a01b909104166002811115610dc257610dc2613794565b8152602001858152602001600186604051610ddd919061403a565b90815260200160405180910390206003018054610df990614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2590614000565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b50505050508152602001600186604051610e8c919061403a565b9081526040805160209281900383019020600401546001600160a01b031683529082018690528051910190600190610ec590889061403a565b9081526040519081900360200190206006015460ff166003811115610eec57610eec613794565b815250915050610925565b604051806101000160405280600186604051610f13919061403a565b9081526040519081900360200190208054610f2d90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990614000565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b50505050508152602001600186604051610fc0919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051611003919061403a565b9081526040519081900360200190206001015460ff600160a01b90910416600281111561103257611032613794565b815260200185815260200160018660405161104d919061403a565b9081526020016040518091039020600301805461106990614000565b80601f016020809104026020016040519081016040528092919081815260200182805461109590614000565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081526020016001866040516110fc919061403a565b908152602001604051809103902060040160009054906101000a90046001600160a01b03166001600160a01b0316815260200160008152602001600186604051610ec5919061403a565b5092915050565b60006111576129dc565b60006001600160a01b0316600187604051611172919061403a565b908152604051908190036020019020600101546001600160a01b0316146111c757856040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016106329190614056565b6111d18684612a39565b6002866040516111e1919061403a565b9081526040805160209281900383019020600360008181529190935220015460ff161561128557611213866003612b59565b6112855760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e000000006064820152608401610632565b6040518061010001604052808a8152602001896001600160a01b031681526020018860028111156112b8576112b8613794565b8152602001878152602001868152602001856001600160a01b03168152602001600081526020018360038111156112f1576112f1613794565b815250600187604051611304919061403a565b9081526040519081900360200190208151819061132190826140e0565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600281111561138a5761138a613794565b0217905550606082015160028201906113a390826140e0565b50608082015160038201906113b890826140e0565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c0820151600582015560e082015160068201805460ff1916600183600381111561141957611419613794565b021790555050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905061145d87826140e0565b508560405161146c919061403a565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8a8a8a886040516114a994939291906141a0565b60405180910390a250600198975050505050505050565b60006114ca6129dc565b60006001600160a01b03166001856040516114e5919061403a565b908152604051908190036020019020600101546001600160a01b031603611521578360405163c0bab25f60e01b81526004016106329190614056565b600082116115715760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600185604051611583919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156115b7576115b7613794565b036116c257826001866040516115cd919061403a565b908152602001604051809103902060050154101561162d5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b65646044820152606401610632565b61163a8560028587612b6f565b6116865760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c656400000000000000006044820152606401610632565b82600186604051611697919061403a565b908152602001604051809103902060050160008282546116b791906141e4565b909155506118b99050565b60028160028111156116d6576116d6613794565b0361189e5760006001866040516116ed919061403a565b9081526020016040518091039020600501541161174c5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b65646044820152606401610632565b60038560405161175c919061403a565b908152604080519182900360209081019092206000868152925290205460ff1615156001146117cd5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b6117da8560028587612b6f565b6118265760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018086604051611837919061403a565b9081526020016040518091039020600501600082825461185791906141e4565b925050819055506000600386604051611870919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556118b9565b8460405163c16fc3ad60e01b81526004016106329190614056565b846040516118c7919061403a565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a2506001949350505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156119eb57838290600052602060002001805461195e90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461198a90614000565b80156119d75780601f106119ac576101008083540402835291602001916119d7565b820191906000526020600020905b8154815290600101906020018083116119ba57829003601f168201915b50505050508152602001906001019061193f565b50505050905090565b6119fc6129dc565b611a066000612e8b565b565b6000611a126129dc565b60006001600160a01b0316600183604051611a2d919061403a565b908152604051908190036020019020600101546001600160a01b031603611a69578160405163c0bab25f60e01b81526004016106329190614056565b6000600183604051611a7b919061403a565b9081526020016040518091039020600501541115611ac757816040517fb7d2c10a0000000000000000000000000000000000000000000000000000000081526004016106329190614056565b611b79600183604051611ada919061403a565b90815260200160405180910390206002018054611af690614000565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290614000565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050612ee8565b600182604051611b89919061403a565b9081526040519081900360200190206000611ba48282613422565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055611bd2600283016000613422565b611be0600383016000613422565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820155600601805460ff19169055604051611c2090839061403a565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000611c636129dc565b60006001600160a01b0316600184604051611c7e919061403a565b908152604051908190036020019020600101546001600160a01b031603611cba578260405163c0bab25f60e01b81526004016106329190614056565b60008211611d0a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051611d1c919061403a565b90815260405190819003602001902060019081015460ff600160a01b909104169150816002811115611d5057611d50613794565b03611e5a5782600185604051611d66919061403a565b9081526020016040518091039020600501541015611dc65760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b656400006044820152606401610632565b611dd284600185612a22565b611e1e5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b82600185604051611e2f919061403a565b90815260200160405180910390206005016000828254611e4f91906141e4565b909155506120579050565b6002816002811115611e6e57611e6e613794565b036108bb576000600185604051611e85919061403a565b90815260200160405180910390206005015411611f0a5760405162461bcd60e51b815260206004820152602360248201527f547279696e6720746f206275726e20616e20756e6163636f756e74656420417360448201527f73657400000000000000000000000000000000000000000000000000000000006064820152608401610632565b600384604051611f1a919061403a565b908152604080519182900360209081019092206000868152925290205460ff161515600114611f8b5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b611f9784600185612a22565b611fe35760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051611ff4919061403a565b9081526020016040518091039020600501600082825461201491906141e4565b92505081905550600060038560405161202d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612065919061403a565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee9990602001610917565b6120e060408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b61092582600061092b565b60006120f56129dc565b60006001600160a01b0316600184604051612110919061403a565b908152604051908190036020019020600101546001600160a01b03160361214c578260405163c0bab25f60e01b81526004016106329190614056565b6000821161219c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b60006001846040516121ae919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156121e2576121e2613794565b0361230057826001856040516121f8919061403a565b90815260200160405180910390206005015410156122465783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016106329291906141f7565b61225284600585612a22565b6122c45760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610632565b826001856040516122d5919061403a565b908152602001604051809103902060050160008282546122f591906141e4565b909155506125239050565b600281600281111561231457612314613794565b036108bb57600384604051612329919061403a565b908152604080519182900360209081019092206000868152925290205460ff16151560011461239a5760405162461bcd60e51b815260206004820152601060248201527f546f6b656e204e6f74204c6f636b6564000000000000000000000000000000006044820152606401610632565b60006001856040516123ac919061403a565b908152602001604051809103902060050154116124315760405162461bcd60e51b815260206004820152603360248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206163636f756e74656420666f72000000000000000000000000006064820152608401610632565b61243d84600585612a22565b6124af5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610632565b600180856040516124c0919061403a565b908152602001604051809103902060050160008282546124e091906141e4565b9250508190555060006003856040516124f9919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612531919061403a565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001610917565b60006125726129dc565b3063433f60ac89898989898960006040519080825280602002602001820160405280156125dc57816020015b6125c96040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161259e5790505b508a6040518963ffffffff1660e01b8152600401612601989796959493929190614219565b6020604051808303816000875af1158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906143ba565b98975050505050505050565b600061265a6129dc565b60006001600160a01b0316600184604051612675919061403a565b908152604051908190036020019020600101546001600160a01b0316036126b1578260405163c0bab25f60e01b81526004016106329190614056565b600082116127015760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051612713919061403a565b90815260405190819003602001902060019081015460ff600160a01b90910416915081600281111561274757612747613794565b036127e05761275884600485612a22565b6127a45760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b826001856040516127b5919061403a565b908152602001604051809103902060050160008282546127d5919061407f565b909155506129409050565b60028160028111156127f4576127f4613794565b036108bb57600384604051612809919061403a565b90815260408051602092819003830190206000868152925290205460ff16156128745760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20416c7265616479204c6f636b65640000000000000000000000006044820152606401610632565b61288084600485612a22565b6128cc5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b600180856040516128dd919061403a565b908152602001604051809103902060050160008282546128fd919061407f565b925050819055506001600385604051612916919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b8360405161294e919061403a565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001610917565b61298d6129dc565b6001600160a01b0381166129d0576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610632565b6129d981612e8b565b50565b6000546001600160a01b03163314611a06576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610632565b6000612a318484846000612b6f565b949350505050565b60005b8151811015612b5457818181518110612a5757612a576143d7565b6020026020010151600284604051612a6f919061403a565b90815260200160405180910390206000848481518110612a9157612a916143d7565b6020026020010151600001516006811115612aae57612aae613794565b6006811115612abf57612abf613794565b8152602081019190915260400160002081518154829060ff19166001836006811115612aed57612aed613794565b02179055506020828101518051612b0a926001850192019061345c565b5060408201518051612b269160028401916020909101906134b2565b50606091909101516003909101805460ff191691151591909117905580612b4c816143ed565b915050612a3c565b505050565b6000612b688383600080612b6f565b9392505050565b6000600285604051612b81919061403a565b90815260200160405180910390206000856006811115612ba357612ba3613794565b6006811115612bb457612bb4613794565b815260208101919091526040016000206003015460ff16612bd757506000612a31565b60005b600286604051612bea919061403a565b90815260200160405180910390206000866006811115612c0c57612c0c613794565b6006811115612c1d57612c1d613794565b8152602081019190915260400160002060010154811015612e7f576000600287604051612c4a919061403a565b90815260200160405180910390206000876006811115612c6c57612c6c613794565b6006811115612c7d57612c7d613794565b81526020019081526020016000206001018281548110612c9f57612c9f6143d7565b90600052602060002001604051602001612cb99190614406565b6040516020818303038152906040528051906020012090506000612dd582612dd060028b604051612cea919061403a565b908152602001604051809103902060008b6006811115612d0c57612d0c613794565b6006811115612d1d57612d1d613794565b81526020019081526020016000206002018681548110612d3f57612d3f6143d7565b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015612dc357602002820191906000526020600020906000905b82829054906101000a900460ff166007811115612da157612da1613794565b815260206001928301818104948501949093039092029101808411612d825790505b50505050508b898b613046565b613363565b90506000600189604051612de9919061403a565b908152604051908190036020018120600101546001600160a01b031690612e1190849061403a565b6000604051808303816000865af19150503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5050905080612e69576000945050505050612a31565b5050508080612e77906143ed565b915050612bda565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60045481101561304257612fa460048281548110612f0b57612f0b6143d7565b906000526020600020018054612f2090614000565b80601f0160208091040260200160405190810160405280929190818152602001828054612f4c90614000565b8015612f995780601f10612f6e57610100808354040283529160200191612f99565b820191906000526020600020905b815481529060010190602001808311612f7c57829003601f168201915b5050505050836133fd565b156130305760048054612fb9906001906141e4565b81548110612fc957612fc96143d7565b9060005260206000200160048281548110612fe657612fe66143d7565b906000526020600020019081612ffc919061447c565b50600480548061300e5761300e614557565b60019003818190600052602060002001600061302a9190613422565b90555050565b8061303a816143ed565b915050612eeb565b5050565b60606000855167ffffffffffffffff8111156130645761306461362f565b60405190808252806020026020018201604052801561309757816020015b60608152602001906001900390816130825790505b50905060005b86518110156133595760058782815181106130ba576130ba6143d7565b602002602001015160078111156130d3576130d3613794565b036131155760408051306020820152015b604051602081830303815290604052828281518110613105576131056143d7565b6020026020010181905250613347565b6002878281518110613129576131296143d7565b6020026020010151600781111561314257613142613794565b0361315857856040516020016130e49190614056565b600487828151811061316c5761316c6143d7565b6020026020010151600781111561318557613185613794565b0361319b576040805160208101869052016130e4565b60038782815181106131af576131af6143d7565b602002602001015160078111156131c8576131c8613794565b03613206576001866040516131dd919061403a565b908152604080519182900360209081018320600401546001600160a01b031690830152016130e4565b600087828151811061321a5761321a6143d7565b6020026020010151600781111561323357613233613794565b0361327157600186604051613248919061403a565b908152604080519182900360209081018320600101546001600160a01b031690830152016130e4565b6006878281518110613285576132856143d7565b6020026020010151600781111561329e5761329e613794565b036132bc57604080516001600160a01b0387166020820152016130e4565b60078782815181106132d0576132d06143d7565b602002602001015160078111156132e9576132e9613794565b036132ff576040805160208101869052016130e4565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f72746564000000000000000000006044820152606401610632565b80613351816143ed565b91505061309d565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561114657818382815181106133c0576133c06143d7565b60200260200101516040516020016133d992919061456d565b604051602081830303815290604052915080806133f5906143ed565b9150506133a4565b600081518351148015612b685750508051602091820120825192909101919091201490565b50805461342e90614000565b6000825580601f1061343e575050565b601f0160209004906000526020600020908101906129d9919061350b565b8280548282559060005260206000209081019282156134a2579160200282015b828111156134a2578251829061349290826140e0565b509160200191906001019061347c565b506134ae929150613520565b5090565b8280548282559060005260206000209081019282156134ff579160200282015b828111156134ff57825180516134ef91849160209091019061353d565b50916020019190600101906134d2565b506134ae9291506135ed565b5b808211156134ae576000815560010161350c565b808211156134ae5760006135348282613422565b50600101613520565b82805482825590600052602060002090601f016020900481019282156135e15791602002820160005b838211156135b257835183826101000a81548160ff0219169083600781111561359157613591613794565b02179055509260200192600101602081600001049283019260010302613566565b80156135df5782816101000a81549060ff02191690556001016020816000010492830192600103026135b2565b505b506134ae92915061350b565b808211156134ae576000613601828261360a565b506001016135ed565b50805460008255601f0160209004906000526020600020908101906129d9919061350b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156136685761366861362f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136975761369761362f565b604052919050565b600082601f8301126136b057600080fd5b813567ffffffffffffffff8111156136ca576136ca61362f565b6136dd601f8201601f191660200161366e565b8181528460208386010111156136f257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561372157600080fd5b813567ffffffffffffffff81111561373857600080fd5b612a318482850161369f565b60005b8381101561375f578181015183820152602001613747565b50506000910152565b60008151808452613780816020860160208601613744565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106137ba576137ba613794565b9052565b600481106137ba576137ba613794565b60006101008083526137e28184018c613768565b90506001600160a01b03808b166020850152613801604085018b6137aa565b8382036060850152613813828a613768565b915083820360808501526138278289613768565b925080871660a085015250508360c083015261384660e08301846137be565b9998505050505050505050565b6000806040838503121561386657600080fd5b823567ffffffffffffffff81111561387d57600080fd5b6138898582860161369f565b95602094909401359450505050565b80356001600160a01b0381168114611c5457600080fd5b6000806000806000608086880312156138c757600080fd5b6138d086613898565b94506138de60208701613898565b935060408601359250606086013567ffffffffffffffff8082111561390257600080fd5b818801915088601f83011261391657600080fd5b81358181111561392557600080fd5b89602082850101111561393757600080fd5b9699959850939650602001949392505050565b6020815260008251610100806020850152613969610120850183613768565b9150602085015161398560408601826001600160a01b03169052565b50604085015161399860608601826137aa565b506060850151601f19808685030160808701526139b58483613768565b935060808701519150808685030160a0870152506139d38382613768565b92505060a08501516139f060c08601826001600160a01b03169052565b5060c085015160e085015260e0850151613a0c828601826137be565b5090949350505050565b803560038110611c5457600080fd5b600067ffffffffffffffff821115613a3f57613a3f61362f565b5060051b60200190565b803560078110611c5457600080fd5b600082601f830112613a6957600080fd5b81356020613a7e613a7983613a25565b61366e565b828152600592831b8501820192828201919087851115613a9d57600080fd5b8387015b85811015613b4257803567ffffffffffffffff811115613ac15760008081fd5b8801603f81018a13613ad35760008081fd5b858101356040613ae5613a7983613a25565b82815291851b8301810191888101908d841115613b025760008081fd5b938201935b83851015613b31578435925060088310613b215760008081fd5b8282529389019390890190613b07565b885250505093850193508401613aa1565b5090979650505050505050565b80151581146129d957600080fd5b8035611c5481613b4f565b600082601f830112613b7957600080fd5b613b86613a798335613a25565b82358082526020808301929160051b85010185811115613ba557600080fd5b602085015b81811015613cd65767ffffffffffffffff8082351115613bc957600080fd5b813587016080818a03601f19011215613be157600080fd5b613be9613645565b613bf560208301613a49565b8152604082013583811115613c0957600080fd5b8201603f81018b13613c1a57600080fd5b6020810135613c2b613a7982613a25565b81815260059190911b82016040019060208101908d831115613c4c57600080fd5b604084015b83811015613c85578781351115613c6757600080fd5b613c778f6040833588010161369f565b835260209283019201613c51565b506020850152505050606082013583811115613ca057600080fd5b613caf8b602083860101613a58565b604083015250613cc160808301613b5d565b60608201528652505060209384019301613baa565b509095945050505050565b803560048110611c5457600080fd5b600080600080600080600080610100898b031215613d0d57600080fd5b883567ffffffffffffffff80821115613d2557600080fd5b613d318c838d0161369f565b9950613d3f60208c01613898565b9850613d4d60408c01613a16565b975060608b0135915080821115613d6357600080fd5b613d6f8c838d0161369f565b965060808b0135915080821115613d8557600080fd5b613d918c838d0161369f565b9550613d9f60a08c01613898565b945060c08b0135915080821115613db557600080fd5b50613dc28b828c01613b68565b925050613dd160e08a01613ce1565b90509295985092959890939650565b600080600060608486031215613df557600080fd5b833567ffffffffffffffff811115613e0c57600080fd5b613e188682870161369f565b935050613e2760208501613898565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015613e7f578284038952613e6d848351613768565b98850198935090840190600101613e55565b5091979650505050505050565b602081526000612b686020830184613e37565b600080600080600080600060e0888a031215613eba57600080fd5b873567ffffffffffffffff80821115613ed257600080fd5b613ede8b838c0161369f565b9850613eec60208b01613898565b9750613efa60408b01613a16565b965060608a0135915080821115613f1057600080fd5b613f1c8b838c0161369f565b955060808a0135915080821115613f3257600080fd5b50613f3f8a828b0161369f565b935050613f4e60a08901613898565b9150613f5c60c08901613ce1565b905092959891949750929550565b60008060408385031215613f7d57600080fd5b823567ffffffffffffffff811115613f9457600080fd5b613fa08582860161369f565b925050613faf60208401613a49565b90509250929050565b600781106137ba576137ba613794565b60408101613fd68285613fb8565b82151560208301529392505050565b600060208284031215613ff757600080fd5b612b6882613898565b600181811c9082168061401457607f821691505b60208210810361403457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161404c818460208701613744565b9190910192915050565b602081526000612b686020830184613768565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092557610925614069565b601f821115612b5457600081815260208120601f850160051c810160208610156140b95750805b601f850160051c820191505b818110156140d8578281556001016140c5565b505050505050565b815167ffffffffffffffff8111156140fa576140fa61362f565b61410e816141088454614000565b84614092565b602080601f831160018114614143576000841561412b5750858301515b600019600386901b1c1916600185901b1785556140d8565b600085815260208120601f198616915b8281101561417257888601518255948401946001909101908401614153565b50858210156141905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006141b36080830187613768565b90506001600160a01b0380861660208401526141d260408401866137aa565b80841660608401525095945050505050565b8181038181111561092557610925614069565b60408152600061420a6040830185613768565b90508260208301529392505050565b6101008152600061422e61010083018b613768565b6001600160a01b03808b16602085015261424b604085018b6137aa565b838203606085015261425d828a613768565b915083820360808501526142718289613768565b915080871660a08501525082810360c084015280855180835260208301915060208160051b8401016020880160005b838110156143a457601f198087850301865282516142bf858251613fb8565b6020810151608060208701526142d86080870182613e37565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561436d57858203880184528451805180845260209182019184019060005b818110156143555783516008811061434157614341613794565b835260209384019390920191600101614327565b50506020968701969590950194925050600101614305565b506060860151965061438360608b018815159052565b809950505050505050506020820191506020850194506001810190506142a0565b50508094505050505061384660e08301846137be565b6000602082840312156143cc57600080fd5b8151612b6881613b4f565b634e487b7160e01b600052603260045260246000fd5b6000600182016143ff576143ff614069565b5060010190565b600080835461441481614000565b6001828116801561442c576001811461444157614470565b60ff1984168752821515830287019450614470565b8760005260208060002060005b858110156144675781548a82015290840190820161444e565b50505082870194505b50929695505050505050565b818103614487575050565b6144918254614000565b67ffffffffffffffff8111156144a9576144a961362f565b6144b7816141088454614000565b6000601f8211600181146144eb57600083156144d35750848201545b600019600385901b1c1916600184901b178455614550565b600085815260209020601f19841690600086815260209020845b838110156145255782860154825560019586019590910190602001614505565b50858310156145435781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b6000835161457f818460208801613744565b835190830190614593818360208801613744565b0194935050505056fea2646970667358221220cc545097d62ab752192a515a53206f325e79a54a4fe781e2769cb76ecb844be064736f6c63430008140033","sourceMap":"3424:22129:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3568:40;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;11514:1068;;;;;;:::i;:::-;;:::i;:::-;;;4498:14:45;;4491:22;4473:41;;4461:2;4446:18;11514:1068:35;4333:187:45;4149:29:35;;;;;-1:-1:-1;;;;;4149:29:35;;;;;;-1:-1:-1;;;;;4689:55:45;;;4671:74;;4659:2;4644:18;4149:29:35;4525:226:45;16157:163:35;;;;;;:::i;:::-;16283:30;16157:163;;;;;;;;;;;5944:66:45;5932:79;;;5914:98;;5902:2;5887:18;16157:163:35;5770:248:45;3959:59:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3959:59:35;;;;;;;;;;;17881:2076;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5773:1059::-;;;;;;:::i;:::-;;:::i;14620:1340::-;;;;;;:::i;:::-;;:::i;16412:94::-;;;:::i;:::-;;;;;;;:::i;2293:101:2:-;;;:::i;:::-;;1638:85;1684:7;1710:6;-1:-1:-1;;;;;1710:6:2;1638:85;;7658:445:35;;;;;;:::i;:::-;;:::i;12922:1255::-;;;;;;:::i;:::-;;:::i;17221:126::-;;;;;;:::i;:::-;;:::i;9837:1336::-;;;;;;:::i;:::-;;:::i;7026:388::-;;;;;;:::i;:::-;;:::i;8444:1044::-;;;;;;:::i;:::-;;:::i;3693:94::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3693:94:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2543:215:2:-;;;;;;:::i;:::-;;:::i;3568:40:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3568:40:35;;;;;;;;;;;-1:-1:-1;;;;;3568:40:35;;;-1:-1:-1;;;3568:40:35;;;;;;-1:-1:-1;3568:40:35;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3568:40:35;;;;;;;;;;;;;;;-1:-1:-1;;;;;3568:40:35;;;;;;-1:-1:-1;3568:40:35;;;:::o;11514:1068::-;11603:12;1531:13:2;:11;:13::i;:::-;11673:1:35::1;-1:-1:-1::0;;;;;11630:45:35::1;:6;11637:7;11630:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;11630:31:35::1;:45:::0;11627:107:::1;;11715:7;11697:26;;-1:-1:-1::0;;;11697:26:35::1;;;;;;;;:::i;:::-;;;;;;;;11627:107;11768:1;11751:14;:18;11743:54;;;::::0;-1:-1:-1;;;11743:54:35;;18669:2:45;11743:54:35::1;::::0;::::1;18651:21:45::0;18708:2;18688:18;;;18681:30;18747:25;18727:18;;;18720:53;18790:18;;11743:54:35::1;18467:347:45::0;11743:54:35::1;11808:12;11823:6;11830:7;11823:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;11823:25:35;;::::1;;::::0;-1:-1:-1;11862:2:35::1;:36;;;;;;;;:::i;:::-;::::0;11858:652:::1;;11922:55;11931:7;11940:20;11962:14;11922:8;:55::i;:::-;11914:91;;;::::0;-1:-1:-1;;;11914:91:35;;19021:2:45;11914:91:35::1;::::0;::::1;19003:21:45::0;19060:2;19040:18;;;19033:30;19099:24;19079:18;;;19072:52;19141:18;;11914:91:35::1;18819:346:45::0;11914:91:35::1;12044:14;12019:6;12026:7;12019:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:22:::1;;:39:::0;11858:652:::1;;;12093:33;12087:2;:39;;;;;;;;:::i;:::-;::::0;12083:427:::1;;12150:7;12158;12150:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;;::::1;;:41;12142:86;;;::::0;-1:-1:-1;;;12142:86:35;;19372:2:45;12142:86:35::1;::::0;::::1;19354:21:45::0;;;19391:18;;;19384:30;19450:34;19430:18;;;19423:62;19502:18;;12142:86:35::1;19170:356:45::0;12142:86:35::1;12250:55;12259:7;12268:20;12290:14;12250:8;:55::i;:::-;12242:91;;;::::0;-1:-1:-1;;;12242:91:35;;19021:2:45;12242:91:35::1;::::0;::::1;19003:21:45::0;19060:2;19040:18;;;19033:30;19099:24;19079:18;;;19072:52;19141:18;;12242:91:35::1;18819:346:45::0;12242:91:35::1;12373:1;12347:6:::0;12354:7:::1;12347:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;12423:4;12388:7;12396;12388:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:39;;-1:-1:-1;;12388:39:35::1;::::0;::::1;;::::0;;;::::1;::::0;;12083:427:::1;;;12491:7;12473:26;;-1:-1:-1::0;;;12473:26:35::1;;;;;;;;:::i;12083:427::-;12530:7;12525:29;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;19996:25:45;;;12525:29:35;::::1;::::0;19984:2:45;19969:18;12525:29:35::1;;;;;;;;12571:4;12564:11;;;1554:1:2;11514:1068:35::0;;;;:::o;17881:2076::-;17967:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17967:18:35;17997:12;18012:6;18019:7;18012:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:25;;;;;;-1:-1:-1;;;18012:25:35;;;;;-1:-1:-1;18272:2:35;:36;;;;;;;;:::i;:::-;;18268:1683;;18331:6;18338:7;18331:15;;;;;;:::i;:::-;;;;;;;;;;;;;18324:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18324:22:35;;;-1:-1:-1;;18324:22:35;;;;-1:-1:-1;;;;;18324:22:35;;;;;;;;;;;-1:-1:-1;;;18324:22:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18324:22:35;;;-1:-1:-1;;18324:22:35;;;;-1:-1:-1;;;;;18324:22:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;18268:1683;18930:33;18924:2;:39;;;;;;;;:::i;:::-;;18920:1031;;19398:7;19406;19398:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:32;;;;;;;;;;;19395:534;;;19457:206;;;;;;;;19463:6;19470:7;19463:15;;;;;;:::i;:::-;;;;;;;;;;;;;;19457:206;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19493:6;19500:7;19493:15;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;-1:-1:-1;;;;;19493:31:35;-1:-1:-1;;;;;19457:206:35;;;;;19526:6;19533:7;19526:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:25;;;;-1:-1:-1;;;19526:25:35;;;;19457:206;;;;;;;;:::i;:::-;;;;;19553:7;19457:206;;;;19562:6;19569:7;19562:15;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;19457:206;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19591:6;19598:7;19591:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:21;;;-1:-1:-1;;;;;19591:21:35;19457:206;;;;;;;;19630:15;;19457:206;;;19591:21;;19630:15;;19637:7;;19630:15;:::i;:::-;;;;;;;;;;;;;;:32;;;;;19457:206;;;;;;;;:::i;:::-;;;;19450:213;;;;;19395:534;19721:193;;;;;;;;19727:6;19734:7;19727:15;;;;;;:::i;:::-;;;;;;;;;;;;;;19721:193;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19757:6;19764:7;19757:15;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;;;;;;;;;-1:-1:-1;;;;;19757:31:35;-1:-1:-1;;;;;19721:193:35;;;;;19790:6;19797:7;19790:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:25;;;;-1:-1:-1;;;19790:25:35;;;;19721:193;;;;;;;;:::i;:::-;;;;;19817:7;19721:193;;;;19826:6;19833:7;19826:15;;;;;;:::i;:::-;;;;;;;;;;;;;:27;;19721:193;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19855:6;19862:7;19855:15;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;-1:-1:-1;;;;;19855:21:35;-1:-1:-1;;;;;19721:193:35;;;;;19878:1;19721:193;;;;19881:6;19888:7;19881:15;;;;;;:::i;19395:534::-;17987:1970;17881:2076;;;;:::o;5773:1059::-;6033:16;1531:13:2;:11;:13::i;:::-;6107:1:35::1;-1:-1:-1::0;;;;;6064:45:35::1;:6;6071:7;6064:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;6064:31:35::1;:45;6061:110;;6152:7;6132:28;;;;;;;;;;;:::i;6061:110::-;6276:53;6307:7;6316:12;6276:30;:53::i;:::-;6343:18;6362:7;6343:27;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;6371:30:::1;6343:59;::::0;;;;;;;;:69:::1;::::0;::::1;;6340:221;;;6436:49;6445:7;6454:30;6436:8;:49::i;:::-;6428:122;;;::::0;-1:-1:-1;;;6428:122:35;;20234:2:45;6428:122:35::1;::::0;::::1;20216:21:45::0;20273:2;20253:18;;;20246:30;20312:34;20292:18;;;20285:62;20383:30;20363:18;;;20356:58;20431:19;;6428:122:35::1;20032:424:45::0;6428:122:35::1;6589:97;;;;;;;;6595:12;6589:97;;;;6609:15;-1:-1:-1::0;;;;;6589:97:35::1;;;;;6626:9;6589:97;;;;;;;;:::i;:::-;;;;;6637:7;6589:97;;;;6646:11;6589:97;;;;6659:5;-1:-1:-1::0;;;;;6589:97:35::1;;;;;6666:1;6589:97;;;;6669:16;6589:97;;;;;;;;:::i;:::-;;;::::0;6571:6:::1;6578:7;6571:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:115;;:15;;:115:::1;::::0;:15;:115:::1;:::i;:::-;-1:-1:-1::0;6571:115:35::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;6571:115:35;;::::1;-1:-1:-1::0;;6571:115:35;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;6571:115:35;;-1:-1:-1;;;6571:115:35;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;6571:115:35::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;6571:115:35::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;6571:115:35::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;6571:115:35::1;-1:-1:-1::0;;;;;6571:115:35;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;6571:115:35::1;-1:-1:-1::0;6571:115:35;::::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;;6701:3:35::1;:17:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;6701:17:35;;;;;::::1;::::0;-1:-1:-1;6701:17:35::1;6710:7:::0;6701:17;::::1;:::i;:::-;;6747:7;6742:62;;;;;;:::i;:::-;;;;;;;;;6756:12;6770:15;6787:9;6798:5;6742:62;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6821:4:35::1;5773:1059:::0;;;;;;;;;;:::o;14620:1340::-;14737:12;1531:13:2;:11;:13::i;:::-;14807:1:35::1;-1:-1:-1::0;;;;;14764:45:35::1;:6;14771:7;14764:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;14764:31:35::1;:45:::0;14761:107:::1;;14849:7;14831:26;;-1:-1:-1::0;;;14831:26:35::1;;;;;;;;:::i;14761:107::-;14902:1;14885:14;:18;14877:54;;;::::0;-1:-1:-1;;;14877:54:35;;18669:2:45;14877:54:35::1;::::0;::::1;18651:21:45::0;18708:2;18688:18;;;18681:30;18747:25;18727:18;;;18720:53;18790:18;;14877:54:35::1;18467:347:45::0;14877:54:35::1;14942:12;14957:6;14964:7;14957:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;14957:25:35;;::::1;;::::0;-1:-1:-1;14996:2:35::1;:36;;;;;;;;:::i;:::-;::::0;14992:877:::1;;15082:14;15056:6;15063:7;15056:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;15048:85;;;::::0;-1:-1:-1;;;15048:85:35;;23418:2:45;15048:85:35::1;::::0;::::1;23400:21:45::0;;;23437:18;;;23430:30;23496:34;23476:18;;;23469:62;23548:18;;15048:85:35::1;23216:356:45::0;15048:85:35::1;15155:75;15164:7;15173:22;15197:14;15213:16;15155:8;:75::i;:::-;15147:112;;;::::0;-1:-1:-1;;;15147:112:35;;23779:2:45;15147:112:35::1;::::0;::::1;23761:21:45::0;23818:2;23798:18;;;23791:30;23857:26;23837:18;;;23830:54;23901:18;;15147:112:35::1;23577:348:45::0;15147:112:35::1;15299:14;15273:6;15280:7;15273:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;14992:877:35::1;::::0;-1:-1:-1;14992:877:35::1;;15348:33;15342:2;:39;;;;;;;;:::i;:::-;::::0;15338:531:::1;;15430:1;15405:6;15412:7;15405:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;15397:71;;;::::0;-1:-1:-1;;;15397:71:35;;24265:2:45;15397:71:35::1;::::0;::::1;24247:21:45::0;;;24284:18;;;24277:30;24343:34;24323:18;;;24316:62;24395:18;;15397:71:35::1;24063:356:45::0;15397:71:35::1;15490:7;15498;15490:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;;:32:::1;::::0;;;;;;;;::::1;;:40;;:32:::0;:40:::1;15482:85;;;::::0;-1:-1:-1;;;15482:85:35;;24626:2:45;15482:85:35::1;::::0;::::1;24608:21:45::0;;;24645:18;;;24638:30;24704:34;24684:18;;;24677:62;24756:18;;15482:85:35::1;24424:356:45::0;15482:85:35::1;15589:75;15598:7;15607:22;15631:14;15647:16;15589:8;:75::i;:::-;15581:110;;;::::0;-1:-1:-1;;;15581:110:35;;24987:2:45;15581:110:35::1;::::0;::::1;24969:21:45::0;25026:2;25006:18;;;24999:30;25065:24;25045:18;;;25038:52;25107:18;;15581:110:35::1;24785:346:45::0;15581:110:35::1;15731:1;15705:6:::0;15712:7:::1;15705:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;15781:5;15746:7;15754;15746:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:40;;-1:-1:-1;;15746:40:35::1;::::0;::::1;;::::0;;;::::1;::::0;;15338:531:::1;;;15850:7;15832:26;;-1:-1:-1::0;;;15832:26:35::1;;;;;;;;:::i;15338:531::-;15890:7;15883:49;;;;;;:::i;:::-;;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;25328:55:45;;25310:74;;25415:2;25400:18;;25393:34;;;15883:49:35;::::1;::::0;25283:18:45;15883:49:35::1;;;;;;;-1:-1:-1::0;15949:4:35::1;::::0;14620:1340;-1:-1:-1;;;;14620:1340:35:o;16412:94::-;16462:15;16496:3;16489:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16412:94;:::o;2293:101:2:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;7658:445:35:-;7725:12;1531:13:2;:11;:13::i;:::-;7795:1:35::1;-1:-1:-1::0;;;;;7752:45:35::1;:6;7759:7;7752:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;7752:31:35::1;:45:::0;7749:108:::1;;7838:7;7820:26;;-1:-1:-1::0;;;7820:26:35::1;;;;;;;;:::i;7749:108::-;7894:1;7869:6;7876:7;7869:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;7866:83;;;7930:7;7918:20;;;;;;;;;;;:::i;7866:83::-;7972:40;7988:6;7995:7;7988:15;;;;;;:::i;:::-;;;;;;;;;;;;;:23;;7972:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:40::i;:::-;8029:6;8036:7;8029:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;::::1;8022:22;8029:15:::0;;8022:22:::1;:::i;:::-;;::::0;::::1;::::0;;-1:-1:-1;;8022:22:35;;;::::1;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;8022:22:35::1;::::0;::::1;::::0;;-1:-1:-1;;8022:22:35::1;::::0;;::::1;;::::0;::::1;::::0;::::1;;::::0;;-1:-1:-1;;8022:22:35::1;::::0;;8060:15:::1;::::0;::::1;::::0;8067:7;;8060:15:::1;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;8092:4:35::1;1554:1:2;7658:445:35::0;;;:::o;12922:1255::-;13011:12;1531:13:2;:11;:13::i;:::-;13081:1:35::1;-1:-1:-1::0;;;;;13038:45:35::1;:6;13045:7;13038:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;13038:31:35::1;:45:::0;13035:107:::1;;13123:7;13105:26;;-1:-1:-1::0;;;13105:26:35::1;;;;;;;;:::i;13035:107::-;13176:1;13159:14;:18;13151:54;;;::::0;-1:-1:-1;;;13151:54:35;;18669:2:45;13151:54:35::1;::::0;::::1;18651:21:45::0;18708:2;18688:18;;;18681:30;18747:25;18727:18;;;18720:53;18790:18;;13151:54:35::1;18467:347:45::0;13151:54:35::1;13216:12;13231:6;13238:7;13231:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;13231:25:35;;::::1;;::::0;-1:-1:-1;13270:2:35::1;:36;;;;;;;;:::i;:::-;::::0;13266:839:::1;;13356:14;13330:6;13337:7;13330:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;13322:83;;;::::0;-1:-1:-1;;;13322:83:35;;25640:2:45;13322:83:35::1;::::0;::::1;25622:21:45::0;25679:2;25659:18;;;25652:30;25718:32;25698:18;;;25691:60;25768:18;;13322:83:35::1;25438:354:45::0;13322:83:35::1;13427:55;13436:7;13445:20;13467:14;13427:8;:55::i;:::-;13419:90;;;::::0;-1:-1:-1;;;13419:90:35;;25999:2:45;13419:90:35::1;::::0;::::1;25981:21:45::0;26038:2;26018:18;;;26011:30;26077:24;26057:18;;;26050:52;26119:18;;13419:90:35::1;25797:346:45::0;13419:90:35::1;13549:14;13523:6;13530:7;13523:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;13266:839:35::1;::::0;-1:-1:-1;13266:839:35::1;;13598:33;13592:2;:39;;;;;;;;:::i;:::-;::::0;13588:517:::1;;13680:1;13655:6;13662:7;13655:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;13647:74;;;::::0;-1:-1:-1;;;13647:74:35;;26350:2:45;13647:74:35::1;::::0;::::1;26332:21:45::0;26389:2;26369:18;;;26362:30;26428:34;26408:18;;;26401:62;26499:5;26479:18;;;26472:33;26522:19;;13647:74:35::1;26148:399:45::0;13647:74:35::1;13743:7;13751;13743:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;;:32:::1;::::0;;;;;;;;::::1;;:40;;:32:::0;:40:::1;13735:85;;;::::0;-1:-1:-1;;;13735:85:35;;24626:2:45;13735:85:35::1;::::0;::::1;24608:21:45::0;;;24645:18;;;24638:30;24704:34;24684:18;;;24677:62;24756:18;;13735:85:35::1;24424:356:45::0;13735:85:35::1;13842:55;13851:7;13860:20;13882:14;13842:8;:55::i;:::-;13834:90;;;::::0;-1:-1:-1;;;13834:90:35;;25999:2:45;13834:90:35::1;::::0;::::1;25981:21:45::0;26038:2;26018:18;;;26011:30;26077:24;26057:18;;;26050:52;26119:18;;13834:90:35::1;25797:346:45::0;13834:90:35::1;13964:1;13938:6:::0;13945:7:::1;13938:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;14014:5;13979:7;13987;13979:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:40;;-1:-1:-1;;13979:40:35::1;::::0;::::1;;::::0;;;::::1;::::0;;13588:517:::1;14125:7;14120:29;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;19996:25:45;;;14120:29:35;::::1;::::0;19984:2:45;19969:18;14120:29:35::1;19850:177:45::0;17221:126:35;17283:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17283:18:35;17320:20;17329:7;17338:1;17320:8;:20::i;9837:1336::-;9928:12;1531:13:2;:11;:13::i;:::-;9999:1:35::1;-1:-1:-1::0;;;;;9956:45:35::1;:6;9963:7;9956:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;9956:31:35::1;:45:::0;9952:108:::1;;10041:7;10023:26;;-1:-1:-1::0;;;10023:26:35::1;;;;;;;;:::i;9952:108::-;10094:1;10077:14;:18;10069:54;;;::::0;-1:-1:-1;;;10069:54:35;;18669:2:45;10069:54:35::1;::::0;::::1;18651:21:45::0;18708:2;18688:18;;;18681:30;18747:25;18727:18;;;18720:53;18790:18;;10069:54:35::1;18467:347:45::0;10069:54:35::1;10134:12;10149:6;10156:7;10149:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;10149:25:35;;::::1;;::::0;-1:-1:-1;10188:2:35::1;:36;;;;;;;;:::i;:::-;::::0;10184:915:::1;;10268:14;10243:6;10250:7;10243:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:39;10240:132;;;10333:7;10342:14;10309:48;;;;;;;;;;;;:::i;10240:132::-;10393:57;10402:7;10411:22;10435:14;10393:8;:57::i;:::-;10385:103;;;::::0;-1:-1:-1;;;10385:103:35;;27050:2:45;10385:103:35::1;::::0;::::1;27032:21:45::0;27089:2;27069:18;;;27062:30;27128:34;27108:18;;;27101:62;27199:3;27179:18;;;27172:31;27220:19;;10385:103:35::1;26848:397:45::0;10385:103:35::1;10528:14;10502:6;10509:7;10502:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;10184:915:35::1;::::0;-1:-1:-1;10184:915:35::1;;10577:33;10571:2;:39;;;;;;;;:::i;:::-;::::0;10567:532:::1;;10634:7;10642;10634:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;;:32:::1;::::0;;;;;;;;::::1;;:40;;:32:::0;:40:::1;10626:69;;;::::0;-1:-1:-1;;;10626:69:35;;27452:2:45;10626:69:35::1;::::0;::::1;27434:21:45::0;27491:2;27471:18;;;27464:30;27530:18;27510;;;27503:46;27566:18;;10626:69:35::1;27250:340:45::0;10626:69:35::1;10742:1;10717:6;10724:7;10717:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:26;10709:90;;;::::0;-1:-1:-1;;;10709:90:35;;27797:2:45;10709:90:35::1;::::0;::::1;27779:21:45::0;27836:2;27816:18;;;27809:30;27875:34;27855:18;;;27848:62;27946:21;27926:18;;;27919:49;27985:19;;10709:90:35::1;27595:415:45::0;10709:90:35::1;10821:57;10830:7;10839:22;10863:14;10821:8;:57::i;:::-;10813:107;;;::::0;-1:-1:-1;;;10813:107:35;;28217:2:45;10813:107:35::1;::::0;::::1;28199:21:45::0;28256:2;28236:18;;;28229:30;28295:34;28275:18;;;28268:62;28366:7;28346:18;;;28339:35;28391:19;;10813:107:35::1;28015:401:45::0;10813:107:35::1;10960:1;10934:6:::0;10941:7:::1;10934:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;11010:5;10975:7;10983;10975:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:40;;-1:-1:-1;;10975:40:35::1;::::0;::::1;;::::0;;;::::1;::::0;;10567:532:::1;11121:7;11114:31;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;19996:25:45;;;11114:31:35;::::1;::::0;19984:2:45;19969:18;11114:31:35::1;19850:177:45::0;7026:388:35;7243:16;1531:13:2;:11;:13::i;:::-;7278:4:35::1;:9;7288:12:::0;7302:15;7319:9;7330:7;7339:11;7352:5;7386:1:::1;7359:29;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7359:29:35::1;;;;;;;;;;;;;;;;;7390:16;7278:129;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7271:136:::0;7026:388;-1:-1:-1;;;;;;;;7026:388:35:o;8444:1044::-;8533:12;1531:13:2;:11;:13::i;:::-;8603:1:35::1;-1:-1:-1::0;;;;;8560:45:35::1;:6;8567:7;8560:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:31:::1;;::::0;-1:-1:-1;;;;;8560:31:35::1;:45:::0;8557:107:::1;;8645:7;8627:26;;-1:-1:-1::0;;;8627:26:35::1;;;;;;;;:::i;8557:107::-;8698:1;8681:14;:18;8673:54;;;::::0;-1:-1:-1;;;8673:54:35;;18669:2:45;8673:54:35::1;::::0;::::1;18651:21:45::0;18708:2;18688:18;;;18681:30;18747:25;18727:18;;;18720:53;18790:18;;8673:54:35::1;18467:347:45::0;8673:54:35::1;8738:12;8753:6;8760:7;8753:15;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25:::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;8753:25:35;;::::1;;::::0;-1:-1:-1;8792:2:35::1;:36;;;;;;;;:::i;:::-;::::0;8788:629:::1;;8852:55;8861:7;8870:20;8892:14;8852:8;:55::i;:::-;8844:85;;;::::0;-1:-1:-1;;;8844:85:35;;32291:2:45;8844:85:35::1;::::0;::::1;32273:21:45::0;32330:2;32310:18;;;32303:30;32369:19;32349:18;;;32342:47;32406:18;;8844:85:35::1;32089:341:45::0;8844:85:35::1;8969:14;8943:6;8950:7;8943:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;8788:629:35::1;::::0;-1:-1:-1;8788:629:35::1;;9018:33;9012:2;:39;;;;;;;;:::i;:::-;::::0;9008:409:::1;;9075:7;9083;9075:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;;::::1;;:41;9067:74;;;::::0;-1:-1:-1;;;9067:74:35;;32637:2:45;9067:74:35::1;::::0;::::1;32619:21:45::0;32676:2;32656:18;;;32649:30;32715:22;32695:18;;;32688:50;32755:18;;9067:74:35::1;32435:344:45::0;9067:74:35::1;9163:55;9172:7;9181:20;9203:14;9163:8;:55::i;:::-;9155:85;;;::::0;-1:-1:-1;;;9155:85:35;;32291:2:45;9155:85:35::1;::::0;::::1;32273:21:45::0;32330:2;32310:18;;;32303:30;32369:19;32349:18;;;32342:47;32406:18;;9155:85:35::1;32089:341:45::0;9155:85:35::1;9280:1;9254:6:::0;9261:7:::1;9254:15;;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;:27;;;;;;;:::i;:::-;;;;;;;;9330:4;9295:7;9303;9295:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;::::1;::::0;;;;;;;;:32:::1;::::0;;;;;;;:39;;-1:-1:-1;;9295:39:35::1;::::0;::::1;;::::0;;;::::1;::::0;;9008:409:::1;9436:7;9431:29;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;19996:25:45;;;9431:29:35;::::1;::::0;19984:2:45;19969:18;9431:29:35::1;19850:177:45::0;2543:215:2;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:2;::::1;2623:91;;2672:31;::::0;::::1;::::0;;2700:1:::1;2672:31;::::0;::::1;4671:74:45::0;4644:18;;2672:31:2::1;4525:226:45::0;2623:91:2::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:2;735:10:11;1855:23:2;1851:101;;1901:40;;;;;735:10:11;1901:40:2;;;4671:74:45;4644:18;;1901:40:2;4525:226:45;21229:216:35;21345:12;21376:62;21385:7;21394:15;21411:14;21435:1;21376:8;:62::i;:::-;21369:69;21229:216;-1:-1:-1;;;;21229:216:35:o;20201:281::-;20331:6;20327:149;20347:12;:19;20343:1;:23;20327:149;;;20450:12;20463:1;20450:15;;;;;;;;:::i;:::-;;;;;;;20387:18;20406:7;20387:27;;;;;;:::i;:::-;;;;;;;;;;;;;:60;20415:12;20428:1;20415:15;;;;;;;;:::i;:::-;;;;;;;:31;;;20387:60;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;20387:60:35;:78;;;;:60;;-1:-1:-1;;20387:78:35;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;20387:78:35;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20387:78:35;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20387:78:35;;;;;;;;;;;;-1:-1:-1;;20387:78:35;;;;;;;;;;20368:3;;;;:::i;:::-;;;;20327:149;;;;20201:281;;:::o;20709:180::-;20802:12;20833:49;20842:7;20851:15;20868:1;20879;20833:8;:49::i;:::-;20826:56;20709:180;-1:-1:-1;;;20709:180:35:o;22129:911::-;22263:4;22284:18;22303:7;22284:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;22312:15;22284:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;22284:44:35;:54;;;;;22279:98;;-1:-1:-1;22361:5:35;22354:12;;22279:98;22392:6;22387:625;22408:18;22427:7;22408:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;22436:15;22408:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;22408:44:35;:63;;:70;22404:74;;22387:625;;;22499:23;22559:18;22578:7;22559:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;22587:15;22559:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:63;;22623:1;22559:66;;;;;;;;:::i;:::-;;;;;;;;22542:84;;;;;;;;:::i;:::-;;;;;;;;;;;;;22532:95;;;;;;22499:129;;22643:26;22672:164;22692:16;22710:125;22742:18;22761:7;22742:27;;;;;;:::i;:::-;;;;;;;;;;;;;:44;22770:15;22742:44;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:54;;22797:1;22742:57;;;;;;;;:::i;:::-;;;;;;;;22710:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22801:7;22810:8;22820:14;22710:31;:125::i;:::-;22672:19;:164::i;:::-;22643:193;;22852:16;22874:6;22881:7;22874:15;;;;;;:::i;:::-;;;;;;;;;;;;;;:31;;;-1:-1:-1;;;;;22874:31:35;;:51;;22911:13;;22874:51;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22851:74;;;22944:11;22939:63;;22982:5;22975:12;;;;;;;;22939:63;22485:527;;;22480:3;;;;;:::i;:::-;;;;22387:625;;;-1:-1:-1;23029:4:35;;22129:911;-1:-1:-1;;;;;22129:911:35:o;2912:187:2:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;3020:17:2;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;16633:276:35:-;16701:9;16696:207;16720:3;:10;16716:14;;16696:207;;;16755:25;16769:3;16773:1;16769:6;;;;;;;;:::i;:::-;;;;;;;;16755:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16777:2;16755:13;:25::i;:::-;16751:142;;;16809:3;16813:10;;:14;;16826:1;;16813:14;:::i;:::-;16809:19;;;;;;;;:::i;:::-;;;;;;;;16800:3;16804:1;16800:6;;;;;;;;:::i;:::-;;;;;;;;:28;;;;;;:::i;:::-;;16846:3;:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;16696:207;16633:276;:::o;16751:142::-;16732:3;;;;:::i;:::-;;;;16696:207;;;;16633:276;:::o;24121:1430::-;24296:14;24321:28;24364:9;:16;24352:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24321:60;;24396:6;24391:1124;24412:9;:16;24408:1;:20;24391:1124;;;24469:31;24453:9;24463:1;24453:12;;;;;;;;:::i;:::-;;;;;;;:47;;;;;;;;:::i;:::-;;24449:1056;;24539:25;;;24558:4;24539:25;;;4671:74:45;4644:18;24539:25:35;;;;;;;;;;;;;24520:13;24534:1;24520:16;;;;;;;;:::i;:::-;;;;;;:44;;;;24449:1056;;;24605:32;24589:9;24599:1;24589:12;;;;;;;;:::i;:::-;;;;;;;:48;;;;;;;;:::i;:::-;;24585:920;;24687:7;24676:19;;;;;;;;:::i;24585:920::-;24736:31;24720:9;24730:1;24720:12;;;;;;;;:::i;:::-;;;;;;;:47;;;;;;;;:::i;:::-;;24716:789;;24806:26;;;;;;19996:25:45;;;19969:18;24806:26:35;19850:177:45;24716:789:35;24873:30;24857:9;24867:1;24857:12;;;;;;;;:::i;:::-;;;;;;;:46;;;;;;;;:::i;:::-;;24853:652;;24953:6;24960:7;24953:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:21;;;-1:-1:-1;;;;;24953:21:35;24942:33;;;4671:74:45;4644:18;24942:33:35;4525:226:45;24853:652:35;25016:40;25000:9;25010:1;25000:12;;;;;;;;:::i;:::-;;;;;;;:56;;;;;;;;:::i;:::-;;24996:509;;25106:6;25113:7;25106:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:31;;;-1:-1:-1;;;;;25106:31:35;25095:43;;;4671:74:45;4644:18;25095:43:35;4525:226:45;24996:509:35;25179:33;25163:9;25173:1;25163:12;;;;;;;;:::i;:::-;;;;;;;:49;;;;;;;;:::i;:::-;;25159:346;;25251:20;;;-1:-1:-1;;;;;4689:55:45;;25251:20:35;;;4671:74:45;4644:18;25251:20:35;4525:226:45;25159:346:35;25312:42;25296:9;25306:1;25296:12;;;;;;;;:::i;:::-;;;;;;;:58;;;;;;;;:::i;:::-;;25292:213;;25393:26;;;;;;19996:25:45;;;19969:18;25393:26:35;19850:177:45;25292:213:35;25458:32;;-1:-1:-1;;;25458:32:35;;36083:2:45;25458:32:35;;;36065:21:45;36122:2;36102:18;;;36095:30;36161:24;36141:18;;;36134:52;36203:18;;25458:32:35;35881:346:45;25292:213:35;24430:3;;;;:::i;:::-;;;;24391:1124;;;-1:-1:-1;25531:13:35;24121:1430;-1:-1:-1;;;;;24121:1430:35:o;23310:382::-;23471:34;;;36383:66:45;36371:79;;23471:34:35;;;36359:92:45;23471:34:35;;;;;;;;;36467:11:45;;;;23471:34:35;;;23520:9;23515:141;23539:13;:20;23535:1;:24;23515:141;;;23613:13;23628;23642:1;23628:16;;;;;;;;:::i;:::-;;;;;;;23596:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23580:65;;23561:3;;;;;:::i;:::-;;;;23515:141;;2914:182:12;2986:4;3034:1;3028:15;3015:1;3009:15;:34;:80;;;;-1:-1:-1;;3070:19:12;;;;;;;3047;;;;;;;;;;:42;;2914:182::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:184:45:-;-1:-1:-1;;;63:1:45;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:253;275:2;269:9;317:4;305:17;;352:18;337:34;;373:22;;;334:62;331:88;;;399:18;;:::i;:::-;435:2;428:22;203:253;:::o;461:275::-;532:2;526:9;597:2;578:13;;-1:-1:-1;;574:27:45;562:40;;632:18;617:34;;653:22;;;614:62;611:88;;;679:18;;:::i;:::-;715:2;708:22;461:275;;-1:-1:-1;461:275:45:o;741:531::-;784:5;837:3;830:4;822:6;818:17;814:27;804:55;;855:1;852;845:12;804:55;891:6;878:20;917:18;913:2;910:26;907:52;;;939:18;;:::i;:::-;983:55;1026:2;1007:13;;-1:-1:-1;;1003:27:45;1032:4;999:38;983:55;:::i;:::-;1063:2;1054:7;1047:19;1109:3;1102:4;1097:2;1089:6;1085:15;1081:26;1078:35;1075:55;;;1126:1;1123;1116:12;1075:55;1191:2;1184:4;1176:6;1172:17;1165:4;1156:7;1152:18;1139:55;1239:1;1214:16;;;1232:4;1210:27;1203:38;;;;1218:7;741:531;-1:-1:-1;;;741:531:45:o;1277:322::-;1346:6;1399:2;1387:9;1378:7;1374:23;1370:32;1367:52;;;1415:1;1412;1405:12;1367:52;1455:9;1442:23;1488:18;1480:6;1477:30;1474:50;;;1520:1;1517;1510:12;1474:50;1543;1585:7;1576:6;1565:9;1561:22;1543:50;:::i;1604:250::-;1689:1;1699:113;1713:6;1710:1;1707:13;1699:113;;;1789:11;;;1783:18;1770:11;;;1763:39;1735:2;1728:10;1699:113;;;-1:-1:-1;;1846:1:45;1828:16;;1821:27;1604:250::o;1859:271::-;1901:3;1939:5;1933:12;1966:6;1961:3;1954:19;1982:76;2051:6;2044:4;2039:3;2035:14;2028:4;2021:5;2017:16;1982:76;:::i;:::-;2112:2;2091:15;-1:-1:-1;;2087:29:45;2078:39;;;;2119:4;2074:50;;1859:271;-1:-1:-1;;1859:271:45:o;2267:184::-;-1:-1:-1;;;2316:1:45;2309:88;2416:4;2413:1;2406:15;2440:4;2437:1;2430:15;2456:140;2537:1;2530:5;2527:12;2517:46;;2543:18;;:::i;:::-;2572;;2456:140::o;2601:147::-;2689:1;2682:5;2679:12;2669:46;;2695:18;;:::i;2753:1084::-;3134:4;3163:3;3193:2;3182:9;3175:21;3219:45;3260:2;3249:9;3245:18;3237:6;3219:45;:::i;:::-;3205:59;;-1:-1:-1;;;;;3373:2:45;3365:6;3361:15;3356:2;3345:9;3341:18;3334:43;3386:53;3435:2;3424:9;3420:18;3412:6;3386:53;:::i;:::-;3487:9;3479:6;3475:22;3470:2;3459:9;3455:18;3448:50;3521:33;3547:6;3539;3521:33;:::i;:::-;3507:47;;3603:9;3595:6;3591:22;3585:3;3574:9;3570:19;3563:51;3631:33;3657:6;3649;3631:33;:::i;:::-;3623:41;;3713:2;3705:6;3701:15;3695:3;3684:9;3680:19;3673:44;;;3754:6;3748:3;3737:9;3733:19;3726:35;3770:61;3826:3;3815:9;3811:19;3803:6;3770:61;:::i;:::-;2753:1084;;;;;;;;;;;:::o;3842:390::-;3920:6;3928;3981:2;3969:9;3960:7;3956:23;3952:32;3949:52;;;3997:1;3994;3987:12;3949:52;4037:9;4024:23;4070:18;4062:6;4059:30;4056:50;;;4102:1;4099;4092:12;4056:50;4125;4167:7;4158:6;4147:9;4143:22;4125:50;:::i;:::-;4115:60;4222:2;4207:18;;;;4194:32;;-1:-1:-1;;;;3842:390:45:o;4756:196::-;4824:20;;-1:-1:-1;;;;;4873:54:45;;4863:65;;4853:93;;4942:1;4939;4932:12;4957:808;5054:6;5062;5070;5078;5086;5139:3;5127:9;5118:7;5114:23;5110:33;5107:53;;;5156:1;5153;5146:12;5107:53;5179:29;5198:9;5179:29;:::i;:::-;5169:39;;5227:38;5261:2;5250:9;5246:18;5227:38;:::i;:::-;5217:48;;5312:2;5301:9;5297:18;5284:32;5274:42;;5367:2;5356:9;5352:18;5339:32;5390:18;5431:2;5423:6;5420:14;5417:34;;;5447:1;5444;5437:12;5417:34;5485:6;5474:9;5470:22;5460:32;;5530:7;5523:4;5519:2;5515:13;5511:27;5501:55;;5552:1;5549;5542:12;5501:55;5592:2;5579:16;5618:2;5610:6;5607:14;5604:34;;;5634:1;5631;5624:12;5604:34;5679:7;5674:2;5665:6;5661:2;5657:15;5653:24;5650:37;5647:57;;;5700:1;5697;5690:12;5647:57;4957:808;;;;-1:-1:-1;4957:808:45;;-1:-1:-1;5731:2:45;5723:11;;5753:6;4957:808;-1:-1:-1;;;4957:808:45:o;6023:1338::-;6200:2;6189:9;6182:21;6163:4;6238:6;6232:13;6264:6;6306:2;6301;6290:9;6286:18;6279:30;6332:52;6379:3;6368:9;6364:19;6350:12;6332:52;:::i;:::-;6318:66;;6433:2;6425:6;6421:15;6415:22;6446:54;6496:2;6485:9;6481:18;6465:14;-1:-1:-1;;;;;2201:54:45;2189:67;;2135:127;6446:54;;6549:2;6541:6;6537:15;6531:22;6562:61;6619:2;6608:9;6604:18;6588:14;6562:61;:::i;:::-;;6672:2;6664:6;6660:15;6654:22;6699:2;6695:7;6767:2;6755:9;6747:6;6743:22;6739:31;6733:3;6722:9;6718:19;6711:60;6794:41;6828:6;6812:14;6794:41;:::i;:::-;6780:55;;6884:3;6876:6;6872:16;6866:23;6844:45;;6954:2;6942:9;6934:6;6930:22;6926:31;6920:3;6909:9;6905:19;6898:60;;6981:41;7015:6;6999:14;6981:41;:::i;:::-;6967:55;;;7071:3;7063:6;7059:16;7053:23;7085:55;7135:3;7124:9;7120:19;7104:14;-1:-1:-1;;;;;2201:54:45;2189:67;;2135:127;7085:55;;7195:3;7187:6;7183:16;7177:23;7171:3;7160:9;7156:19;7149:52;7250:3;7242:6;7238:16;7232:23;7264:68;7328:2;7317:9;7313:18;7297:14;7264:68;:::i;:::-;-1:-1:-1;7349:6:45;;6023:1338;-1:-1:-1;;;;6023:1338:45:o;7366:150::-;7441:20;;7490:1;7480:12;;7470:40;;7506:1;7503;7496:12;7521:203;7601:4;7634:18;7626:6;7623:30;7620:56;;;7656:18;;:::i;:::-;-1:-1:-1;7701:1:45;7697:14;7713:4;7693:25;;7521:203::o;7729:156::-;7810:20;;7859:1;7849:12;;7839:40;;7875:1;7872;7865:12;7890:1948;7976:5;8029:3;8022:4;8014:6;8010:17;8006:27;7996:55;;8047:1;8044;8037:12;7996:55;8083:6;8070:20;8109:4;8133:80;8149:63;8209:2;8149:63;:::i;:::-;8133:80;:::i;:::-;8247:15;;;8309:1;8349:11;;;8337:24;;8333:33;;;8278:12;;;;8235:3;8378:15;;;8375:35;;;8406:1;8403;8396:12;8375:35;8442:2;8434:6;8430:15;8454:1355;8470:6;8465:3;8462:15;8454:1355;;;8556:3;8543:17;8592:18;8579:11;8576:35;8573:125;;;8652:1;8681:2;8677;8670:14;8573:125;8721:24;;8780:2;8772:11;;8768:21;-1:-1:-1;8758:119:45;;8831:1;8860:2;8856;8849:14;8758:119;8921:2;8917;8913:11;8900:25;8948:2;8976:80;8992:63;9052:2;8992:63;:::i;8976:80::-;9100:17;;;9194:11;;;9186:20;;9182:29;;;9139:14;;;;9227:17;;;9224:107;;;9285:1;9314:2;9310;9303:14;9224:107;9357:11;;;;9381:355;9399:8;9392:5;9389:19;9381:355;;;9493:5;9480:19;9467:32;;9536:1;9529:5;9526:12;9516:129;;9589:1;9623:3;9618;9611:16;9516:129;9662:20;;;9420:14;;;;9708;;;;9381:355;;;9749:18;;-1:-1:-1;;;9787:12:45;;;;-1:-1:-1;8487:12:45;;8454:1355;;;-1:-1:-1;9827:5:45;;7890:1948;-1:-1:-1;;;;;;;7890:1948:45:o;9843:118::-;9929:5;9922:13;9915:21;9908:5;9905:32;9895:60;;9951:1;9948;9941:12;9966:128;10031:20;;10060:28;10031:20;10060:28;:::i;10099:2283::-;10173:5;10226:3;10219:4;10211:6;10207:17;10203:27;10193:55;;10244:1;10241;10234:12;10193:55;10268:98;10284:81;10357:6;10344:20;10284:81;:::i;10268:98::-;10412:20;;10400:33;;;10458:4;10449:14;;;;10388:3;10506:1;10502:28;10490:41;;10486:52;10550:15;;;10547:35;;;10578:1;10575;10568:12;10547:35;10614:4;10606:6;10602:17;10628:1725;10644:6;10639:3;10636:15;10628:1725;;;10710:18;10766:2;10760:3;10747:17;10744:25;10741:45;;;10782:1;10779;10772:12;10741:45;10821:17;;10809:30;;10887:4;10863:12;;;-1:-1:-1;;10859:26:45;10855:37;10852:57;;;10905:1;10902;10895:12;10852:57;10935:22;;:::i;:::-;10984:46;11024:4;11020:2;11016:13;10984:46;:::i;:::-;10977:5;10970:61;11081:2;11077;11073:11;11060:25;11114:2;11104:8;11101:16;11098:36;;;11130:1;11127;11120:12;11098:36;11157:17;;11209:2;11201:11;;11197:21;-1:-1:-1;11187:49:45;;11232:1;11229;11222:12;11187:49;11280:4;11276:2;11272:13;11259:27;11312:80;11328:63;11388:2;11328:63;:::i;11312:80::-;11436:17;;;11536:1;11532:10;;;;11524:19;;11545:2;11520:28;;11486:4;11475:16;;;11564:17;;;11561:37;;;11594:1;11591;11584:12;11561:37;11632:2;11628;11624:11;11648:284;11666:8;11659:5;11656:19;11648:284;;;11763:2;11755:5;11742:19;11739:27;11736:47;;;11779:1;11776;11769:12;11736:47;11814:61;11871:3;11866:2;11857:5;11844:19;11840:2;11836:28;11832:37;11814:61;:::i;:::-;11800:76;;11913:4;11902:16;;;;11687;11648:284;;;-1:-1:-1;11963:4:45;11952:16;;11945:31;-1:-1:-1;;;12026:2:45;12018:11;;12005:25;12046:16;;;12043:36;;;12075:1;12072;12065:12;12043:36;12115:95;12206:3;12199:4;12188:8;12184:2;12180:17;12176:28;12115:95;:::i;:::-;12110:2;12103:5;12099:14;12092:119;;12247:30;12271:4;12267:2;12263:13;12247:30;:::i;:::-;12242:2;12231:14;;12224:54;12291:18;;-1:-1:-1;;12338:4:45;12329:14;;;;10661;10628:1725;;;-1:-1:-1;12371:5:45;;10099:2283;-1:-1:-1;;;;;10099:2283:45:o;12387:157::-;12469:20;;12518:1;12508:12;;12498:40;;12534:1;12531;12524:12;12549:1387;12802:6;12810;12818;12826;12834;12842;12850;12858;12911:3;12899:9;12890:7;12886:23;12882:33;12879:53;;;12928:1;12925;12918:12;12879:53;12968:9;12955:23;12997:18;13038:2;13030:6;13027:14;13024:34;;;13054:1;13051;13044:12;13024:34;13077:50;13119:7;13110:6;13099:9;13095:22;13077:50;:::i;:::-;13067:60;;13146:38;13180:2;13169:9;13165:18;13146:38;:::i;:::-;13136:48;;13203:45;13244:2;13233:9;13229:18;13203:45;:::i;:::-;13193:55;;13301:2;13290:9;13286:18;13273:32;13257:48;;13330:2;13320:8;13317:16;13314:36;;;13346:1;13343;13336:12;13314:36;13369:52;13413:7;13402:8;13391:9;13387:24;13369:52;:::i;:::-;13359:62;;13474:3;13463:9;13459:19;13446:33;13430:49;;13504:2;13494:8;13491:16;13488:36;;;13520:1;13517;13510:12;13488:36;13543:52;13587:7;13576:8;13565:9;13561:24;13543:52;:::i;:::-;13533:62;;13614:39;13648:3;13637:9;13633:19;13614:39;:::i;:::-;13604:49;;13706:3;13695:9;13691:19;13678:33;13662:49;;13736:2;13726:8;13723:16;13720:36;;;13752:1;13749;13742:12;13720:36;;13775:83;13850:7;13839:8;13828:9;13824:24;13775:83;:::i;:::-;13765:93;;;13877:53;13925:3;13914:9;13910:19;13877:53;:::i;:::-;13867:63;;12549:1387;;;;;;;;;;;:::o;13941:464::-;14028:6;14036;14044;14097:2;14085:9;14076:7;14072:23;14068:32;14065:52;;;14113:1;14110;14103:12;14065:52;14153:9;14140:23;14186:18;14178:6;14175:30;14172:50;;;14218:1;14215;14208:12;14172:50;14241;14283:7;14274:6;14263:9;14259:22;14241:50;:::i;:::-;14231:60;;;14310:38;14344:2;14333:9;14329:18;14310:38;:::i;:::-;14300:48;;14395:2;14384:9;14380:18;14367:32;14357:42;;13941:464;;;;;:::o;14410:616::-;14462:3;14500:5;14494:12;14527:6;14522:3;14515:19;14553:4;14594:2;14589:3;14585:12;14619:11;14646;14639:18;;14696:6;14693:1;14689:14;14682:5;14678:26;14666:38;;14738:2;14731:5;14727:14;14759:1;14769:231;14783:6;14780:1;14777:13;14769:231;;;14854:5;14848:4;14844:16;14839:3;14832:29;14882:38;14915:4;14906:6;14900:13;14882:38;:::i;:::-;14978:12;;;;14874:46;-1:-1:-1;14943:15:45;;;;14805:1;14798:9;14769:231;;;-1:-1:-1;15016:4:45;;14410:616;-1:-1:-1;;;;;;;14410:616:45:o;15031:280::-;15230:2;15219:9;15212:21;15193:4;15250:55;15301:2;15290:9;15286:18;15278:6;15250:55;:::i;15316:1101::-;15496:6;15504;15512;15520;15528;15536;15544;15597:3;15585:9;15576:7;15572:23;15568:33;15565:53;;;15614:1;15611;15604:12;15565:53;15654:9;15641:23;15683:18;15724:2;15716:6;15713:14;15710:34;;;15740:1;15737;15730:12;15710:34;15763:50;15805:7;15796:6;15785:9;15781:22;15763:50;:::i;:::-;15753:60;;15832:38;15866:2;15855:9;15851:18;15832:38;:::i;:::-;15822:48;;15889:45;15930:2;15919:9;15915:18;15889:45;:::i;:::-;15879:55;;15987:2;15976:9;15972:18;15959:32;15943:48;;16016:2;16006:8;16003:16;16000:36;;;16032:1;16029;16022:12;16000:36;16055:52;16099:7;16088:8;16077:9;16073:24;16055:52;:::i;:::-;16045:62;;16160:3;16149:9;16145:19;16132:33;16116:49;;16190:2;16180:8;16177:16;16174:36;;;16206:1;16203;16196:12;16174:36;;16229:52;16273:7;16262:8;16251:9;16247:24;16229:52;:::i;:::-;16219:62;;;16300:39;16334:3;16323:9;16319:19;16300:39;:::i;:::-;16290:49;;16358:53;16406:3;16395:9;16391:19;16358:53;:::i;:::-;16348:63;;15316:1101;;;;;;;;;;:::o;16422:430::-;16521:6;16529;16582:2;16570:9;16561:7;16557:23;16553:32;16550:52;;;16598:1;16595;16588:12;16550:52;16638:9;16625:23;16671:18;16663:6;16660:30;16657:50;;;16703:1;16700;16693:12;16657:50;16726;16768:7;16759:6;16748:9;16744:22;16726:50;:::i;:::-;16716:60;;;16795:51;16842:2;16831:9;16827:18;16795:51;:::i;:::-;16785:61;;16422:430;;;;;:::o;16857:146::-;16944:1;16937:5;16934:12;16924:46;;16950:18;;:::i;17008:302::-;17183:2;17168:18;;17195:50;17172:9;17227:6;17195:50;:::i;:::-;17295:6;17288:14;17281:22;17276:2;17265:9;17261:18;17254:50;17008:302;;;;;:::o;17315:186::-;17374:6;17427:2;17415:9;17406:7;17402:23;17398:32;17395:52;;;17443:1;17440;17433:12;17395:52;17466:29;17485:9;17466:29;:::i;17506:437::-;17585:1;17581:12;;;;17628;;;17649:61;;17703:4;17695:6;17691:17;17681:27;;17649:61;17756:2;17748:6;17745:14;17725:18;17722:38;17719:218;;-1:-1:-1;;;17790:1:45;17783:88;17894:4;17891:1;17884:15;17922:4;17919:1;17912:15;17719:218;;17506:437;;;:::o;17948:289::-;18079:3;18117:6;18111:13;18133:66;18192:6;18187:3;18180:4;18172:6;18168:17;18133:66;:::i;:::-;18215:16;;;;;17948:289;-1:-1:-1;;17948:289:45:o;18242:220::-;18391:2;18380:9;18373:21;18354:4;18411:45;18452:2;18441:9;18437:18;18429:6;18411:45;:::i;19531:184::-;-1:-1:-1;;;19580:1:45;19573:88;19680:4;19677:1;19670:15;19704:4;19701:1;19694:15;19720:125;19785:9;;;19806:10;;;19803:36;;;19819:18;;:::i;20587:545::-;20689:2;20684:3;20681:11;20678:448;;;20725:1;20750:5;20746:2;20739:17;20795:4;20791:2;20781:19;20865:2;20853:10;20849:19;20846:1;20842:27;20836:4;20832:38;20901:4;20889:10;20886:20;20883:47;;;-1:-1:-1;20924:4:45;20883:47;20979:2;20974:3;20970:12;20967:1;20963:20;20957:4;20953:31;20943:41;;21034:82;21052:2;21045:5;21042:13;21034:82;;;21097:17;;;21078:1;21067:13;21034:82;;;21038:3;;;20587:545;;;:::o;21308:1352::-;21434:3;21428:10;21461:18;21453:6;21450:30;21447:56;;;21483:18;;:::i;:::-;21512:97;21602:6;21562:38;21594:4;21588:11;21562:38;:::i;:::-;21556:4;21512:97;:::i;:::-;21664:4;;21728:2;21717:14;;21745:1;21740:663;;;;22447:1;22464:6;22461:89;;;-1:-1:-1;22516:19:45;;;22510:26;22461:89;-1:-1:-1;;21265:1:45;21261:11;;;21257:24;21253:29;21243:40;21289:1;21285:11;;;21240:57;22563:81;;21710:944;;21740:663;20534:1;20527:14;;;20571:4;20558:18;;-1:-1:-1;;21776:20:45;;;21894:236;21908:7;21905:1;21902:14;21894:236;;;21997:19;;;21991:26;21976:42;;22089:27;;;;22057:1;22045:14;;;;21924:19;;21894:236;;;21898:3;22158:6;22149:7;22146:19;22143:201;;;22219:19;;;22213:26;-1:-1:-1;;22302:1:45;22298:14;;;22314:3;22294:24;22290:37;22286:42;22271:58;22256:74;;22143:201;-1:-1:-1;;;;;22390:1:45;22374:14;;;22370:22;22357:36;;-1:-1:-1;21308:1352:45:o;22665:546::-;22911:3;22900:9;22893:22;22874:4;22932:46;22973:3;22962:9;22958:19;22950:6;22932:46;:::i;:::-;22924:54;;-1:-1:-1;;;;;23087:2:45;23079:6;23075:15;23070:2;23059:9;23055:18;23048:43;23100:53;23149:2;23138:9;23134:18;23126:6;23100:53;:::i;:::-;23201:2;23193:6;23189:15;23184:2;23173:9;23169:18;23162:43;;22665:546;;;;;;;:::o;23930:128::-;23997:9;;;24018:11;;;24015:37;;;24032:18;;:::i;26552:291::-;26729:2;26718:9;26711:21;26692:4;26749:45;26790:2;26779:9;26775:18;26767:6;26749:45;:::i;:::-;26741:53;;26830:6;26825:2;26814:9;26810:18;26803:34;26552:291;;;;;:::o;28421:3413::-;28967:3;28956:9;28949:22;28930:4;28994:46;29035:3;29024:9;29020:19;29012:6;28994:46;:::i;:::-;-1:-1:-1;;;;;29149:2:45;29141:6;29137:15;29132:2;29121:9;29117:18;29110:43;29162:53;29211:2;29200:9;29196:18;29188:6;29162:53;:::i;:::-;29263:9;29255:6;29251:22;29246:2;29235:9;29231:18;29224:50;29297:33;29323:6;29315;29297:33;:::i;:::-;29283:47;;29379:9;29371:6;29367:22;29361:3;29350:9;29346:19;29339:51;29413:33;29439:6;29431;29413:33;:::i;:::-;29399:47;;29495:2;29487:6;29483:15;29477:3;29466:9;29462:19;29455:44;;29548:9;29540:6;29536:22;29530:3;29519:9;29515:19;29508:51;29579:6;29614;29608:13;29645:6;29637;29630:22;29680:2;29672:6;29668:15;29661:22;;29739:2;29729:6;29726:1;29722:14;29714:6;29710:27;29706:36;29777:2;29769:6;29765:15;29798:1;29808:1927;29822:6;29819:1;29816:13;29808:1927;;;29885:2;29881:7;29938:2;29929:6;29921;29917:19;29913:28;29908:3;29901:41;29971:6;29965:13;29991:50;30034:6;30029:2;30023:9;29991:50;:::i;:::-;30088:2;30084;30080:11;30074:18;30129:3;30124:2;30116:6;30112:15;30105:28;30160:59;30214:3;30206:6;30202:16;30188:12;30160:59;:::i;:::-;30146:73;;30268:2;30264;30260:11;30254:18;30321:6;30313;30309:19;30304:2;30296:6;30292:15;30285:44;30355:6;30396:14;30390:21;30439:8;30431:6;30424:24;30482:2;30474:6;30470:15;30461:24;;30547:2;30535:8;30532:1;30528:16;30520:6;30516:29;30512:38;30599:2;30583:14;30579:23;30563:39;;30626:1;30640:872;30656:8;30651:3;30648:17;30640:872;;;30737:19;;;30733:28;;30719:43;;30789:15;;30873:9;;30899:24;;;30961:2;30997:11;;;;30949:15;;;31036:1;31054:326;31070:8;31065:3;31062:17;31054:326;;;31157:8;31151:15;31204:1;31200:2;31197:9;31187:43;;31210:18;;:::i;:::-;31251:17;;31309:2;31345:17;;;;31298:14;;;;31098:1;31089:11;31054:326;;;-1:-1:-1;;31455:2:45;31441:17;;;;31484:14;;;;;31407:5;-1:-1:-1;;30684:1:45;30675:11;30640:872;;;30644:3;31561:2;31557;31553:11;31547:18;31525:40;;31578:48;31622:2;31614:6;31610:15;31594:14;4307:13;4300:21;4288:34;;4237:91;31578:48;31649:6;31639:16;;;;;;;;;31690:2;31682:6;31678:15;31668:25;;31722:2;31717:3;31713:12;31706:19;;29844:1;29841;29837:9;29832:14;;29808:1927;;;29812:3;;31752:6;31744:14;;;;;;31767:61;31823:3;31812:9;31808:19;31800:6;31767:61;:::i;31839:245::-;31906:6;31959:2;31947:9;31938:7;31934:23;31930:32;31927:52;;;31975:1;31972;31965:12;31927:52;32007:9;32001:16;32026:28;32048:5;32026:28;:::i;32784:184::-;-1:-1:-1;;;32833:1:45;32826:88;32933:4;32930:1;32923:15;32957:4;32954:1;32947:15;32973:135;33012:3;33033:17;;;33030:43;;33053:18;;:::i;:::-;-1:-1:-1;33100:1:45;33089:13;;32973:135::o;33113:842::-;33241:3;33270:1;33303:6;33297:13;33333:36;33359:9;33333:36;:::i;:::-;33388:1;33405:18;;;33432:133;;;;33579:1;33574:356;;;;33398:532;;33432:133;-1:-1:-1;;33465:24:45;;33453:37;;33538:14;;33531:22;33519:35;;33510:45;;;-1:-1:-1;33432:133:45;;33574:356;33605:6;33602:1;33595:17;33635:4;33680:2;33677:1;33667:16;33705:1;33719:165;33733:6;33730:1;33727:13;33719:165;;;33811:14;;33798:11;;;33791:35;33854:16;;;;33748:10;;33719:165;;;33723:3;;;33913:6;33908:3;33904:16;33897:23;;33398:532;-1:-1:-1;33946:3:45;;33113:842;-1:-1:-1;;;;;;33113:842:45:o;34252:1435::-;34371:3;34365:4;34362:13;34359:26;;34378:5;;34252:1435::o;34359:26::-;34408:37;34440:3;34434:10;34408:37;:::i;:::-;34468:18;34460:6;34457:30;34454:56;;;34490:18;;:::i;:::-;34519:97;34609:6;34569:38;34601:4;34595:11;34569:38;:::i;34519:97::-;34642:1;34670:2;34662:6;34659:14;34687:1;34682:748;;;;35474:1;35491:6;35488:89;;;-1:-1:-1;35543:19:45;;;35537:26;35488:89;-1:-1:-1;;21265:1:45;21261:11;;;21257:24;21253:29;21243:40;21289:1;21285:11;;;21240:57;35590:81;;34652:1029;;34682:748;20534:1;20527:14;;;20571:4;20558:18;;-1:-1:-1;;34718:20:45;;;20534:1;20527:14;;;20571:4;20558:18;;34882:9;34904:251;34918:7;34915:1;34912:14;34904:251;;;35000:21;;;34994:28;34979:44;;35050:1;35123:18;;;;35078:15;;;;34941:4;34934:12;34904:251;;;34908:3;35183:6;35174:7;35171:19;35168:203;;;35244:21;;;35238:28;-1:-1:-1;;35329:1:45;35325:14;;;35341:3;35321:24;35317:37;35313:42;35298:58;35283:74;;35168:203;;;;35417:1;35408:6;35405:1;35401:14;35397:22;35391:4;35384:36;34652:1029;;;;34252:1435;;:::o;35692:184::-;-1:-1:-1;;;35741:1:45;35734:88;35841:4;35838:1;35831:15;35865:4;35862:1;35855:15;36489:492;36664:3;36702:6;36696:13;36718:66;36777:6;36772:3;36765:4;36757:6;36753:17;36718:66;:::i;:::-;36847:13;;36806:16;;;;36869:70;36847:13;36806:16;36916:4;36904:17;;36869:70;:::i;:::-;36955:20;;36489:492;-1:-1:-1;;;;36489:492:45:o","linkReferences":{}},"methodIdentifiers":{"NFT_IDs(string,uint256)":"19d09bc9","assign(string,address,uint256)":"4534ba17","bridge_address()":"1255c189","burn(string,uint256)":"b48272cc","getAllAssetsIDs()":"5137b8a7","getToken(string)":"c1733f68","getToken(string,uint256)":"324980b5","lock(string,uint256)":"e1efb596","mint(string,uint256)":"056b01ce","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","renounceOwnership()":"715018a6","tokens(string)":"04c2320b","tokensInteractions(string,uint8)":"ea8f547f","transferOwnership(address)":"f2fde38b","unlock(string,uint256)":"d9cf884c","unwrap(string)":"a1bc17c5","wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)":"433f60ac","wrap(string,address,uint8,string,string,address,uint8)":"dbf15639"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsuficientAmountLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenAlreadyWrapped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"TokenNotSupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approve\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver_account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Assign\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Unlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"NFT_IDs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"receiver_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"assign\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"internalType\":\"struct Token\",\"name\":\"token\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"getToken\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"internalType\":\"struct Token\",\"name\":\"token\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"tokens\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"enum InteractionType\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"tokensInteractions\",\"outputs\":[{\"internalType\":\"enum InteractionType\",\"name\":\"interactionType\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"assetAttribute\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum InteractionType\",\"name\":\"interactionType\",\"type\":\"uint8\"},{\"internalType\":\"string[]\",\"name\":\"functionsSignature\",\"type\":\"string[]\"},{\"internalType\":\"enum AssetParameterIdentifier[][]\",\"name\":\"variables\",\"type\":\"uint8[][]\"},{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"}],\"internalType\":\"struct InteractionSignature[]\",\"name\":\"interactions\",\"type\":\"tuple[]\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"wrapSuccess\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"referenceId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"enum ERCTokenStandard\",\"name\":\"ercTokenStandard\",\"type\":\"uint8\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"wrapSuccess\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"assign(string,address,uint256)\":{\"params\":{\"assetAttribute\":\"The amount of tokens to be assigned, for fungible tokens, or the uniqueDescriptor of the token to be assigned, for non-fungible tokens.\",\"receiver_account\":\"The address of the receiver account.\",\"tokenId\":\"The unique identifier of the token.\"}},\"burn(string,uint256)\":{\"params\":{\"assetAttribute\":\"The amount of tokens to be burned, for fungible tokens, or the uniqueDescriptor of the token to burn, for non fungible tokens.\",\"tokenId\":\"The unique identifier of the token.\"}},\"constructor\":{\"params\":{\"_bridge_address\":\"The address of the bridge contract. This needs to be changed, maybe the owner should not be a bridge but other account.\"}},\"getAllAssetsIDs()\":{\"returns\":{\"_0\":\"An array of token IDs.\"}},\"getToken(string)\":{\"params\":{\"tokenId\":\"The unique identifier of the token.\"},\"returns\":{\"token\":\"the token with the given token ID.\"}},\"getToken(string,uint256)\":{\"params\":{\"assetAttribute\":\"The asset attribute of the token.\",\"tokenId\":\"The unique identifier of the token.\"},\"returns\":{\"token\":\"the token with the given token ID and asset attribute.\"}},\"lock(string,uint256)\":{\"params\":{\"assetAttribute\":\"The attribute related to the asset to be locked. An amount for fungible tokens, or a unique descriptor for non-fungible tokens.\",\"tokenId\":\"The unique identifier of the token.\"}},\"mint(string,uint256)\":{\"params\":{\"assetAttribute\":\"The amount of tokens to be minted, for fungible tokens, or the uniqueDescriptor of the token to mint, for non fungible tokens.\",\"tokenId\":\"The unique identifier of the token.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"returns\":{\"_0\":\"success A boolean indicating if the account has the bridge role.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unlock(string,uint256)\":{\"params\":{\"assetAttribute\":\"The amount of tokens to be unlocked, for fungible tokens, or the uniqueDescriptor of the token to unlock, for non fungible tokens.\",\"tokenId\":\"The unique identifier of the token.\"}},\"unwrap(string)\":{\"params\":{\"tokenId\":\"The unique identifier of the token.\"}},\"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)\":{\"params\":{\"contractAddress\":\"The address of the token contract.\",\"interactions\":\"The interactions to be used for the token.\",\"owner\":\"The owner of the token.\",\"tokenId\":\"The unique identifier of the token.\",\"tokenType\":\"The type of the token.\"}}},\"title\":\"SATPWrapper This contract serves as a wrapper for the Secure Asset Transfer Protocol (SATP) using the Hermes plugin. It provides functionalities to interact with the SATP protocol within the Cactus framework. This contract provides a semantic layer to facilitate interactions with other contracts.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"NFT_IDs(string,uint256)\":{\"notice\":\"Mapping of the NFT unique descriptors that are in the possetion of the wrapper contract, for each registered tokenId and respective contract.\"},\"assign(string,address,uint256)\":{\"notice\":\"Assigns tokens with the given token ID to a receiver account. This method calls the assign function of the token contract.\"},\"bridge_address()\":{\"notice\":\"The address of the bridge contract. TODO: Change this to the Token Struct\"},\"burn(string,uint256)\":{\"notice\":\"Burns tokens with the given token ID. This method calls the burn function of the token contract.\"},\"constructor\":{\"notice\":\"Constructor for the SATPWrapperContract.\"},\"getAllAssetsIDs()\":{\"notice\":\"Gets all the token IDs.\"},\"getToken(string)\":{\"notice\":\"Overload of the getToken function, used when getting fungible tokens, providing a neutral unique descriptor that is required when getting a non fungible token. \"},\"getToken(string,uint256)\":{\"notice\":\"Gets a token with the given token ID. Since a tokenId can be associated to multiple non fungible tokens, it is required to also provide the asset attribute of the wanted non fungible token. If the provided tokenId is not for a non fungible token, the assetAttribute parameter will be ignored.\"},\"lock(string,uint256)\":{\"notice\":\"Locks tokens with the given token ID. This method calls the lock function of the token contract.\"},\"mint(string,uint256)\":{\"notice\":\"Mints tokens with the given token ID. This method calls the mint function of the token contract.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"REQUIRED by OpenZeppelin: Supports the use of safe functions for ERC721 tokens.\"},\"tokens(string)\":{\"notice\":\"Maping of token IDs to Token structs.\"},\"tokensInteractions(string,uint8)\":{\"notice\":\"Mapping of token IDs to InteractionSignature structs.\"},\"unlock(string,uint256)\":{\"notice\":\"Unlocks tokens with the given token ID. This method calls the unlock function of the token contract.\"},\"unwrap(string)\":{\"notice\":\"Unwraps a token with the given token ID. This method deletes the token from the mapping and the array of token IDs. (Should they be deleted from the array?)\"},\"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)\":{\"notice\":\"Wraps a token with the given parameters. Given interactions will call a method that creates the ontology of the token so the other methods (eg. lock, unlock, mint, burn, assign) can interact with the token. This interactions should be given by the bridge and be througly tested and checked before being used, as they can be used to call any function in the token contract.\"},\"wrap(string,address,uint8,string,string,address,uint8)\":{\"notice\":\"Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. TODO: Implement that functionality for standard tokens. \"}},\"notice\":\"Ensure that the contract is deployed and configured correctly before interacting with it.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/main/solidity/contracts/SATPWrapperContract.sol\":\"SATPWrapperContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/main/solidity/contracts/SATPWrapperContract.sol\":{\"keccak256\":\"0x65cab15235cdf814b1de5400eeda71323237bb9fa112ce3b86e3467d77164e02\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e7572319e4fa727319a25afcb940b38c43ab327fc17ec07121f96b8b2eaa7663\",\"dweb:/ipfs/QmSydVQUZKR6LLGzt9Q3K5QHiV5Be8QL8JXBRVxEReeqJZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_bridge_address","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"InsuficientAmountLocked"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenAlreadyWrapped"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenLocked"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotAvailable"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"type":"error","name":"TokenNotSupported"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approve","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"address","name":"receiver_account","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Assign","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Lock","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Unlock","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true}],"type":"event","name":"Unwrap","anonymous":false},{"inputs":[{"internalType":"string","name":"tokenId","type":"string","indexed":true},{"internalType":"string","name":"contractName","type":"string","indexed":false},{"internalType":"address","name":"contractAddress","type":"address","indexed":false},{"internalType":"enum TokenType","name":"tokenType","type":"uint8","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":false}],"type":"event","name":"Wrap","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"NFT_IDs","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"address","name":"receiver_account","type":"address"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"assign","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge_address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"struct Token","name":"token","type":"tuple","components":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}]}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"struct Token","name":"token","type":"tuple","components":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}]}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"tokens","outputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"enum InteractionType","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"tokensInteractions","outputs":[{"internalType":"enum InteractionType","name":"interactionType","type":"uint8"},{"internalType":"bool","name":"available","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"uint256","name":"assetAttribute","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"tokenId","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"unwrap","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct InteractionSignature[]","name":"interactions","type":"tuple[]","components":[{"internalType":"enum InteractionType","name":"interactionType","type":"uint8"},{"internalType":"string[]","name":"functionsSignature","type":"string[]"},{"internalType":"enum AssetParameterIdentifier[][]","name":"variables","type":"uint8[][]"},{"internalType":"bool","name":"available","type":"bool"}]},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"bool","name":"wrapSuccess","type":"bool"}]},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"string","name":"tokenId","type":"string"},{"internalType":"string","name":"referenceId","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"enum ERCTokenStandard","name":"ercTokenStandard","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"wrap","outputs":[{"internalType":"bool","name":"wrapSuccess","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"assign(string,address,uint256)":{"params":{"assetAttribute":"The amount of tokens to be assigned, for fungible tokens, or the uniqueDescriptor of the token to be assigned, for non-fungible tokens.","receiver_account":"The address of the receiver account.","tokenId":"The unique identifier of the token."}},"burn(string,uint256)":{"params":{"assetAttribute":"The amount of tokens to be burned, for fungible tokens, or the uniqueDescriptor of the token to burn, for non fungible tokens.","tokenId":"The unique identifier of the token."}},"constructor":{"params":{"_bridge_address":"The address of the bridge contract. This needs to be changed, maybe the owner should not be a bridge but other account."}},"getAllAssetsIDs()":{"returns":{"_0":"An array of token IDs."}},"getToken(string)":{"params":{"tokenId":"The unique identifier of the token."},"returns":{"token":"the token with the given token ID."}},"getToken(string,uint256)":{"params":{"assetAttribute":"The asset attribute of the token.","tokenId":"The unique identifier of the token."},"returns":{"token":"the token with the given token ID and asset attribute."}},"lock(string,uint256)":{"params":{"assetAttribute":"The attribute related to the asset to be locked. An amount for fungible tokens, or a unique descriptor for non-fungible tokens.","tokenId":"The unique identifier of the token."}},"mint(string,uint256)":{"params":{"assetAttribute":"The amount of tokens to be minted, for fungible tokens, or the uniqueDescriptor of the token to mint, for non fungible tokens.","tokenId":"The unique identifier of the token."}},"onERC721Received(address,address,uint256,bytes)":{"returns":{"_0":"success A boolean indicating if the account has the bridge role."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unlock(string,uint256)":{"params":{"assetAttribute":"The amount of tokens to be unlocked, for fungible tokens, or the uniqueDescriptor of the token to unlock, for non fungible tokens.","tokenId":"The unique identifier of the token."}},"unwrap(string)":{"params":{"tokenId":"The unique identifier of the token."}},"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)":{"params":{"contractAddress":"The address of the token contract.","interactions":"The interactions to be used for the token.","owner":"The owner of the token.","tokenId":"The unique identifier of the token.","tokenType":"The type of the token."}}},"version":1},"userdoc":{"kind":"user","methods":{"NFT_IDs(string,uint256)":{"notice":"Mapping of the NFT unique descriptors that are in the possetion of the wrapper contract, for each registered tokenId and respective contract."},"assign(string,address,uint256)":{"notice":"Assigns tokens with the given token ID to a receiver account. This method calls the assign function of the token contract."},"bridge_address()":{"notice":"The address of the bridge contract. TODO: Change this to the Token Struct"},"burn(string,uint256)":{"notice":"Burns tokens with the given token ID. This method calls the burn function of the token contract."},"constructor":{"notice":"Constructor for the SATPWrapperContract."},"getAllAssetsIDs()":{"notice":"Gets all the token IDs."},"getToken(string)":{"notice":"Overload of the getToken function, used when getting fungible tokens, providing a neutral unique descriptor that is required when getting a non fungible token. "},"getToken(string,uint256)":{"notice":"Gets a token with the given token ID. Since a tokenId can be associated to multiple non fungible tokens, it is required to also provide the asset attribute of the wanted non fungible token. If the provided tokenId is not for a non fungible token, the assetAttribute parameter will be ignored."},"lock(string,uint256)":{"notice":"Locks tokens with the given token ID. This method calls the lock function of the token contract."},"mint(string,uint256)":{"notice":"Mints tokens with the given token ID. This method calls the mint function of the token contract."},"onERC721Received(address,address,uint256,bytes)":{"notice":"REQUIRED by OpenZeppelin: Supports the use of safe functions for ERC721 tokens."},"tokens(string)":{"notice":"Maping of token IDs to Token structs."},"tokensInteractions(string,uint8)":{"notice":"Mapping of token IDs to InteractionSignature structs."},"unlock(string,uint256)":{"notice":"Unlocks tokens with the given token ID. This method calls the unlock function of the token contract."},"unwrap(string)":{"notice":"Unwraps a token with the given token ID. This method deletes the token from the mapping and the array of token IDs. (Should they be deleted from the array?)"},"wrap(string,address,uint8,string,string,address,(uint8,string[],uint8[][],bool)[],uint8)":{"notice":"Wraps a token with the given parameters. Given interactions will call a method that creates the ontology of the token so the other methods (eg. lock, unlock, mint, burn, assign) can interact with the token. This interactions should be given by the bridge and be througly tested and checked before being used, as they can be used to call any function in the token contract."},"wrap(string,address,uint8,string,string,address,uint8)":{"notice":"Overloaded wrap method that does not receive interactions. This can be used for non-standard tokens. TODO: Implement that functionality for standard tokens. "}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/main/solidity/contracts/SATPWrapperContract.sol":"SATPWrapperContract"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/main/solidity/contracts/SATPWrapperContract.sol":{"keccak256":"0x65cab15235cdf814b1de5400eeda71323237bb9fa112ce3b86e3467d77164e02","urls":["bzz-raw://e7572319e4fa727319a25afcb940b38c43ab327fc17ec07121f96b8b2eaa7663","dweb:/ipfs/QmSydVQUZKR6LLGzt9Q3K5QHiV5Be8QL8JXBRVxEReeqJZ"],"license":"GPL-3.0"}},"version":1},"id":35} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestFungible.sol/SATPWrapperTest.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestFungible.sol/SATPWrapperTest.json new file mode 100644 index 0000000000..a630fd9159 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestFungible.sol/SATPWrapperTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testGetAllAssetsIDs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintATokenNotWrapped","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrapATokenNotWrapped","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrapATokenWithValueLocked","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWrap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWrapTokenAlreadyWrapped","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"user","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"user2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117815560c06040526080908152633ab9b2b960e11b60a0526200003c90620000b7565b601e80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b91960d91b60208201526200008390620000b7565b601f80546001600160a01b0319166001600160a01b0392909216919091179055348015620000b057600080fd5b50620002a4565b6000620000c482620000cb565b5092915050565b60008082604051602001620000e1919062000210565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200014d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017391906200022e565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001b1908590879060040162000260565b600060405180830381600087803b158015620001cc57600080fd5b505af1158015620001e1573d6000803e3d6000fd5b50505050915091565b60005b8381101562000207578181015183820152602001620001ed565b50506000910152565b6000825162000224818460208701620001ea565b9190910192915050565b6000602082840312156200024157600080fd5b81516001600160a01b03811681146200025957600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200028f816060850160208701620001ea565b601f01601f1916919091016060019392505050565b61a91f80620002b46000396000f3fe60806040523480156200001157600080fd5b5060043610620001955760003560e01c80639642ddaf11620000e9578063c0ef02641162000097578063e20c9f71116200006e578063e20c9f7114620002c4578063eb66037e14620002ce578063fa7626d414620002d857600080fd5b8063c0ef026414620002a6578063c43484d614620002b0578063cb1f5f2b14620002ba57600080fd5b8063b74cda5611620000cc578063b74cda56146200026d578063b9edb1af1462000277578063ba414fa6146200028b57600080fd5b80639642ddaf1462000259578063b5508aa9146200026357600080fd5b80635266885a11620001475780638312289b116200012a5780638312289b146200022c57806385226c811462000236578063916a17c6146200024f57600080fd5b80635266885a146200020957806366d9a9a0146200021357600080fd5b80633e5e3c23116200017c5780633e5e3c2314620001c85780633f7286f414620001d25780634f8632ba14620001dc57600080fd5b80630a9254e4146200019a5780631ed7831c14620001a6575b600080fd5b620001a4620002e6565b005b620001b06200173e565b604051620001bf919062003c00565b60405180910390f35b620001b0620017a2565b620001b062001804565b601e54620001f0906001600160a01b031681565b6040516001600160a01b039091168152602001620001bf565b620001a462001866565b6200021d62001a1b565b604051620001bf919062003c4f565b620001a462001b23565b6200024062001f49565b604051620001bf919062003d5a565b6200021d62002023565b620001a462002122565b6200024062002453565b620001a46200252d565b601f54620001f0906001600160a01b031681565b62000295620027e2565b6040519015158152602001620001bf565b620001a46200291a565b620001a462002a49565b620001a462002dec565b620001b062002e8c565b620001a462002eee565b600054620002959060ff1681565b30604051620002f5906200383d565b6001600160a01b039091168152602001604051809103906000f08015801562000322573d6000803e3d6000fd5b50601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040516200035d906200384b565b6001600160a01b039091168152602001604051809103906000f0801580156200038a573d6000803e3d6000fd5b50601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556020805460018101825560008281526040805160608101909152602b8082527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb90930193919290916200a899908301396200041591508262003e64565b5060408051606081019091526021908060038152602001600581526020016004905281546001810183556000928352602090922062000458920190600362003859565b50604080516080810182526004815260208054835181830281018301909452808452600093828401929091858383015b828210156200053e578382906000526020600020018054620004aa9062003dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054620004d89062003dd6565b8015620005295780601f10620004fd5761010080835404028352916020019162000529565b820191906000526020600020905b8154815290600101906020018083116200050b57829003601f168201915b50505050508152602001906001019062000488565b5050505081526020016021805480602002602001604051908101604052809291908181526020016000905b828210156200060c57600084815260209081902083018054604080518285028101850190915281815292830182828015620005f757602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620005d457620005d462003f31565b815260206001928301818104948501949093039092029101808411620005b25790505b50505050508152602001906001019062000569565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff1916908360068111156200067a576200067a62003f31565b0217905550602082810151805162000699926001850192019062003917565b5060408201518051620006b791600284019160209091019062003970565b50606091909101516003909101805460ff19169115159190911790556022805460018101825560009190915260408051808201909152601d81527f6c6f636b28616464726573732c616464726573732c75696e743235362900000060208201527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e5109091019062000748908262003e64565b506040805160608101909152602390806005815260200160038152602001600490528154600181018355600092835260209092206200078b920190600362003859565b50604080516080810190915260009080600581526020016022805480602002602001604051908101604052809291908181526020016000905b828210156200087a578382906000526020600020018054620007e69062003dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054620008149062003dd6565b8015620008655780601f10620008395761010080835404028352916020019162000865565b820191906000526020600020905b8154815290600101906020018083116200084757829003601f168201915b505050505081526020019060010190620007c4565b5050505081526020016023805480602002602001604051908101604052809291908181526020016000905b8282101562000948576000848152602090819020830180546040805182850281018501909152818152928301828280156200093357602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000910576200091062003f31565b815260206001928301818104948501949093039092029101808411620008ee5790505b505050505081526020019060010190620008a5565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff191690836006811115620009b657620009b662003f31565b02179055506020828101518051620009d5926001850192019062003917565b5060408201518051620009f391600284019160209091019062003970565b50606091909101516003909101805460ff19169115159190911790556024805460018101825560009190915260408051808201909152601581527f6d696e7428616464726573732c75696e7432353629000000000000000000000060208201527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec49091019062000a84908262003e64565b506040805180820190915260058152600460208201526025805460018101825560009190915262000adc917f401968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c909101906002620039d0565b506040805160808101909152600090808281526020016024805480602002602001604051908101604052809291908181526020016000905b8282101562000bca57838290600052602060002001805462000b369062003dd6565b80601f016020809104026020016040519081016040528092919081815260200182805462000b649062003dd6565b801562000bb55780601f1062000b895761010080835404028352916020019162000bb5565b820191906000526020600020905b81548152906001019060200180831162000b9757829003601f168201915b50505050508152602001906001019062000b14565b5050505081526020016025805480602002602001604051908101604052809291908181526020016000905b8282101562000c985760008481526020908190208301805460408051828502810185019091528181529283018282801562000c8357602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000c605762000c6062003f31565b81526020600192830181810494850194909303909202910180841162000c3e5790505b50505050508152602001906001019062000bf5565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff19169083600681111562000d065762000d0662003f31565b0217905550602082810151805162000d25926001850192019062003917565b506040820151805162000d4391600284019160209091019062003970565b50606091909101516003909101805460ff19169115159190911790556026805460018101825560009190915260408051808201909152601581527f6275726e28616464726573732c75696e7432353629000000000000000000000060208201527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a35949091019062000dd4908262003e64565b506040805180820190915260058152600460208201526027805460018101825560009190915262000e2c917f98a476f1687bc3d60a2da2adbcba2c46958e61fa2fb4042cd7bc5816a710195b909101906002620039d0565b50604080516080810190915260009080600181526020016026805480602002602001604051908101604052809291908181526020016000905b8282101562000f1b57838290600052602060002001805462000e879062003dd6565b80601f016020809104026020016040519081016040528092919081815260200182805462000eb59062003dd6565b801562000f065780601f1062000eda5761010080835404028352916020019162000f06565b820191906000526020600020905b81548152906001019060200180831162000ee857829003601f168201915b50505050508152602001906001019062000e65565b5050505081526020016027805480602002602001604051908101604052809291908181526020016000905b8282101562000fe95760008481526020908190208301805460408051828502810185019091528181529283018282801562000fd457602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000fb15762000fb162003f31565b81526020600192830181810494850194909303909202910180841162000f8f5790505b50505050508152602001906001019062000f46565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff19169083600681111562001057576200105762003f31565b0217905550602082810151805162001076926001850192019062003917565b50604082015180516200109491600284019160209091019062003970565b50606091909101516003909101805460ff19169115159190911790556028805460018101825560009190915260408051808201909152601f81527f61737369676e28616464726573732c616464726573732c75696e74323536290060208201527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab59091019062001125908262003e64565b5060408051606081019091526029908060058152602001600681526020016004905281546001810183556000928352602090922062001168920190600362003859565b50604080516080810190915260009080600281526020016028805480602002602001604051908101604052809291908181526020016000905b8282101562001257578382906000526020600020018054620011c39062003dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054620011f19062003dd6565b8015620012425780601f10620012165761010080835404028352916020019162001242565b820191906000526020600020905b8154815290600101906020018083116200122457829003601f168201915b505050505081526020019060010190620011a1565b5050505081526020016029805480602002602001604051908101604052809291908181526020016000905b8282101562001325576000848152602090819020830180546040805182850281018501909152818152928301828280156200131057602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620012ed57620012ed62003f31565b815260206001928301818104948501949093039092029101808411620012cb5790505b50505050508152602001906001019062001282565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff19169083600681111562001393576200139362003f31565b02179055506020828101518051620013b2926001850192019062003917565b5060408201518051620013d091600284019160209091019062003970565b50606091909101516003909101805460ff1916911515919091179055602a805460018101825560009190915260408051808201909152601681527f6861735065726d697373696f6e2861646472657373290000000000000000000060208201527fbeced09521047d05b8960b7e7bcc1d1292cf3e4b2a6b63f48335cbde5f7545d29091019062001461908262003e64565b50604080516020810190915260058152602b805460018082018355600092909252620014b2927f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f9091019162003a4b565b5060408051608081019091526000908060038152602001602a805480602002602001604051908101604052809291908181526020016000905b82821015620015a15783829060005260206000200180546200150d9062003dd6565b80601f01602080910402602001604051908101604052809291908181526020018280546200153b9062003dd6565b80156200158c5780601f1062001560576101008083540402835291602001916200158c565b820191906000526020600020905b8154815290600101906020018083116200156e57829003601f168201915b505050505081526020019060010190620014eb565b505050508152602001602b805480602002602001604051908101604052809291908181526020016000905b828210156200166f576000848152602090819020830180546040805182850281018501909152818152928301828280156200165a57602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562001637576200163762003f31565b815260206001928301818104948501949093039092029101808411620016155790505b505050505081526020019060010190620015cc565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff191690836006811115620016dd57620016dd62003f31565b02179055506020828101518051620016fc926001850192019062003917565b50604082015180516200171a91600284019160209091019062003970565b50606091909101516003909101805460ff1916911515919091179055505050505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200179857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001779575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562001798576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001779575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562001798576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001779575050505050905090565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa158015620018bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018e591908101906200401d565b6040518263ffffffff1660e01b815260040162001903919062004056565b6020604051808303816000875af192505050801562001941575060408051601f3d908101601f191682019092526200193e9181019062004072565b60015b620019ac576200195062004096565b806308c379a00362001977575062001967620040b2565b8062001974575062001979565b50565b505b3d808015620019a3576040519150601f19603f3d011682016040523d82523d6000602084013e5050565b606091505b5050565b801562001974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f457870656374656420616e206572726f72000000000000000000000000000000604482015260640160405180910390fd5b565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001b1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b0157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001aad5790505b5050505050815250508152602001906001019062001a3f565b50505050905090565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562001b78573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ba291908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa15801562001bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c1c91908101906200401d565b601e546040516001600160e01b031960e088901b16815262001c5595949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af115801562001c75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c9b919062004072565b50601d54601b54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa15801562001cf5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d1f91908101906200401d565b6040518263ffffffff1660e01b815260040162001d3d919062004056565b600060405180830381865afa15801562001d5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d85919081019062004b64565b905062001de28160200151601b60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d61746368000000000000000000000000000081525062003199565b601d54604080517f5137b8a7000000000000000000000000000000000000000000000000000000008152905162001974926001600160a01b031691635137b8a79160048083019260009291908290030181865afa15801562001e48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e72919081019062004c7e565b60008151811062001e875762001e8762004d50565b6020026020010151601b60009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001ee3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f0d91908101906200401d565b6040518060400160405280600f81526020017f49647320646f6e2774206d617463680000000000000000000000000000000000815250620031fd565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001b1a57838290600052602060002001805462001f8f9062003dd6565b80601f016020809104026020016040519081016040528092919081815260200182805462001fbd9062003dd6565b80156200200e5780601f1062001fe2576101008083540402835291602001916200200e565b820191906000526020600020905b81548152906001019060200180831162001ff057829003601f168201915b50505050508152602001906001019062001f6d565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001b1a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200210957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020b55790505b5050505050815250508152602001906001019062002047565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002177573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620021a191908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa158015620021f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200221b91908101906200401d565b601e546040516001600160e01b031960e088901b1681526200225495949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af115801562002274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200229a919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620022f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200231a91908101906200401d565b600a6040518363ffffffff1660e01b81526004016200233b92919062004d66565b6020604051808303816000875af11580156200235b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002381919062004072565b50601b54601d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262001a199291909116906370a0823190602401602060405180830381865afa158015620023ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002415919062004d8a565b600a6040518060400160405280601081526020017f546f6b656e206e6f74206d696e746564000000000000000000000000000000008152506200329a565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001b1a578382906000526020600020018054620024999062003dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054620024c79062003dd6565b8015620025185780601f10620024ec5761010080835404028352916020019162002518565b820191906000526020600020905b815481529060010190602001808311620024fa57829003601f168201915b50505050508152602001906001019062002477565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002582573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025ac91908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa158015620025fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200262691908101906200401d565b601e546040516001600160e01b031960e088901b1681526200265f95949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af11580156200267f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026a5919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620026fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200272591908101906200401d565b600a6040518363ffffffff1660e01b81526004016200274692919062004d66565b6020604051808303816000875af115801562002766573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200278c919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa158015620018bb573d6000803e3d6000fd5b60008054610100900460ff1615620028035750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620029125760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002894917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162004da4565b60408051601f1981840301815290829052620028b09162004dd6565b6000604051808303816000865af19150503d8060008114620028ef576040519150601f19603f3d011682016040523d82523d6000602084013e620028f4565b606091505b50915050808060200190518101906200290e919062004072565b9150505b919050565b90565b601d54601b54604080517f95d89b4100000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039081169363c1733f68939116916395d89b419160048082019288929091908290030181865afa1580156200298c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620029b691908101906200401d565b6040518263ffffffff1660e01b8152600401620029d4919062004056565b600060405180830381865afa158015620029f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a1c919081019062004b64565b905062001974816020015160006040518060600160405280602681526020016200a8c46026913962003199565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002ac891908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa15801562002b18573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b4291908101906200401d565b601e546040516001600160e01b031960e088901b16815262002b7b95949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af115801562002b9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bc1919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562002c17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002c4191908101906200401d565b6040518263ffffffff1660e01b815260040162002c5f919062004056565b6020604051808303816000875af115801562002c7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ca5919062004072565b50601d54601b54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa15801562002cff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d2991908101906200401d565b6040518263ffffffff1660e01b815260040162002d47919062004056565b600060405180830381865afa15801562002d65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d8f919081019062004b64565b9050620019748160200151601b60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d617463680000000000000000000000000000815250620032e7565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa15801562002e41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002e6b91908101906200401d565b600a6040518363ffffffff1660e01b81526004016200190392919062004d66565b6060600c80548060200260200160405190810160405280929190818152602001828054801562001798576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001779575050505050905090565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f6d91908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa15801562002fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002fe791908101906200401d565b601e546040516001600160e01b031960e088901b1681526200302095949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af115801562003040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003066919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa158015620030bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620030e691908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa15801562003136573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200316091908101906200401d565b601e546040516001600160e01b031960e088901b1681526200190395949392916001600160a01b031690601c90600190600401620048e9565b816001600160a01b0316836001600160a01b031614620031f8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620031e4919062004df4565b60405180910390a1620031f8838362003346565b505050565b8160405160200162003210919062004dd6565b604051602081830303815290604052805190602001208360405160200162003239919062004dd6565b6040516020818303038152906040528051906020012014620031f8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162003286919062004df4565b60405180910390a1620031f8838362003452565b818314620031f8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620032d3919062004df4565b60405180910390a1620031f88383620035a2565b816001600160a01b0316836001600160a01b031603620031f8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162003332919062004df4565b60405180910390a1620031f88383620036a2565b806001600160a01b0316826001600160a01b031614620019a8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620033ce9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162003407919062004e3d565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162003440919062004e7f565b60405180910390a1620019a86200372a565b8060405160200162003465919062004dd6565b60405160208183030381529060405280519060200120826040516020016200348e919062004dd6565b6040516020818303038152906040528051906020012014620019a8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620035309060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838260405162003569919062004eaa565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162003440919062004ee9565b808214620019a8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620036309060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162003669919062004f14565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162003440919062004f4d565b806001600160a01b0316826001600160a01b031603620019a8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620033ce9060208082526025908201527f4572726f723a206120213d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200382c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620037c7929160200162004da4565b60408051601f1981840301815290829052620037e39162004dd6565b6000604051808303816000865af19150503d806000811462003822576040519150601f19603f3d011682016040523d82523d6000602084013e62003827565b606091505b505050505b6000805461ff001916610100179055565b6146fa8062004f7983390190565b611226806200967383390190565b82805482825590600052602060002090601f01602090048101928215620039055791602002820160005b83821115620038d457835183826101000a81548160ff02191690836007811115620038b257620038b262003f31565b0217905550926020019260010160208160000104928301926001030262003883565b8015620039035782816101000a81549060ff0219169055600101602081600001049283019260010302620038d4565b505b506200391392915062003ac6565b5090565b82805482825590600052602060002090810192821562003962579160200282015b8281111562003962578251829062003951908262003e64565b509160200191906001019062003938565b506200391392915062003add565b828054828255906000526020600020908101928215620039c2579160200282015b82811115620039c25782518051620039b191849160209091019062003afe565b509160200191906001019062003991565b506200391392915062003b79565b82805482825590600052602060002090601f01602090048101928215620039055791602002820160005b83821115620038d457835183826101000a81548160ff0219169083600781111562003a295762003a2962003f31565b02179055509260200192600101602081600001049283019260010302620039fa565b82805482825590600052602060002090601f01602090048101928215620039055791602002820160005b83821115620038d457835183826101000a81548160ff0219169083600781111562003aa45762003aa462003f31565b0217905550926020019260010160208160000104928301926001030262003a75565b5b8082111562003913576000815560010162003ac7565b808211156200391357600062003af4828262003b9a565b5060010162003add565b82805482825590600052602060002090601f01602090048101928215620039055791602002820160005b83821115620038d457835183826101000a81548160ff0219169083600781111562003b575762003b5762003f31565b0217905550926020019260010160208160000104928301926001030262003b28565b808211156200391357600062003b90828262003bd9565b5060010162003b79565b50805462003ba89062003dd6565b6000825580601f1062003bb9575050565b601f01602090049060005260206000209081019062001974919062003ac6565b50805460008255601f01602090049060005260206000209081019062001974919062003ac6565b6020808252825182820181905260009190848201906040850190845b8181101562003c435783516001600160a01b03168352928401929184019160010162003c1c565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003cf757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562003ce15783516001600160e01b0319168252928b019260019290920191908b019062003cb5565b50978a0197955050509187019160010162003c77565b50919998505050505050505050565b60005b8381101562003d2357818101518382015260200162003d09565b50506000910152565b6000815180845262003d4681602086016020860162003d06565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003db357603f1988860301845262003da085835162003d2c565b9450928501929085019060010162003d81565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062003deb57607f821691505b60208210810362003e0c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620031f857600081815260208120601f850160051c8101602086101562003e3b5750805b601f850160051c820191505b8181101562003e5c5782815560010162003e47565b505050505050565b815167ffffffffffffffff81111562003e815762003e8162003dc0565b62003e998162003e92845462003dd6565b8462003e12565b602080601f83116001811462003ed1576000841562003eb85750858301515b600019600386901b1c1916600185901b17855562003e5c565b600085815260208120601f198616915b8281101562003f025788860151825594840194600190910190840162003ee1565b508582101562003f215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171562003f705762003f7062003dc0565b6040525050565b604051610100810167ffffffffffffffff8111828210171562003f9e5762003f9e62003dc0565b60405290565b600082601f83011262003fb657600080fd5b815167ffffffffffffffff81111562003fd35762003fd362003dc0565b60405162003fec601f8301601f19166020018262003f47565b8181528460208386010111156200400257600080fd5b6200401582602083016020870162003d06565b949350505050565b6000602082840312156200403057600080fd5b815167ffffffffffffffff8111156200404857600080fd5b620040158482850162003fa4565b6020815260006200406b602083018462003d2c565b9392505050565b6000602082840312156200408557600080fd5b815180151581146200406b57600080fd5b600060033d1115620029175760046000803e5060005160e01c90565b600060443d1015620040c15790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715620040f257505050505090565b82850191508151818111156200410b5750505050505090565b843d8701016020828501011115620041265750505050505090565b620041376020828601018762003f47565b509095945050505050565b6008811062004155576200415562003f31565b9052565b600081548084526020808501808196508360051b81019150856000528260002060005b85811015620048c957828403895281548085526000838152602080822090870192915b82601f820110156200445a57815460ff620041bd8682841662004142565b620041d08b8701828460081c1662004142565b620041e460408701828460101c1662004142565b620041f860608701828460181c1662004142565b60806200420c81880183858f1c1662004142565b60a062004221818901848660281c1662004142565b60c062004236818a01858760301c1662004142565b60e06200424b818b01868860381c1662004142565b620042606101008b01868860401c1662004142565b620042756101208b01868860481c1662004142565b6200428a6101408b01868860501c1662004142565b6200429f6101608b01868860581c1662004142565b620042b46101808b01868860601c1662004142565b620042c96101a08b01868860681c1662004142565b620042de6101c08b01868860701c1662004142565b620042f36101e08b01868860781c1662004142565b620043076102008b018688871c1662004142565b6200431c6102208b01868860881c1662004142565b620043316102408b01868860901c1662004142565b620043466102608b01868860981c1662004142565b6200435a6102808b018688861c1662004142565b6200436f6102a08b01868860a81c1662004142565b620043846102c08b01868860b01c1662004142565b620043996102e08b01868860b81c1662004142565b620043ad6103008b018688851c1662004142565b620043c26103208b01868860c81c1662004142565b620043d76103408b01868860d01c1662004142565b620043ec6103608b01868860d81c1662004142565b620044006103808b018688841c1662004142565b50505050620044196103a08701828460e81c1662004142565b6200442e6103c08701828460f01c1662004142565b50620044426103e086018260f81c62004142565b5061040093909301926001919091019088016200419f565b905490828110156200447d57620044758460ff841662004142565b928801926001015b82811015620044a057620044988460ff8460081c1662004142565b928801926001015b82811015620044c357620044bb8460ff8460101c1662004142565b928801926001015b82811015620044e657620044de8460ff8460181c1662004142565b928801926001015b828110156200450857620045008460ff848c1c1662004142565b928801926001015b828110156200452b57620045238460ff8460281c1662004142565b928801926001015b828110156200454e57620045468460ff8460301c1662004142565b928801926001015b828110156200457157620045698460ff8460381c1662004142565b928801926001015b8281101562004594576200458c8460ff8460401c1662004142565b928801926001015b82811015620045b757620045af8460ff8460481c1662004142565b928801926001015b82811015620045da57620045d28460ff8460501c1662004142565b928801926001015b82811015620045fd57620045f58460ff8460581c1662004142565b928801926001015b828110156200462057620046188460ff8460601c1662004142565b928801926001015b8281101562004643576200463b8460ff8460681c1662004142565b928801926001015b8281101562004666576200465e8460ff8460701c1662004142565b928801926001015b828110156200468957620046818460ff8460781c1662004142565b928801926001015b82811015620046ac57620046a48460ff8460801c1662004142565b928801926001015b82811015620046cf57620046c78460ff8460881c1662004142565b928801926001015b82811015620046f257620046ea8460ff8460901c1662004142565b928801926001015b8281101562004715576200470d8460ff8460981c1662004142565b928801926001015b828110156200473857620047308460ff8460a01c1662004142565b928801926001015b828110156200475b57620047538460ff8460a81c1662004142565b928801926001015b828110156200477e57620047768460ff8460b01c1662004142565b928801926001015b82811015620047a157620047998460ff8460b81c1662004142565b928801926001015b82811015620047c457620047bc8460ff8460c01c1662004142565b928801926001015b82811015620047e757620047df8460ff8460c81c1662004142565b928801926001015b828110156200480a57620048028460ff8460d01c1662004142565b928801926001015b828110156200482d57620048258460ff8460d81c1662004142565b928801926001015b828110156200485057620048488460ff8460e01c1662004142565b928801926001015b8281101562004873576200486b8460ff8460e81c1662004142565b928801926001015b8281101562004896576200488e8460ff8460f01c1662004142565b928801926001015b82811015620048b357620048ae848360f81c62004142565b928801925b505050988501989350600191820191016200417c565b5091979650505050505050565b6004811062004155576200415562003f31565b610100815260006200490061010083018a62003d2c565b6001600160a01b03891660208401526003881062004922576200492262003f31565b87604084015282810360608401526200493c818862003d2c565b90508281036080840152600581527f726566494400000000000000000000000000000000000000000000000000000060208201526001600160a01b03861660a084015260408382030160c084015260408101855480825260608301915060608160051b84010187600052602060002060005b8381101562004b0857858303605f19018552815460ff1660078110620049d857620049d862003f31565b808452506080602084015260808301600183015480825260a08501915060a08160051b86010160018501600052602060002060005b8381101562004aba57609f198884030185526000825462004a2e8162003dd6565b80865260018216801562004a4b576001811462004a685762004aa1565b60ff1983166020880152602082151560051b880101935062004aa1565b85600052602060002060005b8381101562004a985781546020828b01015260018201915060208101905062004a74565b88016020019450505b5050506020959095019492506001918201910162004a0d565b5050858103604087015262004ad3816002870162004159565b9250505062004ae6600384015460ff1690565b80151560608601525060209590950194925060049190910190600101620049ae565b50508094505050505062004b2060e0830184620048d6565b98975050505050505050565b80516001600160a01b03811681146200291257600080fd5b8051600381106200291257600080fd5b8051600481106200291257600080fd5b60006020828403121562004b7757600080fd5b815167ffffffffffffffff8082111562004b9057600080fd5b90830190610100828603121562004ba657600080fd5b62004bb062003f77565b82518281111562004bc057600080fd5b62004bce8782860162003fa4565b82525062004bdf6020840162004b2c565b602082015262004bf26040840162004b44565b604082015260608301518281111562004c0a57600080fd5b62004c188782860162003fa4565b60608301525060808301518281111562004c3157600080fd5b62004c3f8782860162003fa4565b60808301525062004c5360a0840162004b2c565b60a082015260c083015160c082015262004c7060e0840162004b54565b60e082015295945050505050565b6000602080838503121562004c9257600080fd5b825167ffffffffffffffff8082111562004cab57600080fd5b818501915085601f83011262004cc057600080fd5b81518181111562004cd55762004cd562003dc0565b8060051b60405162004cea8683018262003f47565b9182528381018501918581018984111562004d0457600080fd5b86860192505b8383101562004d435782518581111562004d245760008081fd5b62004d348b89838a010162003fa4565b82525091860191860162004d0a565b5098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60408152600062004d7b604083018562003d2c565b90508260208301529392505050565b60006020828403121562004d9d57600080fd5b5051919050565b6001600160e01b0319831681526000825162004dc881600485016020870162003d06565b919091016004019392505050565b6000825162004dea81846020870162003d06565b9190910192915050565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006200406b608083018462003d2c565b60408152600062004e6860408301600a8152690808080808081319599d60b21b602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062004e6860408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600062004ed560408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262004015818562003d2c565b60408152600062004ed560408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600062004f3f60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b60408152600062004f3f60408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b50604051620046fa380380620046fa8339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600580546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b6145d280620001286000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063715018a6116100cd578063d9cf884c11610081578063e1efb59611610066578063e1efb59614610350578063ea8f547f14610363578063f2fde38b146103ba57600080fd5b8063d9cf884c1461032a578063dbf156391461033d57600080fd5b8063a1bc17c5116100b2578063a1bc17c5146102f1578063b48272cc14610304578063c1733f681461031757600080fd5b8063715018a6146102d65780638da5cb5b146102e057600080fd5b806319d09bc911610124578063433f60ac11610109578063433f60ac1461029b5780634534ba17146102ae5780635137b8a7146102c157600080fd5b806319d09bc91461023d578063324980b51461027b57600080fd5b806304c2320b14610156578063056b01ce146101865780631255c189146101a9578063150b7a02146101d4575b600080fd5b61016961016436600461370f565b6103cd565b60405161017d9897969594939291906137ce565b60405180910390f35b610199610194366004613853565b6105d1565b604051901515815260200161017d565b6005546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b61020c6101e23660046138af565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017d565b61019961024b366004613853565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b61028e610289366004613853565b61092b565b60405161017d919061394a565b6101996102a9366004613cf0565b61114d565b6101996102bc366004613de0565b6114c0565b6102c961191b565b60405161017d9190613e8c565b6102de6119f4565b005b6000546001600160a01b03166101bc565b6101996102ff36600461370f565b611a08565b610199610312366004613853565b611c59565b61028e61032536600461370f565b61209c565b610199610338366004613853565b6120eb565b61019961034b366004613e9f565b612568565b61019961035e366004613853565b612650565b6103ac610371366004613f6a565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161017d929190613fc8565b6102de6103c8366004613fe5565b612985565b80516020818301810180516001825292820191909301209152805481906103f390614000565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90614000565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161049f90614000565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90614000565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509080600301805461052d90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461055990614000565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050506004830154600584015460069094015492936001600160a01b039091169290915060ff1688565b60006105db6129dc565b60006001600160a01b03166001846040516105f6919061403a565b908152604051908190036020019020600101546001600160a01b03160361063b578260405163c0bab25f60e01b81526004016106329190614056565b60405180910390fd5b6000821161068b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b600060018460405161069d919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156106d1576106d1613794565b03610757576106e284600085612a22565b61072e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b8260018560405161073f919061403a565b908152604051908190036020019020600501556108d6565b600281600281111561076b5761076b613794565b036108bb57600384604051610780919061403a565b90815260408051602092819003830190206000868152925290205460ff16156107eb5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220616c7265616479206578697374736044820152606401610632565b6107f784600085612a22565b6108435760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051610854919061403a565b90815260200160405180910390206005016000828254610874919061407f565b92505081905550600160038560405161088d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556108d6565b8360405163c16fc3ad60e01b81526004016106329190614056565b836040516108e4919061403a565b604051908190038120848252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a260019150505b92915050565b61096f60408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b6000600184604051610981919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156109b5576109b5613794565b03610c3b576001846040516109ca919061403a565b9081526020016040518091039020604051806101000160405290816000820180546109f490614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090614000565b8015610a6d5780601f10610a4257610100808354040283529160200191610a6d565b820191906000526020600020905b815481529060010190602001808311610a5057829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166002811115610aaa57610aaa613794565b6002811115610abb57610abb613794565b8152602001600282018054610acf90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90614000565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b50505050508152602001600382018054610b6190614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90614000565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260058201546040820152600682015460609091019060ff166003811115610c1e57610c1e613794565b6003811115610c2f57610c2f613794565b81525050915050610925565b6002816002811115610c4f57610c4f613794565b0361114657600384604051610c64919061403a565b90815260408051602092819003830190206000868152925290205460ff1615610ef757604051806101000160405280600186604051610ca3919061403a565b9081526040519081900360200190208054610cbd90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990614000565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050508152602001600186604051610d50919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051610d93919061403a565b9081526040519081900360200190206001015460ff600160a01b909104166002811115610dc257610dc2613794565b8152602001858152602001600186604051610ddd919061403a565b90815260200160405180910390206003018054610df990614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2590614000565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b50505050508152602001600186604051610e8c919061403a565b9081526040805160209281900383019020600401546001600160a01b031683529082018690528051910190600190610ec590889061403a565b9081526040519081900360200190206006015460ff166003811115610eec57610eec613794565b815250915050610925565b604051806101000160405280600186604051610f13919061403a565b9081526040519081900360200190208054610f2d90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990614000565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b50505050508152602001600186604051610fc0919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051611003919061403a565b9081526040519081900360200190206001015460ff600160a01b90910416600281111561103257611032613794565b815260200185815260200160018660405161104d919061403a565b9081526020016040518091039020600301805461106990614000565b80601f016020809104026020016040519081016040528092919081815260200182805461109590614000565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081526020016001866040516110fc919061403a565b908152602001604051809103902060040160009054906101000a90046001600160a01b03166001600160a01b0316815260200160008152602001600186604051610ec5919061403a565b5092915050565b60006111576129dc565b60006001600160a01b0316600187604051611172919061403a565b908152604051908190036020019020600101546001600160a01b0316146111c757856040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016106329190614056565b6111d18684612a39565b6002866040516111e1919061403a565b9081526040805160209281900383019020600360008181529190935220015460ff161561128557611213866003612b59565b6112855760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e000000006064820152608401610632565b6040518061010001604052808a8152602001896001600160a01b031681526020018860028111156112b8576112b8613794565b8152602001878152602001868152602001856001600160a01b03168152602001600081526020018360038111156112f1576112f1613794565b815250600187604051611304919061403a565b9081526040519081900360200190208151819061132190826140e0565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600281111561138a5761138a613794565b0217905550606082015160028201906113a390826140e0565b50608082015160038201906113b890826140e0565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c0820151600582015560e082015160068201805460ff1916600183600381111561141957611419613794565b021790555050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905061145d87826140e0565b508560405161146c919061403a565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8a8a8a886040516114a994939291906141a0565b60405180910390a250600198975050505050505050565b60006114ca6129dc565b60006001600160a01b03166001856040516114e5919061403a565b908152604051908190036020019020600101546001600160a01b031603611521578360405163c0bab25f60e01b81526004016106329190614056565b600082116115715760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600185604051611583919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156115b7576115b7613794565b036116c257826001866040516115cd919061403a565b908152602001604051809103902060050154101561162d5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b65646044820152606401610632565b61163a8560028587612b6f565b6116865760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c656400000000000000006044820152606401610632565b82600186604051611697919061403a565b908152602001604051809103902060050160008282546116b791906141e4565b909155506118b99050565b60028160028111156116d6576116d6613794565b0361189e5760006001866040516116ed919061403a565b9081526020016040518091039020600501541161174c5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b65646044820152606401610632565b60038560405161175c919061403a565b908152604080519182900360209081019092206000868152925290205460ff1615156001146117cd5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b6117da8560028587612b6f565b6118265760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018086604051611837919061403a565b9081526020016040518091039020600501600082825461185791906141e4565b925050819055506000600386604051611870919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556118b9565b8460405163c16fc3ad60e01b81526004016106329190614056565b846040516118c7919061403a565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a2506001949350505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156119eb57838290600052602060002001805461195e90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461198a90614000565b80156119d75780601f106119ac576101008083540402835291602001916119d7565b820191906000526020600020905b8154815290600101906020018083116119ba57829003601f168201915b50505050508152602001906001019061193f565b50505050905090565b6119fc6129dc565b611a066000612e8b565b565b6000611a126129dc565b60006001600160a01b0316600183604051611a2d919061403a565b908152604051908190036020019020600101546001600160a01b031603611a69578160405163c0bab25f60e01b81526004016106329190614056565b6000600183604051611a7b919061403a565b9081526020016040518091039020600501541115611ac757816040517fb7d2c10a0000000000000000000000000000000000000000000000000000000081526004016106329190614056565b611b79600183604051611ada919061403a565b90815260200160405180910390206002018054611af690614000565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290614000565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050612ee8565b600182604051611b89919061403a565b9081526040519081900360200190206000611ba48282613422565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055611bd2600283016000613422565b611be0600383016000613422565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820155600601805460ff19169055604051611c2090839061403a565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000611c636129dc565b60006001600160a01b0316600184604051611c7e919061403a565b908152604051908190036020019020600101546001600160a01b031603611cba578260405163c0bab25f60e01b81526004016106329190614056565b60008211611d0a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051611d1c919061403a565b90815260405190819003602001902060019081015460ff600160a01b909104169150816002811115611d5057611d50613794565b03611e5a5782600185604051611d66919061403a565b9081526020016040518091039020600501541015611dc65760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b656400006044820152606401610632565b611dd284600185612a22565b611e1e5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b82600185604051611e2f919061403a565b90815260200160405180910390206005016000828254611e4f91906141e4565b909155506120579050565b6002816002811115611e6e57611e6e613794565b036108bb576000600185604051611e85919061403a565b90815260200160405180910390206005015411611f0a5760405162461bcd60e51b815260206004820152602360248201527f547279696e6720746f206275726e20616e20756e6163636f756e74656420417360448201527f73657400000000000000000000000000000000000000000000000000000000006064820152608401610632565b600384604051611f1a919061403a565b908152604080519182900360209081019092206000868152925290205460ff161515600114611f8b5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b611f9784600185612a22565b611fe35760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051611ff4919061403a565b9081526020016040518091039020600501600082825461201491906141e4565b92505081905550600060038560405161202d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612065919061403a565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee9990602001610917565b6120e060408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b61092582600061092b565b60006120f56129dc565b60006001600160a01b0316600184604051612110919061403a565b908152604051908190036020019020600101546001600160a01b03160361214c578260405163c0bab25f60e01b81526004016106329190614056565b6000821161219c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b60006001846040516121ae919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156121e2576121e2613794565b0361230057826001856040516121f8919061403a565b90815260200160405180910390206005015410156122465783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016106329291906141f7565b61225284600585612a22565b6122c45760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610632565b826001856040516122d5919061403a565b908152602001604051809103902060050160008282546122f591906141e4565b909155506125239050565b600281600281111561231457612314613794565b036108bb57600384604051612329919061403a565b908152604080519182900360209081019092206000868152925290205460ff16151560011461239a5760405162461bcd60e51b815260206004820152601060248201527f546f6b656e204e6f74204c6f636b6564000000000000000000000000000000006044820152606401610632565b60006001856040516123ac919061403a565b908152602001604051809103902060050154116124315760405162461bcd60e51b815260206004820152603360248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206163636f756e74656420666f72000000000000000000000000006064820152608401610632565b61243d84600585612a22565b6124af5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610632565b600180856040516124c0919061403a565b908152602001604051809103902060050160008282546124e091906141e4565b9250508190555060006003856040516124f9919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612531919061403a565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001610917565b60006125726129dc565b3063433f60ac89898989898960006040519080825280602002602001820160405280156125dc57816020015b6125c96040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161259e5790505b508a6040518963ffffffff1660e01b8152600401612601989796959493929190614219565b6020604051808303816000875af1158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906143ba565b98975050505050505050565b600061265a6129dc565b60006001600160a01b0316600184604051612675919061403a565b908152604051908190036020019020600101546001600160a01b0316036126b1578260405163c0bab25f60e01b81526004016106329190614056565b600082116127015760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051612713919061403a565b90815260405190819003602001902060019081015460ff600160a01b90910416915081600281111561274757612747613794565b036127e05761275884600485612a22565b6127a45760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b826001856040516127b5919061403a565b908152602001604051809103902060050160008282546127d5919061407f565b909155506129409050565b60028160028111156127f4576127f4613794565b036108bb57600384604051612809919061403a565b90815260408051602092819003830190206000868152925290205460ff16156128745760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20416c7265616479204c6f636b65640000000000000000000000006044820152606401610632565b61288084600485612a22565b6128cc5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b600180856040516128dd919061403a565b908152602001604051809103902060050160008282546128fd919061407f565b925050819055506001600385604051612916919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b8360405161294e919061403a565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001610917565b61298d6129dc565b6001600160a01b0381166129d0576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610632565b6129d981612e8b565b50565b6000546001600160a01b03163314611a06576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610632565b6000612a318484846000612b6f565b949350505050565b60005b8151811015612b5457818181518110612a5757612a576143d7565b6020026020010151600284604051612a6f919061403a565b90815260200160405180910390206000848481518110612a9157612a916143d7565b6020026020010151600001516006811115612aae57612aae613794565b6006811115612abf57612abf613794565b8152602081019190915260400160002081518154829060ff19166001836006811115612aed57612aed613794565b02179055506020828101518051612b0a926001850192019061345c565b5060408201518051612b269160028401916020909101906134b2565b50606091909101516003909101805460ff191691151591909117905580612b4c816143ed565b915050612a3c565b505050565b6000612b688383600080612b6f565b9392505050565b6000600285604051612b81919061403a565b90815260200160405180910390206000856006811115612ba357612ba3613794565b6006811115612bb457612bb4613794565b815260208101919091526040016000206003015460ff16612bd757506000612a31565b60005b600286604051612bea919061403a565b90815260200160405180910390206000866006811115612c0c57612c0c613794565b6006811115612c1d57612c1d613794565b8152602081019190915260400160002060010154811015612e7f576000600287604051612c4a919061403a565b90815260200160405180910390206000876006811115612c6c57612c6c613794565b6006811115612c7d57612c7d613794565b81526020019081526020016000206001018281548110612c9f57612c9f6143d7565b90600052602060002001604051602001612cb99190614406565b6040516020818303038152906040528051906020012090506000612dd582612dd060028b604051612cea919061403a565b908152602001604051809103902060008b6006811115612d0c57612d0c613794565b6006811115612d1d57612d1d613794565b81526020019081526020016000206002018681548110612d3f57612d3f6143d7565b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015612dc357602002820191906000526020600020906000905b82829054906101000a900460ff166007811115612da157612da1613794565b815260206001928301818104948501949093039092029101808411612d825790505b50505050508b898b613046565b613363565b90506000600189604051612de9919061403a565b908152604051908190036020018120600101546001600160a01b031690612e1190849061403a565b6000604051808303816000865af19150503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5050905080612e69576000945050505050612a31565b5050508080612e77906143ed565b915050612bda565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60045481101561304257612fa460048281548110612f0b57612f0b6143d7565b906000526020600020018054612f2090614000565b80601f0160208091040260200160405190810160405280929190818152602001828054612f4c90614000565b8015612f995780601f10612f6e57610100808354040283529160200191612f99565b820191906000526020600020905b815481529060010190602001808311612f7c57829003601f168201915b5050505050836133fd565b156130305760048054612fb9906001906141e4565b81548110612fc957612fc96143d7565b9060005260206000200160048281548110612fe657612fe66143d7565b906000526020600020019081612ffc919061447c565b50600480548061300e5761300e614557565b60019003818190600052602060002001600061302a9190613422565b90555050565b8061303a816143ed565b915050612eeb565b5050565b60606000855167ffffffffffffffff8111156130645761306461362f565b60405190808252806020026020018201604052801561309757816020015b60608152602001906001900390816130825790505b50905060005b86518110156133595760058782815181106130ba576130ba6143d7565b602002602001015160078111156130d3576130d3613794565b036131155760408051306020820152015b604051602081830303815290604052828281518110613105576131056143d7565b6020026020010181905250613347565b6002878281518110613129576131296143d7565b6020026020010151600781111561314257613142613794565b0361315857856040516020016130e49190614056565b600487828151811061316c5761316c6143d7565b6020026020010151600781111561318557613185613794565b0361319b576040805160208101869052016130e4565b60038782815181106131af576131af6143d7565b602002602001015160078111156131c8576131c8613794565b03613206576001866040516131dd919061403a565b908152604080519182900360209081018320600401546001600160a01b031690830152016130e4565b600087828151811061321a5761321a6143d7565b6020026020010151600781111561323357613233613794565b0361327157600186604051613248919061403a565b908152604080519182900360209081018320600101546001600160a01b031690830152016130e4565b6006878281518110613285576132856143d7565b6020026020010151600781111561329e5761329e613794565b036132bc57604080516001600160a01b0387166020820152016130e4565b60078782815181106132d0576132d06143d7565b602002602001015160078111156132e9576132e9613794565b036132ff576040805160208101869052016130e4565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f72746564000000000000000000006044820152606401610632565b80613351816143ed565b91505061309d565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561114657818382815181106133c0576133c06143d7565b60200260200101516040516020016133d992919061456d565b604051602081830303815290604052915080806133f5906143ed565b9150506133a4565b600081518351148015612b685750508051602091820120825192909101919091201490565b50805461342e90614000565b6000825580601f1061343e575050565b601f0160209004906000526020600020908101906129d9919061350b565b8280548282559060005260206000209081019282156134a2579160200282015b828111156134a2578251829061349290826140e0565b509160200191906001019061347c565b506134ae929150613520565b5090565b8280548282559060005260206000209081019282156134ff579160200282015b828111156134ff57825180516134ef91849160209091019061353d565b50916020019190600101906134d2565b506134ae9291506135ed565b5b808211156134ae576000815560010161350c565b808211156134ae5760006135348282613422565b50600101613520565b82805482825590600052602060002090601f016020900481019282156135e15791602002820160005b838211156135b257835183826101000a81548160ff0219169083600781111561359157613591613794565b02179055509260200192600101602081600001049283019260010302613566565b80156135df5782816101000a81549060ff02191690556001016020816000010492830192600103026135b2565b505b506134ae92915061350b565b808211156134ae576000613601828261360a565b506001016135ed565b50805460008255601f0160209004906000526020600020908101906129d9919061350b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156136685761366861362f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136975761369761362f565b604052919050565b600082601f8301126136b057600080fd5b813567ffffffffffffffff8111156136ca576136ca61362f565b6136dd601f8201601f191660200161366e565b8181528460208386010111156136f257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561372157600080fd5b813567ffffffffffffffff81111561373857600080fd5b612a318482850161369f565b60005b8381101561375f578181015183820152602001613747565b50506000910152565b60008151808452613780816020860160208601613744565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106137ba576137ba613794565b9052565b600481106137ba576137ba613794565b60006101008083526137e28184018c613768565b90506001600160a01b03808b166020850152613801604085018b6137aa565b8382036060850152613813828a613768565b915083820360808501526138278289613768565b925080871660a085015250508360c083015261384660e08301846137be565b9998505050505050505050565b6000806040838503121561386657600080fd5b823567ffffffffffffffff81111561387d57600080fd5b6138898582860161369f565b95602094909401359450505050565b80356001600160a01b0381168114611c5457600080fd5b6000806000806000608086880312156138c757600080fd5b6138d086613898565b94506138de60208701613898565b935060408601359250606086013567ffffffffffffffff8082111561390257600080fd5b818801915088601f83011261391657600080fd5b81358181111561392557600080fd5b89602082850101111561393757600080fd5b9699959850939650602001949392505050565b6020815260008251610100806020850152613969610120850183613768565b9150602085015161398560408601826001600160a01b03169052565b50604085015161399860608601826137aa565b506060850151601f19808685030160808701526139b58483613768565b935060808701519150808685030160a0870152506139d38382613768565b92505060a08501516139f060c08601826001600160a01b03169052565b5060c085015160e085015260e0850151613a0c828601826137be565b5090949350505050565b803560038110611c5457600080fd5b600067ffffffffffffffff821115613a3f57613a3f61362f565b5060051b60200190565b803560078110611c5457600080fd5b600082601f830112613a6957600080fd5b81356020613a7e613a7983613a25565b61366e565b828152600592831b8501820192828201919087851115613a9d57600080fd5b8387015b85811015613b4257803567ffffffffffffffff811115613ac15760008081fd5b8801603f81018a13613ad35760008081fd5b858101356040613ae5613a7983613a25565b82815291851b8301810191888101908d841115613b025760008081fd5b938201935b83851015613b31578435925060088310613b215760008081fd5b8282529389019390890190613b07565b885250505093850193508401613aa1565b5090979650505050505050565b80151581146129d957600080fd5b8035611c5481613b4f565b600082601f830112613b7957600080fd5b613b86613a798335613a25565b82358082526020808301929160051b85010185811115613ba557600080fd5b602085015b81811015613cd65767ffffffffffffffff8082351115613bc957600080fd5b813587016080818a03601f19011215613be157600080fd5b613be9613645565b613bf560208301613a49565b8152604082013583811115613c0957600080fd5b8201603f81018b13613c1a57600080fd5b6020810135613c2b613a7982613a25565b81815260059190911b82016040019060208101908d831115613c4c57600080fd5b604084015b83811015613c85578781351115613c6757600080fd5b613c778f6040833588010161369f565b835260209283019201613c51565b506020850152505050606082013583811115613ca057600080fd5b613caf8b602083860101613a58565b604083015250613cc160808301613b5d565b60608201528652505060209384019301613baa565b509095945050505050565b803560048110611c5457600080fd5b600080600080600080600080610100898b031215613d0d57600080fd5b883567ffffffffffffffff80821115613d2557600080fd5b613d318c838d0161369f565b9950613d3f60208c01613898565b9850613d4d60408c01613a16565b975060608b0135915080821115613d6357600080fd5b613d6f8c838d0161369f565b965060808b0135915080821115613d8557600080fd5b613d918c838d0161369f565b9550613d9f60a08c01613898565b945060c08b0135915080821115613db557600080fd5b50613dc28b828c01613b68565b925050613dd160e08a01613ce1565b90509295985092959890939650565b600080600060608486031215613df557600080fd5b833567ffffffffffffffff811115613e0c57600080fd5b613e188682870161369f565b935050613e2760208501613898565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015613e7f578284038952613e6d848351613768565b98850198935090840190600101613e55565b5091979650505050505050565b602081526000612b686020830184613e37565b600080600080600080600060e0888a031215613eba57600080fd5b873567ffffffffffffffff80821115613ed257600080fd5b613ede8b838c0161369f565b9850613eec60208b01613898565b9750613efa60408b01613a16565b965060608a0135915080821115613f1057600080fd5b613f1c8b838c0161369f565b955060808a0135915080821115613f3257600080fd5b50613f3f8a828b0161369f565b935050613f4e60a08901613898565b9150613f5c60c08901613ce1565b905092959891949750929550565b60008060408385031215613f7d57600080fd5b823567ffffffffffffffff811115613f9457600080fd5b613fa08582860161369f565b925050613faf60208401613a49565b90509250929050565b600781106137ba576137ba613794565b60408101613fd68285613fb8565b82151560208301529392505050565b600060208284031215613ff757600080fd5b612b6882613898565b600181811c9082168061401457607f821691505b60208210810361403457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161404c818460208701613744565b9190910192915050565b602081526000612b686020830184613768565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092557610925614069565b601f821115612b5457600081815260208120601f850160051c810160208610156140b95750805b601f850160051c820191505b818110156140d8578281556001016140c5565b505050505050565b815167ffffffffffffffff8111156140fa576140fa61362f565b61410e816141088454614000565b84614092565b602080601f831160018114614143576000841561412b5750858301515b600019600386901b1c1916600185901b1785556140d8565b600085815260208120601f198616915b8281101561417257888601518255948401946001909101908401614153565b50858210156141905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006141b36080830187613768565b90506001600160a01b0380861660208401526141d260408401866137aa565b80841660608401525095945050505050565b8181038181111561092557610925614069565b60408152600061420a6040830185613768565b90508260208301529392505050565b6101008152600061422e61010083018b613768565b6001600160a01b03808b16602085015261424b604085018b6137aa565b838203606085015261425d828a613768565b915083820360808501526142718289613768565b915080871660a08501525082810360c084015280855180835260208301915060208160051b8401016020880160005b838110156143a457601f198087850301865282516142bf858251613fb8565b6020810151608060208701526142d86080870182613e37565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561436d57858203880184528451805180845260209182019184019060005b818110156143555783516008811061434157614341613794565b835260209384019390920191600101614327565b50506020968701969590950194925050600101614305565b506060860151965061438360608b018815159052565b809950505050505050506020820191506020850194506001810190506142a0565b50508094505050505061384660e08301846137be565b6000602082840312156143cc57600080fd5b8151612b6881613b4f565b634e487b7160e01b600052603260045260246000fd5b6000600182016143ff576143ff614069565b5060010190565b600080835461441481614000565b6001828116801561442c576001811461444157614470565b60ff1984168752821515830287019450614470565b8760005260208060002060005b858110156144675781548a82015290840190820161444e565b50505082870194505b50929695505050505050565b818103614487575050565b6144918254614000565b67ffffffffffffffff8111156144a9576144a961362f565b6144b7816141088454614000565b6000601f8211600181146144eb57600083156144d35750848201545b600019600385901b1c1916600184901b178455614550565b600085815260209020601f19841690600086815260209020845b838110156145255782860154825560019586019590910190602001614505565b50858310156145435781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b6000835161457f818460208801613744565b835190830190614593818360208801613744565b0194935050505056fea2646970667358221220cc545097d62ab752192a515a53206f325e79a54a4fe781e2769cb76ecb844be064736f6c6343000814003360806040523480156200001157600080fd5b5060405162001226380380620012268339810160408190526200003491620001ac565b6040518060400160405280600981526020016829a0aa282a37b5b2b760b91b815250604051806040016040528060048152602001630534154560e41b815250816004908162000084919062000283565b50600562000093828262000283565b505050620000c87fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82620000fd60201b60201c565b50620000f57f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f82620000fd565b50506200034f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001a6565b5060005b92915050565b600060208284031215620001bf57600080fd5b81516001600160a01b0381168114620001d757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020957607f821691505b6020821081036200022a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027e57600081815260208120601f850160051c81016020861015620002595750805b601f850160051c820191505b818110156200027a5782815560010162000265565b5050505b505050565b81516001600160401b038111156200029f576200029f620001de565b620002b781620002b08454620001f4565b8462000230565b602080601f831160018114620002ef5760008415620002d65750858301515b600019600386901b1c1916600185901b1785556200027a565b600085815260208120601f198616915b828110156200032057888601518255948401946001909101908401620002ff565b50858210156200033f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ec7806200035f6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c634300081400336272696467655472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629546f6b656e2073686f756c64206e6f74206578697374206265666f7265207772617070696e67a2646970667358221220887c65c229643abfc34196627c394a8021affb5ca0df69a73b883487b6853f0464736f6c63430008140033","sourceMap":"1572:26:17:-:0;;;1594:4;-1:-1:-1;;1572:26:17;;;;;;;;3161:44:20;;;;;;;;;;;421:16:43;240:6380;421:16;240:6380;421:16;;;-1:-1:-1;;;421:16:43;;;;:8;:16::i;:::-;399:38;;;-1:-1:-1;;;;;;399:38:43;-1:-1:-1;;;;;399:38:43;;;;;;;;;;466:17;;;;;;;;;;;;-1:-1:-1;;;466:17:43;;;;;;:8;:17::i;:::-;443:40;;;-1:-1:-1;;;;;;443:40:43;-1:-1:-1;;;;;443:40:43;;;;;;;;;;240:6380;;;;;;;;;;;;16374:125:21;16438:12;16472:20;16487:4;16472:14;:20::i;:::-;-1:-1:-1;16462:30:21;16374:125;-1:-1:-1;;16374:125:21:o;16093:242::-;16163:12;16177:18;16255:4;16238:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16238:22:21;;;;;;;16228:33;;16238:22;16228:33;;;;-1:-1:-1;;;;;;16279:19:21;;;;;709:25:45;;;16228:33:21;-1:-1:-1;16279:7:21;;;;682:18:45;;16279:19:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16308:20;;-1:-1:-1;;;16308:20:21;;16272:26;;-1:-1:-1;16308:8:21;;;;:20;;16272:26;;16323:4;;16308:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16093:242;;;:::o;14:250:45:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:45;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:45:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:45;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:45:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:45;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:45:o;:::-;240:6380:43;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001955760003560e01c80639642ddaf11620000e9578063c0ef02641162000097578063e20c9f71116200006e578063e20c9f7114620002c4578063eb66037e14620002ce578063fa7626d414620002d857600080fd5b8063c0ef026414620002a6578063c43484d614620002b0578063cb1f5f2b14620002ba57600080fd5b8063b74cda5611620000cc578063b74cda56146200026d578063b9edb1af1462000277578063ba414fa6146200028b57600080fd5b80639642ddaf1462000259578063b5508aa9146200026357600080fd5b80635266885a11620001475780638312289b116200012a5780638312289b146200022c57806385226c811462000236578063916a17c6146200024f57600080fd5b80635266885a146200020957806366d9a9a0146200021357600080fd5b80633e5e3c23116200017c5780633e5e3c2314620001c85780633f7286f414620001d25780634f8632ba14620001dc57600080fd5b80630a9254e4146200019a5780631ed7831c14620001a6575b600080fd5b620001a4620002e6565b005b620001b06200173e565b604051620001bf919062003c00565b60405180910390f35b620001b0620017a2565b620001b062001804565b601e54620001f0906001600160a01b031681565b6040516001600160a01b039091168152602001620001bf565b620001a462001866565b6200021d62001a1b565b604051620001bf919062003c4f565b620001a462001b23565b6200024062001f49565b604051620001bf919062003d5a565b6200021d62002023565b620001a462002122565b6200024062002453565b620001a46200252d565b601f54620001f0906001600160a01b031681565b62000295620027e2565b6040519015158152602001620001bf565b620001a46200291a565b620001a462002a49565b620001a462002dec565b620001b062002e8c565b620001a462002eee565b600054620002959060ff1681565b30604051620002f5906200383d565b6001600160a01b039091168152602001604051809103906000f08015801562000322573d6000803e3d6000fd5b50601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040516200035d906200384b565b6001600160a01b039091168152602001604051809103906000f0801580156200038a573d6000803e3d6000fd5b50601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556020805460018101825560008281526040805160608101909152602b8082527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb90930193919290916200a899908301396200041591508262003e64565b5060408051606081019091526021908060038152602001600581526020016004905281546001810183556000928352602090922062000458920190600362003859565b50604080516080810182526004815260208054835181830281018301909452808452600093828401929091858383015b828210156200053e578382906000526020600020018054620004aa9062003dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054620004d89062003dd6565b8015620005295780601f10620004fd5761010080835404028352916020019162000529565b820191906000526020600020905b8154815290600101906020018083116200050b57829003601f168201915b50505050508152602001906001019062000488565b5050505081526020016021805480602002602001604051908101604052809291908181526020016000905b828210156200060c57600084815260209081902083018054604080518285028101850190915281815292830182828015620005f757602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620005d457620005d462003f31565b815260206001928301818104948501949093039092029101808411620005b25790505b50505050508152602001906001019062000569565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff1916908360068111156200067a576200067a62003f31565b0217905550602082810151805162000699926001850192019062003917565b5060408201518051620006b791600284019160209091019062003970565b50606091909101516003909101805460ff19169115159190911790556022805460018101825560009190915260408051808201909152601d81527f6c6f636b28616464726573732c616464726573732c75696e743235362900000060208201527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e5109091019062000748908262003e64565b506040805160608101909152602390806005815260200160038152602001600490528154600181018355600092835260209092206200078b920190600362003859565b50604080516080810190915260009080600581526020016022805480602002602001604051908101604052809291908181526020016000905b828210156200087a578382906000526020600020018054620007e69062003dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054620008149062003dd6565b8015620008655780601f10620008395761010080835404028352916020019162000865565b820191906000526020600020905b8154815290600101906020018083116200084757829003601f168201915b505050505081526020019060010190620007c4565b5050505081526020016023805480602002602001604051908101604052809291908181526020016000905b8282101562000948576000848152602090819020830180546040805182850281018501909152818152928301828280156200093357602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000910576200091062003f31565b815260206001928301818104948501949093039092029101808411620008ee5790505b505050505081526020019060010190620008a5565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff191690836006811115620009b657620009b662003f31565b02179055506020828101518051620009d5926001850192019062003917565b5060408201518051620009f391600284019160209091019062003970565b50606091909101516003909101805460ff19169115159190911790556024805460018101825560009190915260408051808201909152601581527f6d696e7428616464726573732c75696e7432353629000000000000000000000060208201527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec49091019062000a84908262003e64565b506040805180820190915260058152600460208201526025805460018101825560009190915262000adc917f401968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c909101906002620039d0565b506040805160808101909152600090808281526020016024805480602002602001604051908101604052809291908181526020016000905b8282101562000bca57838290600052602060002001805462000b369062003dd6565b80601f016020809104026020016040519081016040528092919081815260200182805462000b649062003dd6565b801562000bb55780601f1062000b895761010080835404028352916020019162000bb5565b820191906000526020600020905b81548152906001019060200180831162000b9757829003601f168201915b50505050508152602001906001019062000b14565b5050505081526020016025805480602002602001604051908101604052809291908181526020016000905b8282101562000c985760008481526020908190208301805460408051828502810185019091528181529283018282801562000c8357602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000c605762000c6062003f31565b81526020600192830181810494850194909303909202910180841162000c3e5790505b50505050508152602001906001019062000bf5565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff19169083600681111562000d065762000d0662003f31565b0217905550602082810151805162000d25926001850192019062003917565b506040820151805162000d4391600284019160209091019062003970565b50606091909101516003909101805460ff19169115159190911790556026805460018101825560009190915260408051808201909152601581527f6275726e28616464726573732c75696e7432353629000000000000000000000060208201527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a35949091019062000dd4908262003e64565b506040805180820190915260058152600460208201526027805460018101825560009190915262000e2c917f98a476f1687bc3d60a2da2adbcba2c46958e61fa2fb4042cd7bc5816a710195b909101906002620039d0565b50604080516080810190915260009080600181526020016026805480602002602001604051908101604052809291908181526020016000905b8282101562000f1b57838290600052602060002001805462000e879062003dd6565b80601f016020809104026020016040519081016040528092919081815260200182805462000eb59062003dd6565b801562000f065780601f1062000eda5761010080835404028352916020019162000f06565b820191906000526020600020905b81548152906001019060200180831162000ee857829003601f168201915b50505050508152602001906001019062000e65565b5050505081526020016027805480602002602001604051908101604052809291908181526020016000905b8282101562000fe95760008481526020908190208301805460408051828502810185019091528181529283018282801562000fd457602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000fb15762000fb162003f31565b81526020600192830181810494850194909303909202910180841162000f8f5790505b50505050508152602001906001019062000f46565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff19169083600681111562001057576200105762003f31565b0217905550602082810151805162001076926001850192019062003917565b50604082015180516200109491600284019160209091019062003970565b50606091909101516003909101805460ff19169115159190911790556028805460018101825560009190915260408051808201909152601f81527f61737369676e28616464726573732c616464726573732c75696e74323536290060208201527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab59091019062001125908262003e64565b5060408051606081019091526029908060058152602001600681526020016004905281546001810183556000928352602090922062001168920190600362003859565b50604080516080810190915260009080600281526020016028805480602002602001604051908101604052809291908181526020016000905b8282101562001257578382906000526020600020018054620011c39062003dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054620011f19062003dd6565b8015620012425780601f10620012165761010080835404028352916020019162001242565b820191906000526020600020905b8154815290600101906020018083116200122457829003601f168201915b505050505081526020019060010190620011a1565b5050505081526020016029805480602002602001604051908101604052809291908181526020016000905b8282101562001325576000848152602090819020830180546040805182850281018501909152818152928301828280156200131057602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620012ed57620012ed62003f31565b815260206001928301818104948501949093039092029101808411620012cb5790505b50505050508152602001906001019062001282565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff19169083600681111562001393576200139362003f31565b02179055506020828101518051620013b2926001850192019062003917565b5060408201518051620013d091600284019160209091019062003970565b50606091909101516003909101805460ff1916911515919091179055602a805460018101825560009190915260408051808201909152601681527f6861735065726d697373696f6e2861646472657373290000000000000000000060208201527fbeced09521047d05b8960b7e7bcc1d1292cf3e4b2a6b63f48335cbde5f7545d29091019062001461908262003e64565b50604080516020810190915260058152602b805460018082018355600092909252620014b2927f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f9091019162003a4b565b5060408051608081019091526000908060038152602001602a805480602002602001604051908101604052809291908181526020016000905b82821015620015a15783829060005260206000200180546200150d9062003dd6565b80601f01602080910402602001604051908101604052809291908181526020018280546200153b9062003dd6565b80156200158c5780601f1062001560576101008083540402835291602001916200158c565b820191906000526020600020905b8154815290600101906020018083116200156e57829003601f168201915b505050505081526020019060010190620014eb565b505050508152602001602b805480602002602001604051908101604052809291908181526020016000905b828210156200166f576000848152602090819020830180546040805182850281018501909152818152928301828280156200165a57602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562001637576200163762003f31565b815260206001928301818104948501949093039092029101808411620016155790505b505050505081526020019060010190620015cc565b5050509082525060016020909101819052601c80548083018255600091909152825160049091027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a21101805493945084939092839160ff191690836006811115620016dd57620016dd62003f31565b02179055506020828101518051620016fc926001850192019062003917565b50604082015180516200171a91600284019160209091019062003970565b50606091909101516003909101805460ff1916911515919091179055505050505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200179857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001779575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562001798576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001779575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562001798576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001779575050505050905090565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa158015620018bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018e591908101906200401d565b6040518263ffffffff1660e01b815260040162001903919062004056565b6020604051808303816000875af192505050801562001941575060408051601f3d908101601f191682019092526200193e9181019062004072565b60015b620019ac576200195062004096565b806308c379a00362001977575062001967620040b2565b8062001974575062001979565b50565b505b3d808015620019a3576040519150601f19603f3d011682016040523d82523d6000602084013e5050565b606091505b5050565b801562001974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f457870656374656420616e206572726f72000000000000000000000000000000604482015260640160405180910390fd5b565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001b1a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b0157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001aad5790505b5050505050815250508152602001906001019062001a3f565b50505050905090565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562001b78573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ba291908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa15801562001bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c1c91908101906200401d565b601e546040516001600160e01b031960e088901b16815262001c5595949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af115801562001c75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c9b919062004072565b50601d54601b54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa15801562001cf5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d1f91908101906200401d565b6040518263ffffffff1660e01b815260040162001d3d919062004056565b600060405180830381865afa15801562001d5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d85919081019062004b64565b905062001de28160200151601b60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d61746368000000000000000000000000000081525062003199565b601d54604080517f5137b8a7000000000000000000000000000000000000000000000000000000008152905162001974926001600160a01b031691635137b8a79160048083019260009291908290030181865afa15801562001e48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e72919081019062004c7e565b60008151811062001e875762001e8762004d50565b6020026020010151601b60009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001ee3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f0d91908101906200401d565b6040518060400160405280600f81526020017f49647320646f6e2774206d617463680000000000000000000000000000000000815250620031fd565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001b1a57838290600052602060002001805462001f8f9062003dd6565b80601f016020809104026020016040519081016040528092919081815260200182805462001fbd9062003dd6565b80156200200e5780601f1062001fe2576101008083540402835291602001916200200e565b820191906000526020600020905b81548152906001019060200180831162001ff057829003601f168201915b50505050508152602001906001019062001f6d565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001b1a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200210957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020b55790505b5050505050815250508152602001906001019062002047565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002177573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620021a191908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa158015620021f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200221b91908101906200401d565b601e546040516001600160e01b031960e088901b1681526200225495949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af115801562002274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200229a919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620022f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200231a91908101906200401d565b600a6040518363ffffffff1660e01b81526004016200233b92919062004d66565b6020604051808303816000875af11580156200235b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002381919062004072565b50601b54601d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262001a199291909116906370a0823190602401602060405180830381865afa158015620023ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002415919062004d8a565b600a6040518060400160405280601081526020017f546f6b656e206e6f74206d696e746564000000000000000000000000000000008152506200329a565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001b1a578382906000526020600020018054620024999062003dd6565b80601f0160208091040260200160405190810160405280929190818152602001828054620024c79062003dd6565b8015620025185780601f10620024ec5761010080835404028352916020019162002518565b820191906000526020600020905b815481529060010190602001808311620024fa57829003601f168201915b50505050508152602001906001019062002477565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002582573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025ac91908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa158015620025fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200262691908101906200401d565b601e546040516001600160e01b031960e088901b1681526200265f95949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af11580156200267f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026a5919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620026fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200272591908101906200401d565b600a6040518363ffffffff1660e01b81526004016200274692919062004d66565b6020604051808303816000875af115801562002766573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200278c919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa158015620018bb573d6000803e3d6000fd5b60008054610100900460ff1615620028035750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620029125760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002894917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162004da4565b60408051601f1981840301815290829052620028b09162004dd6565b6000604051808303816000865af19150503d8060008114620028ef576040519150601f19603f3d011682016040523d82523d6000602084013e620028f4565b606091505b50915050808060200190518101906200290e919062004072565b9150505b919050565b90565b601d54601b54604080517f95d89b4100000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039081169363c1733f68939116916395d89b419160048082019288929091908290030181865afa1580156200298c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620029b691908101906200401d565b6040518263ffffffff1660e01b8152600401620029d4919062004056565b600060405180830381865afa158015620029f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a1c919081019062004b64565b905062001974816020015160006040518060600160405280602681526020016200a8c46026913962003199565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002a9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002ac891908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa15801562002b18573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b4291908101906200401d565b601e546040516001600160e01b031960e088901b16815262002b7b95949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af115801562002b9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bc1919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562002c17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002c4191908101906200401d565b6040518263ffffffff1660e01b815260040162002c5f919062004056565b6020604051808303816000875af115801562002c7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ca5919062004072565b50601d54601b54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa15801562002cff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d2991908101906200401d565b6040518263ffffffff1660e01b815260040162002d47919062004056565b600060405180830381865afa15801562002d65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d8f919081019062004b64565b9050620019748160200151601b60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d617463680000000000000000000000000000815250620032e7565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa15801562002e41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002e6b91908101906200401d565b600a6040518363ffffffff1660e01b81526004016200190392919062004d66565b6060600c80548060200260200160405190810160405280929190818152602001828054801562001798576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001779575050505050905090565b601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f6d91908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa15801562002fbd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002fe791908101906200401d565b601e546040516001600160e01b031960e088901b1681526200302095949392916001600160a01b031690601c90600190600401620048e9565b6020604051808303816000875af115801562003040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003066919062004072565b50601d54601b54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa158015620030bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620030e691908101906200401d565b601b54604080516306fdde0360e01b815290516001600160a01b039092169160019183916306fdde03916004808201926000929091908290030181865afa15801562003136573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200316091908101906200401d565b601e546040516001600160e01b031960e088901b1681526200190395949392916001600160a01b031690601c90600190600401620048e9565b816001600160a01b0316836001600160a01b031614620031f8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620031e4919062004df4565b60405180910390a1620031f8838362003346565b505050565b8160405160200162003210919062004dd6565b604051602081830303815290604052805190602001208360405160200162003239919062004dd6565b6040516020818303038152906040528051906020012014620031f8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162003286919062004df4565b60405180910390a1620031f8838362003452565b818314620031f8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620032d3919062004df4565b60405180910390a1620031f88383620035a2565b816001600160a01b0316836001600160a01b031603620031f8577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162003332919062004df4565b60405180910390a1620031f88383620036a2565b806001600160a01b0316826001600160a01b031614620019a8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620033ce9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162003407919062004e3d565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8160405162003440919062004e7f565b60405180910390a1620019a86200372a565b8060405160200162003465919062004dd6565b60405160208183030381529060405280519060200120826040516020016200348e919062004dd6565b6040516020818303038152906040528051906020012014620019a8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620035309060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838260405162003569919062004eaa565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162003440919062004ee9565b808214620019a8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620036309060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162003669919062004f14565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162003440919062004f4d565b806001600160a01b0316826001600160a01b031603620019a8577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620033ce9060208082526025908201527f4572726f723a206120213d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200382c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f1981840301815290829052620037c7929160200162004da4565b60408051601f1981840301815290829052620037e39162004dd6565b6000604051808303816000865af19150503d806000811462003822576040519150601f19603f3d011682016040523d82523d6000602084013e62003827565b606091505b505050505b6000805461ff001916610100179055565b6146fa8062004f7983390190565b611226806200967383390190565b82805482825590600052602060002090601f01602090048101928215620039055791602002820160005b83821115620038d457835183826101000a81548160ff02191690836007811115620038b257620038b262003f31565b0217905550926020019260010160208160000104928301926001030262003883565b8015620039035782816101000a81549060ff0219169055600101602081600001049283019260010302620038d4565b505b506200391392915062003ac6565b5090565b82805482825590600052602060002090810192821562003962579160200282015b8281111562003962578251829062003951908262003e64565b509160200191906001019062003938565b506200391392915062003add565b828054828255906000526020600020908101928215620039c2579160200282015b82811115620039c25782518051620039b191849160209091019062003afe565b509160200191906001019062003991565b506200391392915062003b79565b82805482825590600052602060002090601f01602090048101928215620039055791602002820160005b83821115620038d457835183826101000a81548160ff0219169083600781111562003a295762003a2962003f31565b02179055509260200192600101602081600001049283019260010302620039fa565b82805482825590600052602060002090601f01602090048101928215620039055791602002820160005b83821115620038d457835183826101000a81548160ff0219169083600781111562003aa45762003aa462003f31565b0217905550926020019260010160208160000104928301926001030262003a75565b5b8082111562003913576000815560010162003ac7565b808211156200391357600062003af4828262003b9a565b5060010162003add565b82805482825590600052602060002090601f01602090048101928215620039055791602002820160005b83821115620038d457835183826101000a81548160ff0219169083600781111562003b575762003b5762003f31565b0217905550926020019260010160208160000104928301926001030262003b28565b808211156200391357600062003b90828262003bd9565b5060010162003b79565b50805462003ba89062003dd6565b6000825580601f1062003bb9575050565b601f01602090049060005260206000209081019062001974919062003ac6565b50805460008255601f01602090049060005260206000209081019062001974919062003ac6565b6020808252825182820181905260009190848201906040850190845b8181101562003c435783516001600160a01b03168352928401929184019160010162003c1c565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562003cf757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562003ce15783516001600160e01b0319168252928b019260019290920191908b019062003cb5565b50978a0197955050509187019160010162003c77565b50919998505050505050505050565b60005b8381101562003d2357818101518382015260200162003d09565b50506000910152565b6000815180845262003d4681602086016020860162003d06565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562003db357603f1988860301845262003da085835162003d2c565b9450928501929085019060010162003d81565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062003deb57607f821691505b60208210810362003e0c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620031f857600081815260208120601f850160051c8101602086101562003e3b5750805b601f850160051c820191505b8181101562003e5c5782815560010162003e47565b505050505050565b815167ffffffffffffffff81111562003e815762003e8162003dc0565b62003e998162003e92845462003dd6565b8462003e12565b602080601f83116001811462003ed1576000841562003eb85750858301515b600019600386901b1c1916600185901b17855562003e5c565b600085815260208120601f198616915b8281101562003f025788860151825594840194600190910190840162003ee1565b508582101562003f215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171562003f705762003f7062003dc0565b6040525050565b604051610100810167ffffffffffffffff8111828210171562003f9e5762003f9e62003dc0565b60405290565b600082601f83011262003fb657600080fd5b815167ffffffffffffffff81111562003fd35762003fd362003dc0565b60405162003fec601f8301601f19166020018262003f47565b8181528460208386010111156200400257600080fd5b6200401582602083016020870162003d06565b949350505050565b6000602082840312156200403057600080fd5b815167ffffffffffffffff8111156200404857600080fd5b620040158482850162003fa4565b6020815260006200406b602083018462003d2c565b9392505050565b6000602082840312156200408557600080fd5b815180151581146200406b57600080fd5b600060033d1115620029175760046000803e5060005160e01c90565b600060443d1015620040c15790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715620040f257505050505090565b82850191508151818111156200410b5750505050505090565b843d8701016020828501011115620041265750505050505090565b620041376020828601018762003f47565b509095945050505050565b6008811062004155576200415562003f31565b9052565b600081548084526020808501808196508360051b81019150856000528260002060005b85811015620048c957828403895281548085526000838152602080822090870192915b82601f820110156200445a57815460ff620041bd8682841662004142565b620041d08b8701828460081c1662004142565b620041e460408701828460101c1662004142565b620041f860608701828460181c1662004142565b60806200420c81880183858f1c1662004142565b60a062004221818901848660281c1662004142565b60c062004236818a01858760301c1662004142565b60e06200424b818b01868860381c1662004142565b620042606101008b01868860401c1662004142565b620042756101208b01868860481c1662004142565b6200428a6101408b01868860501c1662004142565b6200429f6101608b01868860581c1662004142565b620042b46101808b01868860601c1662004142565b620042c96101a08b01868860681c1662004142565b620042de6101c08b01868860701c1662004142565b620042f36101e08b01868860781c1662004142565b620043076102008b018688871c1662004142565b6200431c6102208b01868860881c1662004142565b620043316102408b01868860901c1662004142565b620043466102608b01868860981c1662004142565b6200435a6102808b018688861c1662004142565b6200436f6102a08b01868860a81c1662004142565b620043846102c08b01868860b01c1662004142565b620043996102e08b01868860b81c1662004142565b620043ad6103008b018688851c1662004142565b620043c26103208b01868860c81c1662004142565b620043d76103408b01868860d01c1662004142565b620043ec6103608b01868860d81c1662004142565b620044006103808b018688841c1662004142565b50505050620044196103a08701828460e81c1662004142565b6200442e6103c08701828460f01c1662004142565b50620044426103e086018260f81c62004142565b5061040093909301926001919091019088016200419f565b905490828110156200447d57620044758460ff841662004142565b928801926001015b82811015620044a057620044988460ff8460081c1662004142565b928801926001015b82811015620044c357620044bb8460ff8460101c1662004142565b928801926001015b82811015620044e657620044de8460ff8460181c1662004142565b928801926001015b828110156200450857620045008460ff848c1c1662004142565b928801926001015b828110156200452b57620045238460ff8460281c1662004142565b928801926001015b828110156200454e57620045468460ff8460301c1662004142565b928801926001015b828110156200457157620045698460ff8460381c1662004142565b928801926001015b8281101562004594576200458c8460ff8460401c1662004142565b928801926001015b82811015620045b757620045af8460ff8460481c1662004142565b928801926001015b82811015620045da57620045d28460ff8460501c1662004142565b928801926001015b82811015620045fd57620045f58460ff8460581c1662004142565b928801926001015b828110156200462057620046188460ff8460601c1662004142565b928801926001015b8281101562004643576200463b8460ff8460681c1662004142565b928801926001015b8281101562004666576200465e8460ff8460701c1662004142565b928801926001015b828110156200468957620046818460ff8460781c1662004142565b928801926001015b82811015620046ac57620046a48460ff8460801c1662004142565b928801926001015b82811015620046cf57620046c78460ff8460881c1662004142565b928801926001015b82811015620046f257620046ea8460ff8460901c1662004142565b928801926001015b8281101562004715576200470d8460ff8460981c1662004142565b928801926001015b828110156200473857620047308460ff8460a01c1662004142565b928801926001015b828110156200475b57620047538460ff8460a81c1662004142565b928801926001015b828110156200477e57620047768460ff8460b01c1662004142565b928801926001015b82811015620047a157620047998460ff8460b81c1662004142565b928801926001015b82811015620047c457620047bc8460ff8460c01c1662004142565b928801926001015b82811015620047e757620047df8460ff8460c81c1662004142565b928801926001015b828110156200480a57620048028460ff8460d01c1662004142565b928801926001015b828110156200482d57620048258460ff8460d81c1662004142565b928801926001015b828110156200485057620048488460ff8460e01c1662004142565b928801926001015b8281101562004873576200486b8460ff8460e81c1662004142565b928801926001015b8281101562004896576200488e8460ff8460f01c1662004142565b928801926001015b82811015620048b357620048ae848360f81c62004142565b928801925b505050988501989350600191820191016200417c565b5091979650505050505050565b6004811062004155576200415562003f31565b610100815260006200490061010083018a62003d2c565b6001600160a01b03891660208401526003881062004922576200492262003f31565b87604084015282810360608401526200493c818862003d2c565b90508281036080840152600581527f726566494400000000000000000000000000000000000000000000000000000060208201526001600160a01b03861660a084015260408382030160c084015260408101855480825260608301915060608160051b84010187600052602060002060005b8381101562004b0857858303605f19018552815460ff1660078110620049d857620049d862003f31565b808452506080602084015260808301600183015480825260a08501915060a08160051b86010160018501600052602060002060005b8381101562004aba57609f198884030185526000825462004a2e8162003dd6565b80865260018216801562004a4b576001811462004a685762004aa1565b60ff1983166020880152602082151560051b880101935062004aa1565b85600052602060002060005b8381101562004a985781546020828b01015260018201915060208101905062004a74565b88016020019450505b5050506020959095019492506001918201910162004a0d565b5050858103604087015262004ad3816002870162004159565b9250505062004ae6600384015460ff1690565b80151560608601525060209590950194925060049190910190600101620049ae565b50508094505050505062004b2060e0830184620048d6565b98975050505050505050565b80516001600160a01b03811681146200291257600080fd5b8051600381106200291257600080fd5b8051600481106200291257600080fd5b60006020828403121562004b7757600080fd5b815167ffffffffffffffff8082111562004b9057600080fd5b90830190610100828603121562004ba657600080fd5b62004bb062003f77565b82518281111562004bc057600080fd5b62004bce8782860162003fa4565b82525062004bdf6020840162004b2c565b602082015262004bf26040840162004b44565b604082015260608301518281111562004c0a57600080fd5b62004c188782860162003fa4565b60608301525060808301518281111562004c3157600080fd5b62004c3f8782860162003fa4565b60808301525062004c5360a0840162004b2c565b60a082015260c083015160c082015262004c7060e0840162004b54565b60e082015295945050505050565b6000602080838503121562004c9257600080fd5b825167ffffffffffffffff8082111562004cab57600080fd5b818501915085601f83011262004cc057600080fd5b81518181111562004cd55762004cd562003dc0565b8060051b60405162004cea8683018262003f47565b9182528381018501918581018984111562004d0457600080fd5b86860192505b8383101562004d435782518581111562004d245760008081fd5b62004d348b89838a010162003fa4565b82525091860191860162004d0a565b5098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60408152600062004d7b604083018562003d2c565b90508260208301529392505050565b60006020828403121562004d9d57600080fd5b5051919050565b6001600160e01b0319831681526000825162004dc881600485016020870162003d06565b919091016004019392505050565b6000825162004dea81846020870162003d06565b9190910192915050565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006200406b608083018462003d2c565b60408152600062004e6860408301600a8152690808080808081319599d60b21b602082015260400190565b90506001600160a01b038316602083015292915050565b60408152600062004e6860408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600062004ed560408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262004015818562003d2c565b60408152600062004ed560408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600062004f3f60408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b60408152600062004f3f60408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b50604051620046fa380380620046fa8339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600580546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b6145d280620001286000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063715018a6116100cd578063d9cf884c11610081578063e1efb59611610066578063e1efb59614610350578063ea8f547f14610363578063f2fde38b146103ba57600080fd5b8063d9cf884c1461032a578063dbf156391461033d57600080fd5b8063a1bc17c5116100b2578063a1bc17c5146102f1578063b48272cc14610304578063c1733f681461031757600080fd5b8063715018a6146102d65780638da5cb5b146102e057600080fd5b806319d09bc911610124578063433f60ac11610109578063433f60ac1461029b5780634534ba17146102ae5780635137b8a7146102c157600080fd5b806319d09bc91461023d578063324980b51461027b57600080fd5b806304c2320b14610156578063056b01ce146101865780631255c189146101a9578063150b7a02146101d4575b600080fd5b61016961016436600461370f565b6103cd565b60405161017d9897969594939291906137ce565b60405180910390f35b610199610194366004613853565b6105d1565b604051901515815260200161017d565b6005546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b61020c6101e23660046138af565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017d565b61019961024b366004613853565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b61028e610289366004613853565b61092b565b60405161017d919061394a565b6101996102a9366004613cf0565b61114d565b6101996102bc366004613de0565b6114c0565b6102c961191b565b60405161017d9190613e8c565b6102de6119f4565b005b6000546001600160a01b03166101bc565b6101996102ff36600461370f565b611a08565b610199610312366004613853565b611c59565b61028e61032536600461370f565b61209c565b610199610338366004613853565b6120eb565b61019961034b366004613e9f565b612568565b61019961035e366004613853565b612650565b6103ac610371366004613f6a565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161017d929190613fc8565b6102de6103c8366004613fe5565b612985565b80516020818301810180516001825292820191909301209152805481906103f390614000565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90614000565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161049f90614000565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90614000565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509080600301805461052d90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461055990614000565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050506004830154600584015460069094015492936001600160a01b039091169290915060ff1688565b60006105db6129dc565b60006001600160a01b03166001846040516105f6919061403a565b908152604051908190036020019020600101546001600160a01b03160361063b578260405163c0bab25f60e01b81526004016106329190614056565b60405180910390fd5b6000821161068b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b600060018460405161069d919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156106d1576106d1613794565b03610757576106e284600085612a22565b61072e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b8260018560405161073f919061403a565b908152604051908190036020019020600501556108d6565b600281600281111561076b5761076b613794565b036108bb57600384604051610780919061403a565b90815260408051602092819003830190206000868152925290205460ff16156107eb5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220616c7265616479206578697374736044820152606401610632565b6107f784600085612a22565b6108435760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051610854919061403a565b90815260200160405180910390206005016000828254610874919061407f565b92505081905550600160038560405161088d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556108d6565b8360405163c16fc3ad60e01b81526004016106329190614056565b836040516108e4919061403a565b604051908190038120848252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a260019150505b92915050565b61096f60408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b6000600184604051610981919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156109b5576109b5613794565b03610c3b576001846040516109ca919061403a565b9081526020016040518091039020604051806101000160405290816000820180546109f490614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090614000565b8015610a6d5780601f10610a4257610100808354040283529160200191610a6d565b820191906000526020600020905b815481529060010190602001808311610a5057829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166002811115610aaa57610aaa613794565b6002811115610abb57610abb613794565b8152602001600282018054610acf90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90614000565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b50505050508152602001600382018054610b6190614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90614000565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260058201546040820152600682015460609091019060ff166003811115610c1e57610c1e613794565b6003811115610c2f57610c2f613794565b81525050915050610925565b6002816002811115610c4f57610c4f613794565b0361114657600384604051610c64919061403a565b90815260408051602092819003830190206000868152925290205460ff1615610ef757604051806101000160405280600186604051610ca3919061403a565b9081526040519081900360200190208054610cbd90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990614000565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050508152602001600186604051610d50919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051610d93919061403a565b9081526040519081900360200190206001015460ff600160a01b909104166002811115610dc257610dc2613794565b8152602001858152602001600186604051610ddd919061403a565b90815260200160405180910390206003018054610df990614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2590614000565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b50505050508152602001600186604051610e8c919061403a565b9081526040805160209281900383019020600401546001600160a01b031683529082018690528051910190600190610ec590889061403a565b9081526040519081900360200190206006015460ff166003811115610eec57610eec613794565b815250915050610925565b604051806101000160405280600186604051610f13919061403a565b9081526040519081900360200190208054610f2d90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990614000565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b50505050508152602001600186604051610fc0919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051611003919061403a565b9081526040519081900360200190206001015460ff600160a01b90910416600281111561103257611032613794565b815260200185815260200160018660405161104d919061403a565b9081526020016040518091039020600301805461106990614000565b80601f016020809104026020016040519081016040528092919081815260200182805461109590614000565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081526020016001866040516110fc919061403a565b908152602001604051809103902060040160009054906101000a90046001600160a01b03166001600160a01b0316815260200160008152602001600186604051610ec5919061403a565b5092915050565b60006111576129dc565b60006001600160a01b0316600187604051611172919061403a565b908152604051908190036020019020600101546001600160a01b0316146111c757856040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016106329190614056565b6111d18684612a39565b6002866040516111e1919061403a565b9081526040805160209281900383019020600360008181529190935220015460ff161561128557611213866003612b59565b6112855760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e000000006064820152608401610632565b6040518061010001604052808a8152602001896001600160a01b031681526020018860028111156112b8576112b8613794565b8152602001878152602001868152602001856001600160a01b03168152602001600081526020018360038111156112f1576112f1613794565b815250600187604051611304919061403a565b9081526040519081900360200190208151819061132190826140e0565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600281111561138a5761138a613794565b0217905550606082015160028201906113a390826140e0565b50608082015160038201906113b890826140e0565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c0820151600582015560e082015160068201805460ff1916600183600381111561141957611419613794565b021790555050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905061145d87826140e0565b508560405161146c919061403a565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8a8a8a886040516114a994939291906141a0565b60405180910390a250600198975050505050505050565b60006114ca6129dc565b60006001600160a01b03166001856040516114e5919061403a565b908152604051908190036020019020600101546001600160a01b031603611521578360405163c0bab25f60e01b81526004016106329190614056565b600082116115715760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600185604051611583919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156115b7576115b7613794565b036116c257826001866040516115cd919061403a565b908152602001604051809103902060050154101561162d5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b65646044820152606401610632565b61163a8560028587612b6f565b6116865760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c656400000000000000006044820152606401610632565b82600186604051611697919061403a565b908152602001604051809103902060050160008282546116b791906141e4565b909155506118b99050565b60028160028111156116d6576116d6613794565b0361189e5760006001866040516116ed919061403a565b9081526020016040518091039020600501541161174c5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b65646044820152606401610632565b60038560405161175c919061403a565b908152604080519182900360209081019092206000868152925290205460ff1615156001146117cd5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b6117da8560028587612b6f565b6118265760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018086604051611837919061403a565b9081526020016040518091039020600501600082825461185791906141e4565b925050819055506000600386604051611870919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556118b9565b8460405163c16fc3ad60e01b81526004016106329190614056565b846040516118c7919061403a565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a2506001949350505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156119eb57838290600052602060002001805461195e90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461198a90614000565b80156119d75780601f106119ac576101008083540402835291602001916119d7565b820191906000526020600020905b8154815290600101906020018083116119ba57829003601f168201915b50505050508152602001906001019061193f565b50505050905090565b6119fc6129dc565b611a066000612e8b565b565b6000611a126129dc565b60006001600160a01b0316600183604051611a2d919061403a565b908152604051908190036020019020600101546001600160a01b031603611a69578160405163c0bab25f60e01b81526004016106329190614056565b6000600183604051611a7b919061403a565b9081526020016040518091039020600501541115611ac757816040517fb7d2c10a0000000000000000000000000000000000000000000000000000000081526004016106329190614056565b611b79600183604051611ada919061403a565b90815260200160405180910390206002018054611af690614000565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290614000565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050612ee8565b600182604051611b89919061403a565b9081526040519081900360200190206000611ba48282613422565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055611bd2600283016000613422565b611be0600383016000613422565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820155600601805460ff19169055604051611c2090839061403a565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000611c636129dc565b60006001600160a01b0316600184604051611c7e919061403a565b908152604051908190036020019020600101546001600160a01b031603611cba578260405163c0bab25f60e01b81526004016106329190614056565b60008211611d0a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051611d1c919061403a565b90815260405190819003602001902060019081015460ff600160a01b909104169150816002811115611d5057611d50613794565b03611e5a5782600185604051611d66919061403a565b9081526020016040518091039020600501541015611dc65760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b656400006044820152606401610632565b611dd284600185612a22565b611e1e5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b82600185604051611e2f919061403a565b90815260200160405180910390206005016000828254611e4f91906141e4565b909155506120579050565b6002816002811115611e6e57611e6e613794565b036108bb576000600185604051611e85919061403a565b90815260200160405180910390206005015411611f0a5760405162461bcd60e51b815260206004820152602360248201527f547279696e6720746f206275726e20616e20756e6163636f756e74656420417360448201527f73657400000000000000000000000000000000000000000000000000000000006064820152608401610632565b600384604051611f1a919061403a565b908152604080519182900360209081019092206000868152925290205460ff161515600114611f8b5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b611f9784600185612a22565b611fe35760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051611ff4919061403a565b9081526020016040518091039020600501600082825461201491906141e4565b92505081905550600060038560405161202d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612065919061403a565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee9990602001610917565b6120e060408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b61092582600061092b565b60006120f56129dc565b60006001600160a01b0316600184604051612110919061403a565b908152604051908190036020019020600101546001600160a01b03160361214c578260405163c0bab25f60e01b81526004016106329190614056565b6000821161219c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b60006001846040516121ae919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156121e2576121e2613794565b0361230057826001856040516121f8919061403a565b90815260200160405180910390206005015410156122465783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016106329291906141f7565b61225284600585612a22565b6122c45760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610632565b826001856040516122d5919061403a565b908152602001604051809103902060050160008282546122f591906141e4565b909155506125239050565b600281600281111561231457612314613794565b036108bb57600384604051612329919061403a565b908152604080519182900360209081019092206000868152925290205460ff16151560011461239a5760405162461bcd60e51b815260206004820152601060248201527f546f6b656e204e6f74204c6f636b6564000000000000000000000000000000006044820152606401610632565b60006001856040516123ac919061403a565b908152602001604051809103902060050154116124315760405162461bcd60e51b815260206004820152603360248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206163636f756e74656420666f72000000000000000000000000006064820152608401610632565b61243d84600585612a22565b6124af5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610632565b600180856040516124c0919061403a565b908152602001604051809103902060050160008282546124e091906141e4565b9250508190555060006003856040516124f9919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612531919061403a565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001610917565b60006125726129dc565b3063433f60ac89898989898960006040519080825280602002602001820160405280156125dc57816020015b6125c96040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161259e5790505b508a6040518963ffffffff1660e01b8152600401612601989796959493929190614219565b6020604051808303816000875af1158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906143ba565b98975050505050505050565b600061265a6129dc565b60006001600160a01b0316600184604051612675919061403a565b908152604051908190036020019020600101546001600160a01b0316036126b1578260405163c0bab25f60e01b81526004016106329190614056565b600082116127015760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051612713919061403a565b90815260405190819003602001902060019081015460ff600160a01b90910416915081600281111561274757612747613794565b036127e05761275884600485612a22565b6127a45760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b826001856040516127b5919061403a565b908152602001604051809103902060050160008282546127d5919061407f565b909155506129409050565b60028160028111156127f4576127f4613794565b036108bb57600384604051612809919061403a565b90815260408051602092819003830190206000868152925290205460ff16156128745760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20416c7265616479204c6f636b65640000000000000000000000006044820152606401610632565b61288084600485612a22565b6128cc5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b600180856040516128dd919061403a565b908152602001604051809103902060050160008282546128fd919061407f565b925050819055506001600385604051612916919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b8360405161294e919061403a565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001610917565b61298d6129dc565b6001600160a01b0381166129d0576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610632565b6129d981612e8b565b50565b6000546001600160a01b03163314611a06576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610632565b6000612a318484846000612b6f565b949350505050565b60005b8151811015612b5457818181518110612a5757612a576143d7565b6020026020010151600284604051612a6f919061403a565b90815260200160405180910390206000848481518110612a9157612a916143d7565b6020026020010151600001516006811115612aae57612aae613794565b6006811115612abf57612abf613794565b8152602081019190915260400160002081518154829060ff19166001836006811115612aed57612aed613794565b02179055506020828101518051612b0a926001850192019061345c565b5060408201518051612b269160028401916020909101906134b2565b50606091909101516003909101805460ff191691151591909117905580612b4c816143ed565b915050612a3c565b505050565b6000612b688383600080612b6f565b9392505050565b6000600285604051612b81919061403a565b90815260200160405180910390206000856006811115612ba357612ba3613794565b6006811115612bb457612bb4613794565b815260208101919091526040016000206003015460ff16612bd757506000612a31565b60005b600286604051612bea919061403a565b90815260200160405180910390206000866006811115612c0c57612c0c613794565b6006811115612c1d57612c1d613794565b8152602081019190915260400160002060010154811015612e7f576000600287604051612c4a919061403a565b90815260200160405180910390206000876006811115612c6c57612c6c613794565b6006811115612c7d57612c7d613794565b81526020019081526020016000206001018281548110612c9f57612c9f6143d7565b90600052602060002001604051602001612cb99190614406565b6040516020818303038152906040528051906020012090506000612dd582612dd060028b604051612cea919061403a565b908152602001604051809103902060008b6006811115612d0c57612d0c613794565b6006811115612d1d57612d1d613794565b81526020019081526020016000206002018681548110612d3f57612d3f6143d7565b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015612dc357602002820191906000526020600020906000905b82829054906101000a900460ff166007811115612da157612da1613794565b815260206001928301818104948501949093039092029101808411612d825790505b50505050508b898b613046565b613363565b90506000600189604051612de9919061403a565b908152604051908190036020018120600101546001600160a01b031690612e1190849061403a565b6000604051808303816000865af19150503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5050905080612e69576000945050505050612a31565b5050508080612e77906143ed565b915050612bda565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60045481101561304257612fa460048281548110612f0b57612f0b6143d7565b906000526020600020018054612f2090614000565b80601f0160208091040260200160405190810160405280929190818152602001828054612f4c90614000565b8015612f995780601f10612f6e57610100808354040283529160200191612f99565b820191906000526020600020905b815481529060010190602001808311612f7c57829003601f168201915b5050505050836133fd565b156130305760048054612fb9906001906141e4565b81548110612fc957612fc96143d7565b9060005260206000200160048281548110612fe657612fe66143d7565b906000526020600020019081612ffc919061447c565b50600480548061300e5761300e614557565b60019003818190600052602060002001600061302a9190613422565b90555050565b8061303a816143ed565b915050612eeb565b5050565b60606000855167ffffffffffffffff8111156130645761306461362f565b60405190808252806020026020018201604052801561309757816020015b60608152602001906001900390816130825790505b50905060005b86518110156133595760058782815181106130ba576130ba6143d7565b602002602001015160078111156130d3576130d3613794565b036131155760408051306020820152015b604051602081830303815290604052828281518110613105576131056143d7565b6020026020010181905250613347565b6002878281518110613129576131296143d7565b6020026020010151600781111561314257613142613794565b0361315857856040516020016130e49190614056565b600487828151811061316c5761316c6143d7565b6020026020010151600781111561318557613185613794565b0361319b576040805160208101869052016130e4565b60038782815181106131af576131af6143d7565b602002602001015160078111156131c8576131c8613794565b03613206576001866040516131dd919061403a565b908152604080519182900360209081018320600401546001600160a01b031690830152016130e4565b600087828151811061321a5761321a6143d7565b6020026020010151600781111561323357613233613794565b0361327157600186604051613248919061403a565b908152604080519182900360209081018320600101546001600160a01b031690830152016130e4565b6006878281518110613285576132856143d7565b6020026020010151600781111561329e5761329e613794565b036132bc57604080516001600160a01b0387166020820152016130e4565b60078782815181106132d0576132d06143d7565b602002602001015160078111156132e9576132e9613794565b036132ff576040805160208101869052016130e4565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f72746564000000000000000000006044820152606401610632565b80613351816143ed565b91505061309d565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561114657818382815181106133c0576133c06143d7565b60200260200101516040516020016133d992919061456d565b604051602081830303815290604052915080806133f5906143ed565b9150506133a4565b600081518351148015612b685750508051602091820120825192909101919091201490565b50805461342e90614000565b6000825580601f1061343e575050565b601f0160209004906000526020600020908101906129d9919061350b565b8280548282559060005260206000209081019282156134a2579160200282015b828111156134a2578251829061349290826140e0565b509160200191906001019061347c565b506134ae929150613520565b5090565b8280548282559060005260206000209081019282156134ff579160200282015b828111156134ff57825180516134ef91849160209091019061353d565b50916020019190600101906134d2565b506134ae9291506135ed565b5b808211156134ae576000815560010161350c565b808211156134ae5760006135348282613422565b50600101613520565b82805482825590600052602060002090601f016020900481019282156135e15791602002820160005b838211156135b257835183826101000a81548160ff0219169083600781111561359157613591613794565b02179055509260200192600101602081600001049283019260010302613566565b80156135df5782816101000a81549060ff02191690556001016020816000010492830192600103026135b2565b505b506134ae92915061350b565b808211156134ae576000613601828261360a565b506001016135ed565b50805460008255601f0160209004906000526020600020908101906129d9919061350b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156136685761366861362f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136975761369761362f565b604052919050565b600082601f8301126136b057600080fd5b813567ffffffffffffffff8111156136ca576136ca61362f565b6136dd601f8201601f191660200161366e565b8181528460208386010111156136f257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561372157600080fd5b813567ffffffffffffffff81111561373857600080fd5b612a318482850161369f565b60005b8381101561375f578181015183820152602001613747565b50506000910152565b60008151808452613780816020860160208601613744565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106137ba576137ba613794565b9052565b600481106137ba576137ba613794565b60006101008083526137e28184018c613768565b90506001600160a01b03808b166020850152613801604085018b6137aa565b8382036060850152613813828a613768565b915083820360808501526138278289613768565b925080871660a085015250508360c083015261384660e08301846137be565b9998505050505050505050565b6000806040838503121561386657600080fd5b823567ffffffffffffffff81111561387d57600080fd5b6138898582860161369f565b95602094909401359450505050565b80356001600160a01b0381168114611c5457600080fd5b6000806000806000608086880312156138c757600080fd5b6138d086613898565b94506138de60208701613898565b935060408601359250606086013567ffffffffffffffff8082111561390257600080fd5b818801915088601f83011261391657600080fd5b81358181111561392557600080fd5b89602082850101111561393757600080fd5b9699959850939650602001949392505050565b6020815260008251610100806020850152613969610120850183613768565b9150602085015161398560408601826001600160a01b03169052565b50604085015161399860608601826137aa565b506060850151601f19808685030160808701526139b58483613768565b935060808701519150808685030160a0870152506139d38382613768565b92505060a08501516139f060c08601826001600160a01b03169052565b5060c085015160e085015260e0850151613a0c828601826137be565b5090949350505050565b803560038110611c5457600080fd5b600067ffffffffffffffff821115613a3f57613a3f61362f565b5060051b60200190565b803560078110611c5457600080fd5b600082601f830112613a6957600080fd5b81356020613a7e613a7983613a25565b61366e565b828152600592831b8501820192828201919087851115613a9d57600080fd5b8387015b85811015613b4257803567ffffffffffffffff811115613ac15760008081fd5b8801603f81018a13613ad35760008081fd5b858101356040613ae5613a7983613a25565b82815291851b8301810191888101908d841115613b025760008081fd5b938201935b83851015613b31578435925060088310613b215760008081fd5b8282529389019390890190613b07565b885250505093850193508401613aa1565b5090979650505050505050565b80151581146129d957600080fd5b8035611c5481613b4f565b600082601f830112613b7957600080fd5b613b86613a798335613a25565b82358082526020808301929160051b85010185811115613ba557600080fd5b602085015b81811015613cd65767ffffffffffffffff8082351115613bc957600080fd5b813587016080818a03601f19011215613be157600080fd5b613be9613645565b613bf560208301613a49565b8152604082013583811115613c0957600080fd5b8201603f81018b13613c1a57600080fd5b6020810135613c2b613a7982613a25565b81815260059190911b82016040019060208101908d831115613c4c57600080fd5b604084015b83811015613c85578781351115613c6757600080fd5b613c778f6040833588010161369f565b835260209283019201613c51565b506020850152505050606082013583811115613ca057600080fd5b613caf8b602083860101613a58565b604083015250613cc160808301613b5d565b60608201528652505060209384019301613baa565b509095945050505050565b803560048110611c5457600080fd5b600080600080600080600080610100898b031215613d0d57600080fd5b883567ffffffffffffffff80821115613d2557600080fd5b613d318c838d0161369f565b9950613d3f60208c01613898565b9850613d4d60408c01613a16565b975060608b0135915080821115613d6357600080fd5b613d6f8c838d0161369f565b965060808b0135915080821115613d8557600080fd5b613d918c838d0161369f565b9550613d9f60a08c01613898565b945060c08b0135915080821115613db557600080fd5b50613dc28b828c01613b68565b925050613dd160e08a01613ce1565b90509295985092959890939650565b600080600060608486031215613df557600080fd5b833567ffffffffffffffff811115613e0c57600080fd5b613e188682870161369f565b935050613e2760208501613898565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015613e7f578284038952613e6d848351613768565b98850198935090840190600101613e55565b5091979650505050505050565b602081526000612b686020830184613e37565b600080600080600080600060e0888a031215613eba57600080fd5b873567ffffffffffffffff80821115613ed257600080fd5b613ede8b838c0161369f565b9850613eec60208b01613898565b9750613efa60408b01613a16565b965060608a0135915080821115613f1057600080fd5b613f1c8b838c0161369f565b955060808a0135915080821115613f3257600080fd5b50613f3f8a828b0161369f565b935050613f4e60a08901613898565b9150613f5c60c08901613ce1565b905092959891949750929550565b60008060408385031215613f7d57600080fd5b823567ffffffffffffffff811115613f9457600080fd5b613fa08582860161369f565b925050613faf60208401613a49565b90509250929050565b600781106137ba576137ba613794565b60408101613fd68285613fb8565b82151560208301529392505050565b600060208284031215613ff757600080fd5b612b6882613898565b600181811c9082168061401457607f821691505b60208210810361403457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161404c818460208701613744565b9190910192915050565b602081526000612b686020830184613768565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092557610925614069565b601f821115612b5457600081815260208120601f850160051c810160208610156140b95750805b601f850160051c820191505b818110156140d8578281556001016140c5565b505050505050565b815167ffffffffffffffff8111156140fa576140fa61362f565b61410e816141088454614000565b84614092565b602080601f831160018114614143576000841561412b5750858301515b600019600386901b1c1916600185901b1785556140d8565b600085815260208120601f198616915b8281101561417257888601518255948401946001909101908401614153565b50858210156141905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006141b36080830187613768565b90506001600160a01b0380861660208401526141d260408401866137aa565b80841660608401525095945050505050565b8181038181111561092557610925614069565b60408152600061420a6040830185613768565b90508260208301529392505050565b6101008152600061422e61010083018b613768565b6001600160a01b03808b16602085015261424b604085018b6137aa565b838203606085015261425d828a613768565b915083820360808501526142718289613768565b915080871660a08501525082810360c084015280855180835260208301915060208160051b8401016020880160005b838110156143a457601f198087850301865282516142bf858251613fb8565b6020810151608060208701526142d86080870182613e37565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561436d57858203880184528451805180845260209182019184019060005b818110156143555783516008811061434157614341613794565b835260209384019390920191600101614327565b50506020968701969590950194925050600101614305565b506060860151965061438360608b018815159052565b809950505050505050506020820191506020850194506001810190506142a0565b50508094505050505061384660e08301846137be565b6000602082840312156143cc57600080fd5b8151612b6881613b4f565b634e487b7160e01b600052603260045260246000fd5b6000600182016143ff576143ff614069565b5060010190565b600080835461441481614000565b6001828116801561442c576001811461444157614470565b60ff1984168752821515830287019450614470565b8760005260208060002060005b858110156144675781548a82015290840190820161444e565b50505082870194505b50929695505050505050565b818103614487575050565b6144918254614000565b67ffffffffffffffff8111156144a9576144a961362f565b6144b7816141088454614000565b6000601f8211600181146144eb57600083156144d35750848201545b600019600385901b1c1916600184901b178455614550565b600085815260209020601f19841690600086815260209020845b838110156145255782860154825560019586019590910190602001614505565b50858310156145435781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b6000835161457f818460208801613744565b835190830190614593818360208801613744565b0194935050505056fea2646970667358221220cc545097d62ab752192a515a53206f325e79a54a4fe781e2769cb76ecb844be064736f6c6343000814003360806040523480156200001157600080fd5b5060405162001226380380620012268339810160408190526200003491620001ac565b6040518060400160405280600981526020016829a0aa282a37b5b2b760b91b815250604051806040016040528060048152602001630534154560e41b815250816004908162000084919062000283565b50600562000093828262000283565b505050620000c87fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82620000fd60201b60201c565b50620000f57f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f82620000fd565b50506200034f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a2576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001593390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001a6565b5060005b92915050565b600060208284031215620001bf57600080fd5b81516001600160a01b0381168114620001d757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020957607f821691505b6020821081036200022a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027e57600081815260208120601f850160051c81016020861015620002595750805b601f850160051c820191505b818110156200027a5782815560010162000265565b5050505b505050565b81516001600160401b038111156200029f576200029f620001de565b620002b781620002b08454620001f4565b8462000230565b602080601f831160018114620002ef5760008415620002d65750858301515b600019600386901b1c1916600185901b1785556200027a565b600085815260208120601f198616915b828110156200032057888601518255948401946001909101908401620002ff565b50858210156200033f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ec7806200035f6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806391d14854116100d8578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e1461034c578063e58378bb14610385578063ea134071146103ac57600080fd5b8063a9059cbb146102ff578063b5bfddea14610312578063d547741f1461033957600080fd5b80639dc29fac116100bd5780639dc29fac146102d1578063a217fddf146102e4578063a5e99b8e146102ec57600080fd5b806391d148541461029257806395d89b41146102c957600080fd5b8063248a9ca31161013a57806336568abe1161011457806336568abe1461024357806340c10f191461025657806370a082311461026957600080fd5b8063248a9ca3146101fc5780632f2ff15d1461021f578063313ce5671461023457600080fd5b8063095ea7b31161016b578063095ea7b3146101c457806318160ddd146101d757806323b872dd146101e957600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004610c99565b6103bf565b60405190151581526020015b60405180910390f35b6101b7610458565b6040516101a69190610ce2565b61019a6101d2366004610d4c565b6104ea565b6003545b6040519081526020016101a6565b61019a6101f7366004610d76565b610502565b6101db61020a366004610db2565b60009081526020819052604090206001015490565b61023261022d366004610dcb565b610526565b005b604051601281526020016101a6565b610232610251366004610dcb565b610551565b61019a610264366004610d4c565b6105a2565b6101db610277366004610df7565b6001600160a01b031660009081526001602052604090205490565b61019a6102a0366004610dcb565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101b76105d8565b61019a6102df366004610d4c565b6105e7565b6101db600081565b61019a6102fa366004610df7565b61061d565b61019a61030d366004610d4c565b61067f565b6101db7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b610232610347366004610dcb565b61068d565b6101db61035a366004610e12565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101db7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b61019a6103ba366004610df7565b6106b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461046790610e3c565b80601f016020809104026020016040519081016040528092919081815260200182805461049390610e3c565b80156104e05780601f106104b5576101008083540402835291602001916104e0565b820191906000526020600020905b8154815290600101906020018083116104c357829003601f168201915b5050505050905090565b6000336104f881858561073c565b5060019392505050565b600033610510858285610749565b61051b8585856107da565b506001949350505050565b60008281526020819052604090206001015461054181610839565b61054b8383610846565b50505050565b6001600160a01b0381163314610593576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059d82826108f0565b505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6105ce81610839565b6104f88484610973565b60606005805461046790610e3c565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61061381610839565b6104f884846109ad565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e61064981610839565b6106737f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610846565b50600191505b50919050565b6000336104f88185856107da565b6000828152602081905260409020600101546106a881610839565b61054b83836108f0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff16156106fa57506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b61059d83838360016109e3565b6001600160a01b03838116600090815260026020908152604080832093861683529290522054600019811461054b57818110156107cb576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610733565b61054b848484840360006109e3565b6001600160a01b03831661080457604051634b637e8f60e11b815260006004820152602401610733565b6001600160a01b03821661082e5760405163ec442f0560e01b815260006004820152602401610733565b61059d838383610aea565b6108438133610c2d565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166108e8576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108a03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610452565b506000610452565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156108e8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610452565b6001600160a01b03821661099d5760405163ec442f0560e01b815260006004820152602401610733565b6109a960008383610aea565b5050565b6001600160a01b0382166109d757604051634b637e8f60e11b815260006004820152602401610733565b6109a982600083610aea565b6001600160a01b038416610a26576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038316610a69576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610733565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561054b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610adc91815260200190565b60405180910390a350505050565b6001600160a01b038316610b15578060036000828254610b0a9190610e70565b90915550610ba09050565b6001600160a01b03831660009081526001602052604090205481811015610b81576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610733565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610bbc57600380548290039055610bdb565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2091815260200190565b60405180910390a3505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166109a9576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610733565b600060208284031215610cab57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cdb57600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0f57858101830151858201604001528201610cf3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b5035919050565b60008060408385031215610dde57600080fd5b82359150610dee60208401610d30565b90509250929050565b600060208284031215610e0957600080fd5b610cdb82610d30565b60008060408385031215610e2557600080fd5b610e2e83610d30565b9150610dee60208401610d30565b600181811c90821680610e5057607f821691505b60208210810361067957634e487b7160e01b600052602260045260246000fd5b8082018082111561045257634e487b7160e01b600052601160045260246000fdfea264697066735822122080f57a9600820664ab8859a1e07876e27eb5ea500e2ed80b8ab7c8d5ad185bfe64736f6c634300081400336272696467655472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629546f6b656e2073686f756c64206e6f74206578697374206265666f7265207772617070696e67a2646970667358221220887c65c229643abfc34196627c394a8021affb5ca0df69a73b883487b6853f0464736f6c63430008140033","sourceMap":"240:6380:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;995:2390;;;:::i;:::-;;2161:134:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;399:38:43:-;;;;;-1:-1:-1;;;;;399:38:43;;;;;;-1:-1:-1;;;;;1030:55:45;;;1012:74;;1000:2;985:18;399:38:43;866:226:45;5805:285:43;;;:::i;2447:178:23:-;;;:::i;:::-;;;;;;;:::i;3612:480:43:-;;;:::i;2301:140:23:-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;5146:362:43:-;;;:::i;1866:141:23:-;;;:::i;6096:522:43:-;;;:::i;443:40::-;;;;;-1:-1:-1;;;;;443:40:43;;;1819:584:17;;;:::i;:::-;;;4340:14:45;;4333:22;4315:41;;4303:2;4288:18;1819:584:17;4175:187:45;3391:215:43;;;:::i;4698:442::-;;;:::i;5514:285::-;;;:::i;2013:142:23:-;;;:::i;4098:594:43:-;;;:::i;1572:26:17:-;;;;;;;;;995:2390:43;1196:4;1164:38;;;;;:::i;:::-;-1:-1:-1;;;;;1030:55:45;;;1012:74;;1000:2;985:18;1164:38:43;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1146:15:43;:56;;-1:-1:-1;;1146:56:43;-1:-1:-1;;;;;1146:56:43;;;;;;;;;1225:47;;;;;:::i;:::-;-1:-1:-1;;;;;1030:55:45;;;1012:74;;1000:2;985:18;1225:47:43;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1213:9:43;:59;;-1:-1:-1;;1213:59:43;-1:-1:-1;;;;;1213:59:43;;;;;;;;;;1283:16;:68;;-1:-1:-1;1283:68:43;;;;-1:-1:-1;1283:68:43;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1283:68:43;;;;;;;;;-1:-1:-1;1283:68:43;;:::i;:::-;-1:-1:-1;1362:118:43;;;;;;;;;:13;;:118;1382:30;1362:118;;;;1414:31;1362:118;;;;1447:31;1362:118;;;;;;;;;-1:-1:-1;1362:118:43;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1525:79:43;;;;;;;;1546:20;1525:79;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1525:79:43;;;;;;-1:-1:-1;1525:79:43;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1584:13;1525:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1525:79:43;;;-1:-1:-1;1599:4:43;1525:79;;;;;;;1614:10;:21;;;;;;;1525:79;1614:21;;;;;;;;;;;;;;1490:114;;-1:-1:-1;1490:114:43;;1614:21;;;;-1:-1:-1;;1614:21:43;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;1614:21:43;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1614:21:43;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1614:21:43;;;;;;;;;;;;-1:-1:-1;;1614:21:43;;;;;;;;;;1654:18;:56;;-1:-1:-1;1654:56:43;;;;-1:-1:-1;1654:56:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1721:120:43;;;;;;;;;:15;;:120;1743:31;1721:120;;;;1776:30;1721:120;;;;1808:31;1721:120;;;;;;;;;-1:-1:-1;1721:120:43;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1888:85:43;;;;;;;;;1851:34;;1888:85;1909:22;1888:85;;;;1932:18;1888:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1951:15;1888:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:85:43;;;-1:-1:-1;1968:4:43;1888:85;;;;;;;1983:10;:23;;;;;;;1888:85;1983:23;;;;;;;;;;;;;;1851:122;;-1:-1:-1;1851:122:43;;1983:23;;;;-1:-1:-1;;1983:23:43;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;1983:23:43;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1983:23:43;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1983:23:43;;;;;;;;;;;;-1:-1:-1;;1983:23:43;;;;;;;;;;2026:16;:46;;-1:-1:-1;2026:46:43;;;;-1:-1:-1;2026:46:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2083:86:43;;;;;;;;;2103:31;2083:86;;2136:31;2083:86;;;;:13;:86;;;;;;;-1:-1:-1;2083:86:43;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2214:79:43;;;;;;;;;2179:32;;2214:79;2179:32;2214:79;;;;2256:16;2214:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2273:13;2214:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2214:79:43;;;-1:-1:-1;2288:4:43;2214:79;;;;;;;2303:10;:21;;;;;;;2214:79;2303:21;;;;;;;;;;;;;;2179:114;;-1:-1:-1;2179:114:43;;2303:21;;;;-1:-1:-1;;2303:21:43;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2303:21:43;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2303:21:43;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2303:21:43;;;;;;;;;;;;-1:-1:-1;;2303:21:43;;;;;;;;;;2344:16;:46;;-1:-1:-1;2344:46:43;;;;-1:-1:-1;2344:46:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2409:86:43;;;;;;;;;2429:31;2409:86;;2462:31;2409:86;;;;:13;:86;;;;;;;-1:-1:-1;2409:86:43;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2540:79:43;;;;;;;;;2505:32;;2540:79;2561:20;2540:79;;;;2582:16;2540:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2599:13;2540:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2540:79:43;;;-1:-1:-1;2614:4:43;2540:79;;;;;;;2629:10;:21;;;;;;;2540:79;2629:21;;;;;;;;;;;;;;2505:114;;-1:-1:-1;2505:114:43;;2629:21;;;;-1:-1:-1;;2629:21:43;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2629:21:43;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2629:21:43;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2629:21:43;;;;;;;;;;;;-1:-1:-1;;2629:21:43;;;;;;;;;;2670:18;:58;;-1:-1:-1;2670:58:43;;;;-1:-1:-1;2670:58:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2739:123:43;;;;;;;;;:15;;:123;2761:31;2739:123;;;;2794:33;2739:123;;;;2829:31;2739:123;;;;;;;;;-1:-1:-1;2739:123:43;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2909:85:43;;;;;;;;;2872:34;;2909:85;2930:22;2909:85;;;;2953:18;2909:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2972:15;2909:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2909:85:43;;;-1:-1:-1;2989:4:43;2909:85;;;;;;;3004:10;:23;;;;;;;2909:85;3004:23;;;;;;;;;;;;;;2872:122;;-1:-1:-1;2872:122:43;;3004:23;;;;-1:-1:-1;;3004:23:43;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;3004:23:43;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3004:23:43;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3004:23:43;;;;;;;;;;;;-1:-1:-1;;3004:23:43;;;;;;;;;;3038:27;:58;;-1:-1:-1;3038:58:43;;;;-1:-1:-1;3038:58:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3107:64:43;;;;;;;;;3138:31;3107:64;;:24;:64;;;;;;;;-1:-1:-1;3107:64:43;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3226:111:43;;;;;;;;;3181:42;;3226:111;3247:30;3226:111;;;;3278:27;3226:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3306:24;3226:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3226:111:43;;;-1:-1:-1;3332:4:43;3226:111;;;;;;;3347:10;:31;;;;;;;3226:111;3347:31;;;;;;;;;;;;;;3181:156;;-1:-1:-1;3181:156:43;;3347:31;;;;-1:-1:-1;;3347:31:43;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;3347:31:43;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3347:31:43;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3347:31:43;;;;;;;;;;;;-1:-1:-1;;3347:31:43;;;;;;;;;;-1:-1:-1;;;;;;995:2390:43:o;2161:134:23:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:23;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:23;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:23;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;5805:285:43:-;5864:15;;5887:9;;:16;;;-1:-1:-1;;;5887:16:43;;;;-1:-1:-1;;;;;5864:15:43;;;;:22;;5887:9;;:14;;:16;;;;;5864:15;;5887:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5887:16:43;;;;;;;;;;;;:::i;:::-;5864:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5864:40:43;;;;;;;;-1:-1:-1;;5864:40:43;;;;;;;;;;;;:::i;:::-;;;5860:224;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5988:38;5805:285::o;5860:224::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6035:49;5805:285::o;5860:224::-;;;;;;6035:49;5805:285::o;5860:224::-;5945:1;5944:2;5936:32;;;;;;;10352:2:45;5936:32:43;;;10334:21:45;10391:2;10371:18;;;10364:30;10430:19;10410:18;;;10403:47;10467:18;;5936:32:43;;;;;;;5860:224;5805:285::o;2447:178:23:-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;3612:480:43:-;3649:15;;3670:9;;:16;;;-1:-1:-1;;;3670:16:43;;;;-1:-1:-1;;;;;3649:15:43;;;;:20;;3670:9;;:14;;:16;;;;;3649:15;;3670:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3670:16:43;;;;;;;;;;;;:::i;:::-;3696:9;;3740:16;;;-1:-1:-1;;;3740:16:43;;;;-1:-1:-1;;;;;3696:9:43;;;;;;;;3740:14;;:16;;;;;3696:9;;3740:16;;;;;;;;3696:9;3740:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3740:16:43;;;;;;;;;;;;:::i;:::-;3775:4;;3649:168;;-1:-1:-1;;;;;;3649:168:43;;;;;;;;;;;;;-1:-1:-1;;;;;3775:4:43;;3782:10;;3775:4;;3649:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3857:15:43;;3882:9;;:16;;;-1:-1:-1;;;3882:16:43;;;;3828:26;;-1:-1:-1;;;;;3857:15:43;;;;:24;;3882:9;;;:14;;:16;;;;;3828:26;;3882:16;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3882:16:43;;;;;;;;;;;;:::i;:::-;3857:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3857:42:43;;;;;;;;;;;;:::i;:::-;3828:71;;3910:81;3919:13;:29;;;3958:9;;;;;;;;;-1:-1:-1;;;;;3958:9:43;3910:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;4011:15;;:33;;;;;;;;4002:83;;-1:-1:-1;;;;;4011:15:43;;:31;;:33;;;;;:15;;:33;;;;;;;:15;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4011:33:43;;;;;;;;;;;;:::i;:::-;4045:1;4011:36;;;;;;;;:::i;:::-;;;;;;;4049:9;;;;;;;;;-1:-1:-1;;;;;4049:9:43;-1:-1:-1;;;;;4049:14:43;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4049:16:43;;;;;;;;;;;;:::i;:::-;4002:83;;;;;;;;;;;;;;;;;:8;:83::i;2301:140:23:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5146:362:43;5183:15;;5204:9;;:16;;;-1:-1:-1;;;5204:16:43;;;;-1:-1:-1;;;;;5183:15:43;;;;:20;;5204:9;;:14;;:16;;;;;5183:15;;5204:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5204:16:43;;;;;;;;;;;;:::i;:::-;5230:9;;5274:16;;;-1:-1:-1;;;5274:16:43;;;;-1:-1:-1;;;;;5230:9:43;;;;;;;;5274:14;;:16;;;;;5230:9;;5274:16;;;;;;;;5230:9;5274:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5274:16:43;;;;;;;;;;;;:::i;:::-;5309:4;;5183:168;;-1:-1:-1;;;;;;5183:168:43;;;;;;;;;;;;;-1:-1:-1;;;;;5309:4:43;;5316:10;;5309:4;;5183:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5361:15:43;;5382:9;;:16;;;-1:-1:-1;;;5382:16:43;;;;-1:-1:-1;;;;;5361:15:43;;;;:20;;5382:9;;:14;;:16;;;;;5361:15;;5382:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5382:16:43;;;;;;;;;;;;:::i;:::-;5400:2;5361:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5431:9:43;;5459:15;;5431:45;;;;;-1:-1:-1;;;;;5459:15:43;;;5431:45;;;1012:74:45;5422:79:43;;5431:9;;;;;:19;;985:18:45;;5431:45:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5478:2;5422:79;;;;;;;;;;;;;;;;;:8;:79::i;1866:141:23:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6096:522:43;6156:15;;6177:9;;:16;;;-1:-1:-1;;;6177:16:43;;;;-1:-1:-1;;;;;6156:15:43;;;;:20;;6177:9;;:14;;:16;;;;;6156:15;;6177:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6177:16:43;;;;;;;;;;;;:::i;:::-;6203:9;;6247:16;;;-1:-1:-1;;;6247:16:43;;;;-1:-1:-1;;;;;6203:9:43;;;;;;;;6247:14;;:16;;;;;6203:9;;6247:16;;;;;;;;6203:9;6247:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6247:16:43;;;;;;;;;;;;:::i;:::-;6282:4;;6156:168;;-1:-1:-1;;;;;;6156:168:43;;;;;;;;;;;;;-1:-1:-1;;;;;6282:4:43;;6289:10;;6282:4;;6156:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6335:15:43;;6356:9;;:16;;;-1:-1:-1;;;6356:16:43;;;;-1:-1:-1;;;;;6335:15:43;;;;:20;;6356:9;;:14;;:16;;;;;6335:15;;6356:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6356:16:43;;;;;;;;;;;;:::i;:::-;6374:2;6335:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6392:15:43;;6415:9;;:16;;;-1:-1:-1;;;6415:16:43;;;;-1:-1:-1;;;;;6392:15:43;;;;:22;;6415:9;;:14;;:16;;;;;6392:15;;6415:16;;;;;;;:9;:16;;;;;;;;;;;;;;1819:584:17;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:17;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;31331:74:45;;;-1:-1:-1;;;31421:18:45;;;31414:34;2196:43:17;;;;;;;;;31304:18:45;;;2196:43:17;;;-1:-1:-1;;1671:64:17;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:17;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:17:o;1869:528::-;1819:584;:::o;3391:215:43:-;3460:15;;3485:9;;:18;;;;;;;;3439;;-1:-1:-1;;;;;3460:15:43;;;;:24;;3485:9;;;:16;;:18;;;;;3439;;3485;;;;;;;;:9;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3485:18:43;;;;;;;;;;;;:::i;:::-;3460:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3460:44:43;;;;;;;;;;;;:::i;:::-;3439:65;;3514:85;3523:5;:21;;;3554:1;3514:85;;;;;;;;;;;;;;;;;:8;:85::i;4698:442::-;4737:15;;4758:9;;:16;;;-1:-1:-1;;;4758:16:43;;;;-1:-1:-1;;;;;4737:15:43;;;;:20;;4758:9;;:14;;:16;;;;;4737:15;;4758:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4758:16:43;;;;;;;;;;;;:::i;:::-;4784:9;;4828:16;;;-1:-1:-1;;;4828:16:43;;;;-1:-1:-1;;;;;4784:9:43;;;;;;;;4828:14;;:16;;;;;4784:9;;4828:16;;;;;;;;4784:9;4828:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4828:16:43;;;;;;;;;;;;:::i;:::-;4863:4;;4737:168;;-1:-1:-1;;;;;;4737:168:43;;;;;;;;;;;;;-1:-1:-1;;;;;4863:4:43;;4870:10;;4863:4;;4737:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4916:15:43;;4939:9;;:16;;;-1:-1:-1;;;4939:16:43;;;;-1:-1:-1;;;;;4916:15:43;;;;:22;;4939:9;;:14;;:16;;;;;4916:15;;4939:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4939:16:43;;;;;;;;;;;;:::i;:::-;4916:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4996:15:43;;5021:9;;:16;;;-1:-1:-1;;;5021:16:43;;;;4967:26;;-1:-1:-1;;;;;4996:15:43;;;;:24;;5021:9;;;:14;;:16;;;;;4967:26;;5021:16;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5021:16:43;;;;;;;;;;;;:::i;:::-;4996:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4996:42:43;;;;;;;;;;;;:::i;:::-;4967:71;;5049:84;5061:13;:29;;;5100:9;;;;;;;;;-1:-1:-1;;;;;5100:9:43;5049:84;;;;;;;;;;;;;;;;;:11;:84::i;5514:285::-;5571:15;;5592:9;;:16;;;-1:-1:-1;;;5592:16:43;;;;-1:-1:-1;;;;;5571:15:43;;;;:20;;5592:9;;:14;;:16;;;;;5571:15;;5592:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5592:16:43;;;;;;;;;;;;:::i;:::-;5610:2;5571:42;;;;;;;;;;;;;;;;:::i;2013:142:23:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:23;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;4098:594:43:-;4155:15;;4176:9;;:16;;;-1:-1:-1;;;4176:16:43;;;;-1:-1:-1;;;;;4155:15:43;;;;:20;;4176:9;;:14;;:16;;;;;4155:15;;4176:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4176:16:43;;;;;;;;;;;;:::i;:::-;4202:9;;4246:16;;;-1:-1:-1;;;4246:16:43;;;;-1:-1:-1;;;;;4202:9:43;;;;;;;;4246:14;;:16;;;;;4202:9;;4246:16;;;;;;;;4202:9;4246:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4246:16:43;;;;;;;;;;;;:::i;:::-;4281:4;;4155:168;;-1:-1:-1;;;;;;4155:168:43;;;;;;;;;;;;;-1:-1:-1;;;;;4281:4:43;;4288:10;;4281:4;;4155:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4338:15:43;;4359:9;;:16;;;-1:-1:-1;;;4359:16:43;;;;-1:-1:-1;;;;;4338:15:43;;;;:20;;4359:9;;:14;;:16;;;;;4338:15;;4359:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4359:16:43;;;;;;;;;;;;:::i;:::-;4385:9;;4429:16;;;-1:-1:-1;;;4429:16:43;;;;-1:-1:-1;;;;;4385:9:43;;;;;;;;4429:14;;:16;;;;;4385:9;;4429:16;;;;;;;;4385:9;4429:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4429:16:43;;;;;;;;;;;;:::i;:::-;4464:4;;4338:168;;-1:-1:-1;;;;;;4338:168:43;;;;;;;;;;;;;-1:-1:-1;;;;;4464:4:43;;4471:10;;4464:4;;4338:168;;;:::i;3904:185:17:-;3991:1;-1:-1:-1;;;;;3986:6:17;:1;-1:-1:-1;;;;;3986:6:17;;3982:101;;4013:31;4040:3;4013:31;;;;;;:::i;:::-;;;;;;;;4058:14;4067:1;4070;4058:8;:14::i;:::-;3904:185;;;:::o;18251:254::-;18406:1;18389:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18379:30;;;;;;18372:1;18355:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18345:30;;;;;;:64;18341:158;;18430:30;18456:3;18430:30;;;;;;:::i;:::-;;;;;;;;18474:14;18483:1;18486;18474:8;:14::i;5476:178::-;5557:1;5552;:6;5548:100;;5579:30;5605:3;5579:30;;;;;;:::i;:::-;;;;;;;;5623:14;5632:1;5635;5623:8;:14::i;7048:191::-;7138:1;-1:-1:-1;;;;;7133:6:17;:1;-1:-1:-1;;;;;7133:6:17;;7129:104;;7160:31;7187:3;7160:31;;;;;;:::i;:::-;;;;;;;;7205:17;7217:1;7220;7205:11;:17::i;3622:277::-;3690:1;-1:-1:-1;;;;;3685:6:17;:1;-1:-1:-1;;;;;3685:6:17;;3681:212;;3712:44;;;;;33133:2:45;33115:21;;;33172:2;33152:18;;;33145:30;33211:34;33206:2;33191:18;;33184:62;-1:-1:-1;;;33277:2:45;33262:18;;33255:35;33322:3;33307:19;;32931:401;3712:44:17;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;:::-;;;;;;;;3876:6;:4;:6::i;17902:344::-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;34671:2:45;34653:21;;;34710:2;34690:18;;;34683:30;34749:34;34744:2;34729:18;;34722:62;34820:6;34815:2;34800:18;;34793:34;34859:3;34844:19;;34469:400;18062:43:17;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;5209:262::-;5271:1;5266;:6;5262:203;;5293:41;;;;;35966:2:45;35948:21;;;36005:2;35985:18;;;35978:30;36044:34;36039:2;36024:18;;36017:62;36115:4;36110:2;36095:18;;36088:32;36152:3;36137:19;;35764:398;5293:41:17;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;6763:280::-;6834:1;-1:-1:-1;;;;;6829:6:17;:1;-1:-1:-1;;;;;6829:6:17;;6825:212;;6856:44;;;;;37075:2:45;37057:21;;;37114:2;37094:18;;;37087:30;37153:34;37148:2;37133:18;;37126:62;-1:-1:-1;;;37219:2:45;37204:18;;37197:35;37264:3;37249:19;;36873:401;2409:432:17;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;37481:74:45;;;-1:-1:-1;;;37571:18:45;;;37564:34;;;;2712:4:17;37614:18:45;;;37607:34;2489:11:17;;1671:64;2586:43;;37454:18:45;;2652:67:17;;;-1:-1:-1;;2652:67:17;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:17;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:17;2820:7;:14;;-1:-1:-1;;2820:14:17;;;;;2409:432::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;180:681:45:-;351:2;403:21;;;473:13;;376:18;;;495:22;;;322:4;;351:2;574:15;;;;548:2;533:18;;;322:4;617:218;631:6;628:1;625:13;617:218;;;696:13;;-1:-1:-1;;;;;692:62:45;680:75;;810:15;;;;775:12;;;;653:1;646:9;617:218;;;-1:-1:-1;852:3:45;;180:681;-1:-1:-1;;;;;;180:681:45:o;1097:1638::-;1301:4;1330:2;1370;1359:9;1355:18;1400:2;1389:9;1382:21;1423:6;1458;1452:13;1489:6;1481;1474:22;1515:2;1505:12;;1548:2;1537:9;1533:18;1526:25;;1610:2;1600:6;1597:1;1593:14;1582:9;1578:30;1574:39;1648:2;1640:6;1636:15;1669:1;1690;1700:1006;1716:6;1711:3;1708:15;1700:1006;;;1785:22;;;-1:-1:-1;;1781:36:45;1769:49;;1841:13;;1928:9;;-1:-1:-1;;;;;1924:58:45;1909:74;;2022:11;;2016:18;2054:15;;;2047:27;;;2135:19;;1881:15;;;2167:24;;;2257:21;;;;2302:1;;2225:2;2213:15;;;2316:282;2332:8;2327:3;2324:17;2316:282;;;2413:15;;-1:-1:-1;;;;;;2409:88:45;2395:103;;2567:17;;;;2360:1;2351:11;;;;;2524:14;;;;2316:282;;;-1:-1:-1;2684:12:45;;;;2621:5;-1:-1:-1;;;2649:15:45;;;;1742:1;1733:11;1700:1006;;;-1:-1:-1;2723:6:45;;1097:1638;-1:-1:-1;;;;;;;;;1097:1638:45:o;2740:250::-;2825:1;2835:113;2849:6;2846:1;2843:13;2835:113;;;2925:11;;;2919:18;2906:11;;;2899:39;2871:2;2864:10;2835:113;;;-1:-1:-1;;2982:1:45;2964:16;;2957:27;2740:250::o;2995:271::-;3037:3;3075:5;3069:12;3102:6;3097:3;3090:19;3118:76;3187:6;3180:4;3175:3;3171:14;3164:4;3157:5;3153:16;3118:76;:::i;:::-;3248:2;3227:15;-1:-1:-1;;3223:29:45;3214:39;;;;3255:4;3210:50;;2995:271;-1:-1:-1;;2995:271:45:o;3271:803::-;3433:4;3462:2;3502;3491:9;3487:18;3532:2;3521:9;3514:21;3555:6;3590;3584:13;3621:6;3613;3606:22;3659:2;3648:9;3644:18;3637:25;;3721:2;3711:6;3708:1;3704:14;3693:9;3689:30;3685:39;3671:53;;3759:2;3751:6;3747:15;3780:1;3790:255;3804:6;3801:1;3798:13;3790:255;;;3897:2;3893:7;3881:9;3873:6;3869:22;3865:36;3860:3;3853:49;3925:40;3958:6;3949;3943:13;3925:40;:::i;:::-;3915:50;-1:-1:-1;4023:12:45;;;;3988:15;;;;3826:1;3819:9;3790:255;;;-1:-1:-1;4062:6:45;;3271:803;-1:-1:-1;;;;;;;3271:803:45:o;4367:184::-;-1:-1:-1;;;4416:1:45;4409:88;4516:4;4513:1;4506:15;4540:4;4537:1;4530:15;4556:437;4635:1;4631:12;;;;4678;;;4699:61;;4753:4;4745:6;4741:17;4731:27;;4699:61;4806:2;4798:6;4795:14;4775:18;4772:38;4769:218;;-1:-1:-1;;;4840:1:45;4833:88;4944:4;4941:1;4934:15;4972:4;4969:1;4962:15;4769:218;;4556:437;;;:::o;5124:545::-;5226:2;5221:3;5218:11;5215:448;;;5262:1;5287:5;5283:2;5276:17;5332:4;5328:2;5318:19;5402:2;5390:10;5386:19;5383:1;5379:27;5373:4;5369:38;5438:4;5426:10;5423:20;5420:47;;;-1:-1:-1;5461:4:45;5420:47;5516:2;5511:3;5507:12;5504:1;5500:20;5494:4;5490:31;5480:41;;5571:82;5589:2;5582:5;5579:13;5571:82;;;5634:17;;;5615:1;5604:13;5571:82;;;5575:3;;;5124:545;;;:::o;5845:1352::-;5971:3;5965:10;5998:18;5990:6;5987:30;5984:56;;;6020:18;;:::i;:::-;6049:97;6139:6;6099:38;6131:4;6125:11;6099:38;:::i;:::-;6093:4;6049:97;:::i;:::-;6201:4;;6265:2;6254:14;;6282:1;6277:663;;;;6984:1;7001:6;6998:89;;;-1:-1:-1;7053:19:45;;;7047:26;6998:89;-1:-1:-1;;5802:1:45;5798:11;;;5794:24;5790:29;5780:40;5826:1;5822:11;;;5777:57;7100:81;;6247:944;;6277:663;5071:1;5064:14;;;5108:4;5095:18;;-1:-1:-1;;6313:20:45;;;6431:236;6445:7;6442:1;6439:14;6431:236;;;6534:19;;;6528:26;6513:42;;6626:27;;;;6594:1;6582:14;;;;6461:19;;6431:236;;;6435:3;6695:6;6686:7;6683:19;6680:201;;;6756:19;;;6750:26;-1:-1:-1;;6839:1:45;6835:14;;;6851:3;6831:24;6827:37;6823:42;6808:58;6793:74;;6680:201;-1:-1:-1;;;;;6927:1:45;6911:14;;;6907:22;6894:36;;-1:-1:-1;5845:1352:45:o;7202:184::-;-1:-1:-1;;;7251:1:45;7244:88;7351:4;7348:1;7341:15;7375:4;7372:1;7365:15;7391:249;7501:2;7482:13;;-1:-1:-1;;7478:27:45;7466:40;;7536:18;7521:34;;7557:22;;;7518:62;7515:88;;;7583:18;;:::i;:::-;7619:2;7612:22;-1:-1:-1;;7391:249:45:o;7645:250::-;7712:2;7706:9;7754:6;7742:19;;7791:18;7776:34;;7812:22;;;7773:62;7770:88;;;7838:18;;:::i;:::-;7874:2;7867:22;7645:250;:::o;7900:536::-;7954:5;8007:3;8000:4;7992:6;7988:17;7984:27;7974:55;;8025:1;8022;8015:12;7974:55;8054:6;8048:13;8080:18;8076:2;8073:26;8070:52;;;8102:18;;:::i;:::-;8151:2;8145:9;8163:67;8218:2;8199:13;;-1:-1:-1;;8195:27:45;8224:4;8191:38;8145:9;8163:67;:::i;:::-;8254:2;8246:6;8239:18;8300:3;8293:4;8288:2;8280:6;8276:15;8272:26;8269:35;8266:55;;;8317:1;8314;8307:12;8266:55;8330:76;8403:2;8396:4;8388:6;8384:17;8377:4;8369:6;8365:17;8330:76;:::i;:::-;8424:6;7900:536;-1:-1:-1;;;;7900:536:45:o;8441:337::-;8521:6;8574:2;8562:9;8553:7;8549:23;8545:32;8542:52;;;8590:1;8587;8580:12;8542:52;8623:9;8617:16;8656:18;8648:6;8645:30;8642:50;;;8688:1;8685;8678:12;8642:50;8711:61;8764:7;8755:6;8744:9;8740:22;8711:61;:::i;8783:220::-;8932:2;8921:9;8914:21;8895:4;8952:45;8993:2;8982:9;8978:18;8970:6;8952:45;:::i;:::-;8944:53;8783:220;-1:-1:-1;;;8783:220:45:o;9008:277::-;9075:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:52;;;9144:1;9141;9134:12;9096:52;9176:9;9170:16;9229:5;9222:13;9215:21;9208:5;9205:32;9195:60;;9251:1;9248;9241:12;9290:179;9325:3;9367:1;9349:16;9346:23;9343:120;;;9413:1;9410;9407;9392:23;-1:-1:-1;9450:1:45;9444:8;9439:3;9435:18;9290:179;:::o;9474:671::-;9513:3;9555:4;9537:16;9534:26;9531:39;;;9474:671;:::o;9531:39::-;9597:2;9591:9;-1:-1:-1;;9662:16:45;9658:25;;9655:1;9591:9;9634:50;9713:4;9707:11;9737:16;9772:18;9843:2;9836:4;9828:6;9824:17;9821:25;9816:2;9808:6;9805:14;9802:45;9799:58;;;9850:5;;;;;9474:671;:::o;9799:58::-;9887:6;9881:4;9877:17;9866:28;;9923:3;9917:10;9950:2;9942:6;9939:14;9936:27;;;9956:5;;;;;;9474:671;:::o;9936:27::-;10040:2;10021:16;10015:4;10011:27;10007:36;10000:4;9991:6;9986:3;9982:16;9978:27;9975:69;9972:82;;;10047:5;;;;;;9474:671;:::o;9972:82::-;10063:57;10114:4;10105:6;10097;10093:19;10089:30;10083:4;10063:57;:::i;:::-;-1:-1:-1;10136:3:45;;9474:671;-1:-1:-1;;;;;9474:671:45:o;10637:155::-;10733:1;10726:5;10723:12;10713:46;;10739:18;;:::i;:::-;10768;;10637:155::o;10797:12530::-;10890:3;10928:5;10922:12;10955:6;10950:3;10943:19;10981:4;11022:2;11017:3;11013:12;11047:11;11074;11067:18;;11124:6;11121:1;11117:14;11110:5;11106:26;11094:38;;11151:5;11148:1;11141:16;11193:2;11190:1;11180:16;11214:1;11224:12077;11238:6;11235:1;11232:13;11224:12077;;;11299:16;;;11287:29;;11375:13;;112:19;;;5071:1;5064:14;;;164:4;5095:18;;;155:14;;;;11375:13;11584:3559;11629:8;11624:2;11611:11;11607:20;11604:34;11584:3559;;;11767:8;11761:15;11803:4;11824:62;11880:5;11875:2;11869:4;11865:13;11824:62;:::i;:::-;11903:79;11978:2;11971:5;11967:14;11962:2;11955:4;11952:1;11948:12;11944:21;11903:79;:::i;:::-;11999:80;12075:2;12068:5;12064:14;12059:2;12052:4;12048:2;12044:13;12040:22;11999:80;:::i;:::-;12096;12172:2;12165:5;12161:14;12156:2;12149:4;12145:2;12141:13;12137:22;12096:80;:::i;:::-;12203:3;12223:80;12299:2;12292:5;12288:14;12283:2;12276:4;12272:2;12268:13;12264:22;12223:80;:::i;:::-;12330:3;12350:80;12426:2;12419:5;12415:14;12410:2;12403:4;12399:2;12395:13;12391:22;12350:80;:::i;:::-;12457:3;12477:80;12553:2;12546:5;12542:14;12537:2;12530:4;12526:2;12522:13;12518:22;12477:80;:::i;:::-;12584:3;12604:80;12680:2;12673:5;12669:14;12664:2;12657:4;12653:2;12649:13;12645:22;12604:80;:::i;:::-;12701:81;12777:3;12770:5;12766:15;12761:2;12754:4;12750:2;12746:13;12742:22;12701:81;:::i;:::-;12799;12875:3;12868:5;12864:15;12859:2;12852:4;12848:2;12844:13;12840:22;12799:81;:::i;:::-;12897;12973:3;12966:5;12962:15;12957:2;12950:4;12946:2;12942:13;12938:22;12897:81;:::i;:::-;12995;13071:3;13064:5;13060:15;13055:2;13048:4;13044:2;13040:13;13036:22;12995:81;:::i;:::-;13093;13169:3;13162:5;13158:15;13153:2;13146:4;13142:2;13138:13;13134:22;13093:81;:::i;:::-;13191:82;13268:3;13261:5;13257:15;13252:2;13245:4;13240:3;13236:14;13232:23;13191:82;:::i;:::-;13290;13367:3;13360:5;13356:15;13351:2;13344:4;13339:3;13335:14;13331:23;13290:82;:::i;:::-;13389;13466:3;13459:5;13455:15;13450:2;13443:4;13438:3;13434:14;13430:23;13389:82;:::i;:::-;13488:81;13564:3;13557:5;13553:15;13548:2;13541:4;13537:2;13533:13;13529:22;13488:81;:::i;:::-;13586:82;13663:3;13656:5;13652:15;13647:2;13640:4;13635:3;13631:14;13627:23;13586:82;:::i;:::-;13685;13762:3;13755:5;13751:15;13746:2;13739:4;13734:3;13730:14;13726:23;13685:82;:::i;:::-;13784;13861:3;13854:5;13850:15;13845:2;13838:4;13833:3;13829:14;13825:23;13784:82;:::i;:::-;13883:81;13959:3;13952:5;13948:15;13943:2;13936:4;13932:2;13928:13;13924:22;13883:81;:::i;:::-;13981:82;14058:3;14051:5;14047:15;14042:2;14035:4;14030:3;14026:14;14022:23;13981:82;:::i;:::-;14080;14157:3;14150:5;14146:15;14141:2;14134:4;14129:3;14125:14;14121:23;14080:82;:::i;:::-;14179;14256:3;14249:5;14245:15;14240:2;14233:4;14228:3;14224:14;14220:23;14179:82;:::i;:::-;14278:81;14354:3;14347:5;14343:15;14338:2;14331:4;14327:2;14323:13;14319:22;14278:81;:::i;:::-;14376:82;14453:3;14446:5;14442:15;14437:2;14430:4;14425:3;14421:14;14417:23;14376:82;:::i;:::-;14475;14552:3;14545:5;14541:15;14536:2;14529:4;14524:3;14520:14;14516:23;14475:82;:::i;:::-;14574;14651:3;14644:5;14640:15;14635:2;14628:4;14623:3;14619:14;14615:23;14574:82;:::i;:::-;14673:81;14749:3;14742:5;14738:15;14733:2;14726:4;14722:2;14718:13;14714:22;14673:81;:::i;:::-;;;;;14771:82;14848:3;14841:5;14837:15;14832:2;14825:4;14820:3;14816:14;14812:23;14771:82;:::i;:::-;14870;14947:3;14940:5;14936:15;14931:2;14924:4;14919:3;14915:14;14911:23;14870:82;:::i;:::-;;14969:73;15037:3;15030:5;15026:15;15019:4;15014:3;15010:14;14969:73;:::i;:::-;-1:-1:-1;15079:4:45;15068:16;;;;;15127:1;15113:16;;;;;11684:20;;11584:3559;;;15170:15;;;15201:25;;;15198:230;;;15257:66;15317:5;15310:4;15302:6;15298:17;15257:66;:::i;:::-;15349:14;;;;15412:1;15395:19;15198:230;15460:8;15447:11;15444:25;15441:238;;;15500:74;15568:5;15561:4;15552:6;15549:1;15545:14;15541:25;15500:74;:::i;:::-;15600:14;;;;15663:1;15646:19;15441:238;15711:8;15698:11;15695:25;15692:239;;;15751:75;15820:5;15813:4;15804:6;15800:2;15796:15;15792:26;15751:75;:::i;:::-;15852:14;;;;15915:1;15898:19;15692:239;15963:8;15950:11;15947:25;15944:239;;;16003:75;16072:5;16065:4;16056:6;16052:2;16048:15;16044:26;16003:75;:::i;:::-;16104:14;;;;16167:1;16150:19;15944:239;16215:8;16202:11;16199:25;16196:239;;;16255:75;16324:5;16317:4;16308:6;16304:2;16300:15;16296:26;16255:75;:::i;:::-;16356:14;;;;16419:1;16402:19;16196:239;16467:8;16454:11;16451:25;16448:239;;;16507:75;16576:5;16569:4;16560:6;16556:2;16552:15;16548:26;16507:75;:::i;:::-;16608:14;;;;16671:1;16654:19;16448:239;16719:8;16706:11;16703:25;16700:239;;;16759:75;16828:5;16821:4;16812:6;16808:2;16804:15;16800:26;16759:75;:::i;:::-;16860:14;;;;16923:1;16906:19;16700:239;16971:8;16958:11;16955:25;16952:239;;;17011:75;17080:5;17073:4;17064:6;17060:2;17056:15;17052:26;17011:75;:::i;:::-;17112:14;;;;17175:1;17158:19;16952:239;17223:8;17210:11;17207:25;17204:239;;;17263:75;17332:5;17325:4;17316:6;17312:2;17308:15;17304:26;17263:75;:::i;:::-;17364:14;;;;17427:1;17410:19;17204:239;17475:8;17462:11;17459:25;17456:239;;;17515:75;17584:5;17577:4;17568:6;17564:2;17560:15;17556:26;17515:75;:::i;:::-;17616:14;;;;17679:1;17662:19;17456:239;17727:8;17714:11;17711:25;17708:239;;;17767:75;17836:5;17829:4;17820:6;17816:2;17812:15;17808:26;17767:75;:::i;:::-;17868:14;;;;17931:1;17914:19;17708:239;17979:8;17966:11;17963:25;17960:239;;;18019:75;18088:5;18081:4;18072:6;18068:2;18064:15;18060:26;18019:75;:::i;:::-;18120:14;;;;18183:1;18166:19;17960:239;18231:8;18218:11;18215:25;18212:239;;;18271:75;18340:5;18333:4;18324:6;18320:2;18316:15;18312:26;18271:75;:::i;:::-;18372:14;;;;18435:1;18418:19;18212:239;18483:8;18470:11;18467:25;18464:240;;;18523:76;18593:5;18586:4;18577:6;18572:3;18568:16;18564:27;18523:76;:::i;:::-;18625:14;;;;18688:1;18671:19;18464:240;18736:8;18723:11;18720:25;18717:240;;;18776:76;18846:5;18839:4;18830:6;18825:3;18821:16;18817:27;18776:76;:::i;:::-;18878:14;;;;18941:1;18924:19;18717:240;18989:8;18976:11;18973:25;18970:240;;;19029:76;19099:5;19092:4;19083:6;19078:3;19074:16;19070:27;19029:76;:::i;:::-;19131:14;;;;19194:1;19177:19;18970:240;19242:8;19229:11;19226:25;19223:240;;;19282:76;19352:5;19345:4;19336:6;19331:3;19327:16;19323:27;19282:76;:::i;:::-;19384:14;;;;19447:1;19430:19;19223:240;19495:8;19482:11;19479:25;19476:240;;;19535:76;19605:5;19598:4;19589:6;19584:3;19580:16;19576:27;19535:76;:::i;:::-;19637:14;;;;19700:1;19683:19;19476:240;19748:8;19735:11;19732:25;19729:240;;;19788:76;19858:5;19851:4;19842:6;19837:3;19833:16;19829:27;19788:76;:::i;:::-;19890:14;;;;19953:1;19936:19;19729:240;20001:8;19988:11;19985:25;19982:240;;;20041:76;20111:5;20104:4;20095:6;20090:3;20086:16;20082:27;20041:76;:::i;:::-;20143:14;;;;20206:1;20189:19;19982:240;20254:8;20241:11;20238:25;20235:240;;;20294:76;20364:5;20357:4;20348:6;20343:3;20339:16;20335:27;20294:76;:::i;:::-;20396:14;;;;20459:1;20442:19;20235:240;20507:8;20494:11;20491:25;20488:240;;;20547:76;20617:5;20610:4;20601:6;20596:3;20592:16;20588:27;20547:76;:::i;:::-;20649:14;;;;20712:1;20695:19;20488:240;20760:8;20747:11;20744:25;20741:240;;;20800:76;20870:5;20863:4;20854:6;20849:3;20845:16;20841:27;20800:76;:::i;:::-;20902:14;;;;20965:1;20948:19;20741:240;21013:8;21000:11;20997:25;20994:240;;;21053:76;21123:5;21116:4;21107:6;21102:3;21098:16;21094:27;21053:76;:::i;:::-;21155:14;;;;21218:1;21201:19;20994:240;21266:8;21253:11;21250:25;21247:240;;;21306:76;21376:5;21369:4;21360:6;21355:3;21351:16;21347:27;21306:76;:::i;:::-;21408:14;;;;21471:1;21454:19;21247:240;21519:8;21506:11;21503:25;21500:240;;;21559:76;21629:5;21622:4;21613:6;21608:3;21604:16;21600:27;21559:76;:::i;:::-;21661:14;;;;21724:1;21707:19;21500:240;21772:8;21759:11;21756:25;21753:240;;;21812:76;21882:5;21875:4;21866:6;21861:3;21857:16;21853:27;21812:76;:::i;:::-;21914:14;;;;21977:1;21960:19;21753:240;22025:8;22012:11;22009:25;22006:240;;;22065:76;22135:5;22128:4;22119:6;22114:3;22110:16;22106:27;22065:76;:::i;:::-;22167:14;;;;22230:1;22213:19;22006:240;22278:8;22265:11;22262:25;22259:240;;;22318:76;22388:5;22381:4;22372:6;22367:3;22363:16;22359:27;22318:76;:::i;:::-;22420:14;;;;22483:1;22466:19;22259:240;22531:8;22518:11;22515:25;22512:240;;;22571:76;22641:5;22634:4;22625:6;22620:3;22616:16;22612:27;22571:76;:::i;:::-;22673:14;;;;22736:1;22719:19;22512:240;22784:8;22771:11;22768:25;22765:240;;;22824:76;22894:5;22887:4;22878:6;22873:3;22869:16;22865:27;22824:76;:::i;:::-;22926:14;;;;22989:1;22972:19;22765:240;23037:8;23024:11;23021:25;23018:178;;;23077:65;23136:5;23127:6;23122:3;23118:16;23077:65;:::i;:::-;23168:14;;;;23018:178;-1:-1:-1;;;23279:12:45;;;;23217:5;-1:-1:-1;23257:1:45;23245:14;;;;11253:9;11224:12077;;;-1:-1:-1;23317:4:45;;10797:12530;-1:-1:-1;;;;;;;10797:12530:45:o;23332:147::-;23420:1;23413:5;23410:12;23400:46;;23426:18;;:::i;23484:3889::-;24077:3;24066:9;24059:22;24040:4;24104:46;24145:3;24134:9;24130:19;24122:6;24104:46;:::i;:::-;-1:-1:-1;;;;;24190:6:45;24186:55;24181:2;24170:9;24166:18;24159:83;24272:1;24264:6;24261:13;24251:47;;24278:18;;:::i;:::-;24334:6;24329:2;24318:9;24314:18;24307:34;24389:9;24381:6;24377:22;24372:2;24361:9;24357:18;24350:50;24423:33;24449:6;24441;24423:33;:::i;:::-;24409:47;;24505:9;24497:6;24493:22;24487:3;24476:9;24472:19;24465:51;24540:1;24532:6;24525:17;24575:7;24570:2;24562:6;24558:15;24551:32;-1:-1:-1;;;;;24624:6:45;24620:55;24614:3;24603:9;24599:19;24592:84;24741:2;24729:9;24721:6;24717:22;24713:31;24707:3;24696:9;24692:19;24685:60;24777:2;24769:6;24765:15;24809:6;24803:13;24837:6;24832:3;24825:19;24872:2;24864:6;24860:15;24853:22;;24931:2;24921:6;24918:1;24914:14;24906:6;24902:27;24898:36;24953:6;24950:1;24943:17;24996:2;24993:1;24983:16;25017:1;25027:2247;25041:6;25038:1;25035:13;25027:2247;;;25106:19;;;-1:-1:-1;;25102:33:45;25090:46;;25166:13;;25181:4;25162:24;25219:1;25209:12;;25199:46;;25225:18;;:::i;:::-;25273:5;25265:6;25258:21;;25316:3;25311:2;25303:6;25299:15;25292:28;25358:3;25350:6;25346:16;25409:1;25401:6;25397:14;25391:21;25439:8;25432:5;25425:23;25482:3;25474:6;25470:16;25461:25;;25548:3;25536:8;25533:1;25529:16;25521:6;25517:29;25513:39;25587:1;25579:6;25575:14;25572:1;25565:25;25632:2;25629:1;25619:16;25659:1;25673:1141;25689:8;25684:3;25681:17;25673:1141;;;25795:3;25791:8;25782:6;25774;25770:19;25766:34;25759:5;25752:49;25829:1;25870:8;25864:15;25912:36;25938:9;25912:36;:::i;:::-;25965:24;;;26028:1;26013:17;;26047:178;;;;26247:1;26242:443;;;;26006:679;;26047:178;26119:3;26115:8;26104:9;26100:24;26095:2;26087:6;26083:15;26076:49;26204:2;26190:8;26183:16;26176:24;26173:1;26169:32;26161:6;26157:45;26153:54;26146:61;;26047:178;;26242:443;26281:8;26278:1;26271:19;26339:2;26336:1;26326:16;26374:1;26396:218;26412:8;26407:3;26404:17;26396:218;;;26532:7;26526:14;26521:2;26515:3;26507:6;26503:16;26499:25;26492:49;26590:1;26581:7;26577:15;26566:26;;26440:2;26435:3;26431:12;26424:19;;26396:218;;;26646:16;;26664:2;26642:25;;-1:-1:-1;;26006:679:45;-1:-1:-1;;;26797:2:45;26786:14;;;;;26712:3;-1:-1:-1;26758:1:45;26744:16;;;;25708:11;25673:1141;;;25677:3;;26863:6;26855;26851:19;26846:2;26838:6;26834:15;26827:44;26898:95;26986:6;26979:4;26971:6;26967:17;26898:95;:::i;:::-;26884:109;;;;27026:78;27100:1;27092:6;27088:14;27082:21;10621:4;10605:21;;10496:136;27026:78;4149:13;;4142:21;27159:2;27147:15;;4130:34;-1:-1:-1;27261:2:45;27252:12;;;;;27186:6;-1:-1:-1;27227:4:45;27215:17;;;;;25063:1;25056:9;25027:2247;;;25031:3;;27291:6;27283:14;;;;;;27306:61;27362:3;27351:9;27347:19;27339:6;27306:61;:::i;:::-;23484:3889;;;;;;;;;;:::o;27378:200::-;27457:13;;-1:-1:-1;;;;;27499:54:45;;27489:65;;27479:93;;27568:1;27565;27558:12;27583:154;27669:13;;27711:1;27701:12;;27691:40;;27727:1;27724;27717:12;27742:161;27835:13;;27877:1;27867:12;;27857:40;;27893:1;27890;27883:12;27908:1347;28002:6;28055:2;28043:9;28034:7;28030:23;28026:32;28023:52;;;28071:1;28068;28061:12;28023:52;28104:9;28098:16;28133:18;28174:2;28166:6;28163:14;28160:34;;;28190:1;28187;28180:12;28160:34;28213:22;;;;28269:6;28251:16;;;28247:29;28244:49;;;28289:1;28286;28279:12;28244:49;28315:17;;:::i;:::-;28363:2;28357:9;28391:2;28381:8;28378:16;28375:36;;;28407:1;28404;28397:12;28375:36;28434:56;28482:7;28471:8;28467:2;28463:17;28434:56;:::i;:::-;28427:5;28420:71;;28523:42;28561:2;28557;28553:11;28523:42;:::i;:::-;28518:2;28511:5;28507:14;28500:66;28598:49;28643:2;28639;28635:11;28598:49;:::i;:::-;28593:2;28586:5;28582:14;28575:73;28687:2;28683;28679:11;28673:18;28716:2;28706:8;28703:16;28700:36;;;28732:1;28729;28722:12;28700:36;28768:56;28816:7;28805:8;28801:2;28797:17;28768:56;:::i;:::-;28763:2;28756:5;28752:14;28745:80;;28864:3;28860:2;28856:12;28850:19;28894:2;28884:8;28881:16;28878:36;;;28910:1;28907;28900:12;28878:36;28947:56;28995:7;28984:8;28980:2;28976:17;28947:56;:::i;:::-;28941:3;28934:5;28930:15;28923:81;;29037:43;29075:3;29071:2;29067:12;29037:43;:::i;:::-;29031:3;29024:5;29020:15;29013:68;29128:3;29124:2;29120:12;29114:19;29108:3;29101:5;29097:15;29090:44;29167:57;29219:3;29215:2;29211:12;29167:57;:::i;:::-;29161:3;29150:15;;29143:82;29154:5;27908:1347;-1:-1:-1;;;;;27908:1347:45:o;29260:1209::-;29365:6;29396:2;29439;29427:9;29418:7;29414:23;29410:32;29407:52;;;29455:1;29452;29445:12;29407:52;29488:9;29482:16;29517:18;29558:2;29550:6;29547:14;29544:34;;;29574:1;29571;29564:12;29544:34;29612:6;29601:9;29597:22;29587:32;;29657:7;29650:4;29646:2;29642:13;29638:27;29628:55;;29679:1;29676;29669:12;29628:55;29708:2;29702:9;29730:2;29726;29723:10;29720:36;;;29736:18;;:::i;:::-;29782:2;29779:1;29775:10;29814:2;29808:9;29826:40;29862:2;29858;29854:11;29846:6;29826:40;:::i;:::-;29901:18;;;29977:11;;;29973:20;;;29935:15;;;30005:19;;;30002:39;;;30037:1;30034;30027:12;30002:39;30069:2;30065;30061:11;30050:22;;30081:357;30097:6;30092:3;30089:15;30081:357;;;30176:3;30170:10;30212:2;30199:11;30196:19;30193:109;;;30256:1;30285:2;30281;30274:14;30193:109;30327:68;30387:7;30382:2;30368:11;30364:2;30360:20;30356:29;30327:68;:::i;:::-;30315:81;;-1:-1:-1;30114:12:45;;;;30416;;30081:357;;;-1:-1:-1;30457:6:45;29260:1209;-1:-1:-1;;;;;;;;29260:1209:45:o;30474:184::-;-1:-1:-1;;;30523:1:45;30516:88;30623:4;30620:1;30613:15;30647:4;30644:1;30637:15;30663:300;30849:2;30838:9;30831:21;30812:4;30869:45;30910:2;30899:9;30895:18;30887:6;30869:45;:::i;:::-;30861:53;;30950:6;30945:2;30934:9;30930:18;30923:34;30663:300;;;;;:::o;30968:184::-;31038:6;31091:2;31079:9;31070:7;31066:23;31062:32;31059:52;;;31107:1;31104;31097:12;31059:52;-1:-1:-1;31130:16:45;;30968:184;-1:-1:-1;30968:184:45:o;31459:430::-;-1:-1:-1;;;;;;31648:6:45;31644:79;31639:3;31632:92;31614:3;31753:6;31747:13;31769:74;31836:6;31832:1;31827:3;31823:11;31816:4;31808:6;31804:17;31769:74;:::i;:::-;31863:16;;;;31881:1;31859:24;;31459:430;-1:-1:-1;;;31459:430:45:o;31894:287::-;32023:3;32061:6;32055:13;32077:66;32136:6;32131:3;32124:4;32116:6;32112:17;32077:66;:::i;:::-;32159:16;;;;;31894:287;-1:-1:-1;;31894:287:45:o;32186:446::-;32436:2;32425:9;32418:21;32475:1;32470:2;32459:9;32455:18;32448:29;32513:7;32508:2;32497:9;32493:18;32486:35;32559:3;32552:4;32541:9;32537:20;32530:33;32399:4;32580:46;32621:3;32610:9;32606:19;32598:6;32580:46;:::i;33501:397::-;33731:2;33720:9;33713:21;33694:4;33751:49;33796:2;33785:9;33781:18;33414:2;33402:15;;-1:-1:-1;;;33442:4:45;33433:14;;33426:36;33487:2;33478:12;;33337:159;33751:49;33743:57;;-1:-1:-1;;;;;33840:6:45;33836:55;33831:2;33820:9;33816:18;33809:83;33501:397;;;;:::o;34067:::-;34297:2;34286:9;34279:21;34260:4;34317:49;34362:2;34351:9;34347:18;33980:2;33968:15;;-1:-1:-1;;;34008:4:45;33999:14;;33992:36;34053:2;34044:12;;33903:159;34874:440;35124:2;35113:9;35106:21;35087:4;35150:49;35195:2;35184:9;35180:18;33414:2;33402:15;;-1:-1:-1;;;33442:4:45;33433:14;;33426:36;33487:2;33478:12;;33337:159;35150:49;35247:9;35239:6;35235:22;35230:2;35219:9;35215:18;35208:50;35275:33;35301:6;35293;35275:33;:::i;35319:440::-;35569:2;35558:9;35551:21;35532:4;35595:49;35640:2;35629:9;35625:18;33980:2;33968:15;;-1:-1:-1;;;34008:4:45;33999:14;;33992:36;34053:2;34044:12;;33903:159;36167:348;36397:2;36386:9;36379:21;36360:4;36417:49;36462:2;36451:9;36447:18;33414:2;33402:15;;-1:-1:-1;;;33442:4:45;33433:14;;33426:36;33487:2;33478:12;;33337:159;36417:49;36409:57;;36502:6;36497:2;36486:9;36482:18;36475:34;36167:348;;;;:::o;36520:::-;36750:2;36739:9;36732:21;36713:4;36770:49;36815:2;36804:9;36800:18;33980:2;33968:15;;-1:-1:-1;;;34008:4:45;33999:14;;33992:36;34053:2;34044:12;;33903:159","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testGetAllAssetsIDs()":"c0ef0264","testMint()":"9642ddaf","testMintATokenNotWrapped()":"cb1f5f2b","testUnwrap()":"c43484d6","testUnwrapATokenNotWrapped()":"5266885a","testUnwrapATokenWithValueLocked()":"b74cda56","testWrap()":"8312289b","testWrapTokenAlreadyWrapped()":"eb66037e","user()":"4f8632ba","user2()":"b9edb1af"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetAllAssetsIDs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintATokenNotWrapped\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrapATokenNotWrapped\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrapATokenWithValueLocked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWrapTokenAlreadyWrapped\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/tests/SATPWrapperTestFungible.sol\":\"SATPWrapperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/main/solidity/contracts/SATPWrapperContract.sol\":{\"keccak256\":\"0x65cab15235cdf814b1de5400eeda71323237bb9fa112ce3b86e3467d77164e02\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e7572319e4fa727319a25afcb940b38c43ab327fc17ec07121f96b8b2eaa7663\",\"dweb:/ipfs/QmSydVQUZKR6LLGzt9Q3K5QHiV5Be8QL8JXBRVxEReeqJZ\"]},\"src/test/solidity/contracts/SATPTokenContract.sol\":{\"keccak256\":\"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f\",\"dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D\"]},\"src/test/solidity/tests/SATPWrapperTestFungible.sol\":{\"keccak256\":\"0x556711aaf9978f27d51eb6e6a4dc41b4f02d518562bb4385848f6768030a94d7\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e0019a866214315ebc20b6eaa2b05310cefccbd06a7039bede9821e270b5230d\",\"dweb:/ipfs/QmcNBgCkcfnAWRiaKpm183LG9R3NaVDqmQgiV2PbZSiYqW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetAllAssetsIDs"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintATokenNotWrapped"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrapATokenNotWrapped"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrapATokenWithValueLocked"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWrap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWrapTokenAlreadyWrapped"},{"inputs":[],"stateMutability":"view","type":"function","name":"user","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"user2","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/tests/SATPWrapperTestFungible.sol":"SATPWrapperTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/main/solidity/contracts/SATPWrapperContract.sol":{"keccak256":"0x65cab15235cdf814b1de5400eeda71323237bb9fa112ce3b86e3467d77164e02","urls":["bzz-raw://e7572319e4fa727319a25afcb940b38c43ab327fc17ec07121f96b8b2eaa7663","dweb:/ipfs/QmSydVQUZKR6LLGzt9Q3K5QHiV5Be8QL8JXBRVxEReeqJZ"],"license":"GPL-3.0"},"src/test/solidity/contracts/SATPTokenContract.sol":{"keccak256":"0x04a96ffb4f333461e04d12ca16369bab5cd31fc7c6ce6db7a89413997d1056cc","urls":["bzz-raw://21a8e75548085ccff4b712e1e30f4e161b0dc8bc576174a04e615e1feabd6f2f","dweb:/ipfs/QmWvRR9QQMS3fCX1pdC2KaZMry6ipZTKBppZEkL5S8kv9D"],"license":"GPL-3.0"},"src/test/solidity/tests/SATPWrapperTestFungible.sol":{"keccak256":"0x556711aaf9978f27d51eb6e6a4dc41b4f02d518562bb4385848f6768030a94d7","urls":["bzz-raw://e0019a866214315ebc20b6eaa2b05310cefccbd06a7039bede9821e270b5230d","dweb:/ipfs/QmcNBgCkcfnAWRiaKpm183LG9R3NaVDqmQgiV2PbZSiYqW"],"license":"GPL-3.0"}},"version":1},"id":43} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestNFTApprove.sol/SATPWrapperTest.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestNFTApprove.sol/SATPWrapperTest.json new file mode 100644 index 0000000000..68602952c9 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestNFTApprove.sol/SATPWrapperTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAssign","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetAllAssetsIDs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testLock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintATokenNotWrapped","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTokenNameAndSymbol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrapATokenNotWrapped","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrapATokenWithValueLocked","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWrap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokenContractOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"user","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117815560c06040526080908152633ab9b2b960e11b60a0526200003c90620000c4565b601b80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260128152713a37b5b2b721b7b73a3930b1ba27bbb732b960711b60208201526200009090620000c4565b601c80546001600160a01b0319166001600160a01b0392909216919091179055348015620000bd57600080fd5b50620002b1565b6000620000d182620000d8565b5092915050565b60008082604051602001620000ee91906200021d565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200015a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018091906200023b565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001be90859087906004016200026d565b600060405180830381600087803b158015620001d957600080fd5b505af1158015620001ee573d6000803e3d6000fd5b50505050915091565b60005b8381101562000214578181015183820152602001620001fa565b50506000910152565b6000825162000231818460208701620001f7565b9190910192915050565b6000602082840312156200024e57600080fd5b81516001600160a01b03811681146200026657600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200029c816060850160208701620001f7565b601f01601f1916919091016060019392505050565b61c07b80620002c16000396000f3fe60806040523480156200001157600080fd5b5060043610620001c55760003560e01c8063b5508aa91162000101578063cb1f5f2b11620000a3578063e96d88e0116200007a578063e96d88e01462000308578063ec31250f1462000312578063f4eaeb4e1462000326578063fa7626d4146200033057600080fd5b8063cb1f5f2b14620002ea578063e13aba4814620002f4578063e20c9f7114620002fe57600080fd5b8063c0ef026411620000d8578063c0ef026414620002cc578063c2745ada14620002d6578063c43484d614620002e057600080fd5b8063b5508aa9146200029d578063b74cda5614620002a7578063ba414fa614620002b157600080fd5b80635266885a116200016b57806385226c81116200014257806385226c811462000270578063916a17c614620002895780639642ddaf146200029357600080fd5b80635266885a146200024357806366d9a9a0146200024d5780638312289b146200026657600080fd5b80633e5e3c2311620001a05780633e5e3c2314620002025780633f7286f4146200020c5780634f8632ba146200021657600080fd5b80630a9254e414620001ca5780631ed7831c14620001d6578063218e00ff14620001f8575b600080fd5b620001d46200033e565b005b620001e0620019f1565b604051620001ef9190620052f8565b60405180910390f35b620001d462001a55565b620001e062001bbd565b620001e062001c1f565b601b546200022a906001600160a01b031681565b6040516001600160a01b039091168152602001620001ef565b620001d462001c81565b6200025762001e34565b604051620001ef919062005347565b620001d462001f3c565b6200027a6200235f565b604051620001ef919062005452565b6200025762002439565b620001d462002538565b6200027a6200284e565b620001d462002928565b620002bb62002bdb565b6040519015158152602001620001ef565b620001d462002d13565b620001d462002e29565b620001d4620033f9565b620001d462003799565b620001d46200383a565b620001e062003e44565b620001d462003ea6565b601c546200022a906001600160a01b031681565b620001d462004409565b600054620002bb9060ff1681565b306040516200034d9062004f35565b6001600160a01b039091168152602001604051809103906000f0801580156200037a573d6000803e3d6000fd5b50601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055601c54604051911690620003b89062004f43565b6001600160a01b039091168152602001604051809103906000f080158015620003e5573d6000803e3d6000fd5b50601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905560208054600181018255600082905260408051808201909152601d81527f6c6f636b28616464726573732c616464726573732c75696e7432353629000000928101929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb01906200048790826200555c565b50604080516060810190915260219080600381526020016005815260200160079052815460018101835560009283526020909220620004ca920190600362004f51565b50604080516080810182526004815260208054835181830281018301909452808452600093828401929091858383015b82821015620005b05783829060005260206000200180546200051c90620054ce565b80601f01602080910402602001604051908101604052809291908181526020018280546200054a90620054ce565b80156200059b5780601f106200056f576101008083540402835291602001916200059b565b820191906000526020600020905b8154815290600101906020018083116200057d57829003601f168201915b505050505081526020019060010190620004fa565b5050505081526020016021805480602002602001604051908101604052809291908181526020016000905b828210156200067e576000848152602090819020830180546040805182850281018501909152818152928301828280156200066957602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000646576200064662005629565b815260206001928301818104948501949093039092029101808411620006245790505b505050505081526020019060010190620005db565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620006ec57620006ec62005629565b021790555060208281015180516200070b92600185019201906200500f565b50604082015180516200072991600284019160209091019062005068565b50606091909101516003909101805460ff19169115159190911790556022805460018101825560009190915260408051808201909152601f81527f756e6c6f636b28616464726573732c616464726573732c75696e74323536290060208201527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e51090910190620007ba90826200555c565b50604080516060810190915260239080600581526020016003815260200160079052815460018101835560009283526020909220620007fd920190600362004f51565b50604080516080810190915260009080600581526020016022805480602002602001604051908101604052809291908181526020016000905b82821015620008ec5783829060005260206000200180546200085890620054ce565b80601f01602080910402602001604051908101604052809291908181526020018280546200088690620054ce565b8015620008d75780601f10620008ab57610100808354040283529160200191620008d7565b820191906000526020600020905b815481529060010190602001808311620008b957829003601f168201915b50505050508152602001906001019062000836565b5050505081526020016023805480602002602001604051908101604052809291908181526020016000905b82821015620009ba57600084815260209081902083018054604080518285028101850190915281815292830182828015620009a557602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000982576200098262005629565b815260206001928301818104948501949093039092029101808411620009605790505b50505050508152602001906001019062000917565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562000a285762000a2862005629565b0217905550602082810151805162000a4792600185019201906200500f565b506040820151805162000a6591600284019160209091019062005068565b50606091909101516003909101805460ff19169115159190911790556024805460018101825560009190915260408051808201909152601581527f6d696e7428616464726573732c75696e7432353629000000000000000000000060208201527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec49091019062000af690826200555c565b506040805180820190915260058152600760208201526025805460018101825560009190915262000b4e917f401968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c909101906002620050c8565b506040805160808101909152600090808281526020016024805480602002602001604051908101604052809291908181526020016000905b8282101562000c3c57838290600052602060002001805462000ba890620054ce565b80601f016020809104026020016040519081016040528092919081815260200182805462000bd690620054ce565b801562000c275780601f1062000bfb5761010080835404028352916020019162000c27565b820191906000526020600020905b81548152906001019060200180831162000c0957829003601f168201915b50505050508152602001906001019062000b86565b5050505081526020016025805480602002602001604051908101604052809291908181526020016000905b8282101562000d0a5760008481526020908190208301805460408051828502810185019091528181529283018282801562000cf557602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000cd25762000cd262005629565b81526020600192830181810494850194909303909202910180841162000cb05790505b50505050508152602001906001019062000c67565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562000d785762000d7862005629565b0217905550602082810151805162000d9792600185019201906200500f565b506040820151805162000db591600284019160209091019062005068565b50606091909101516003909101805460ff19169115159190911790556026805460018101825560009190915260408051808201909152600d81527f6275726e2875696e74323536290000000000000000000000000000000000000060208201527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a35949091019062000e4690826200555c565b50604080516020810190915260078152602780546001808201835560009290925262000e97927f98a476f1687bc3d60a2da2adbcba2c46958e61fa2fb4042cd7bc5816a710195b9091019162005143565b50604080516080810190915260009080600181526020016026805480602002602001604051908101604052809291908181526020016000905b8282101562000f8657838290600052602060002001805462000ef290620054ce565b80601f016020809104026020016040519081016040528092919081815260200182805462000f2090620054ce565b801562000f715780601f1062000f455761010080835404028352916020019162000f71565b820191906000526020600020905b81548152906001019060200180831162000f5357829003601f168201915b50505050508152602001906001019062000ed0565b5050505081526020016027805480602002602001604051908101604052809291908181526020016000905b8282101562001054576000848152602090819020830180546040805182850281018501909152818152928301828280156200103f57602002820191906000526020600020906000905b82829054906101000a900460ff1660078111156200101c576200101c62005629565b81526020600192830181810494850194909303909202910180841162000ffa5790505b50505050508152602001906001019062000fb1565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620010c257620010c262005629565b02179055506020828101518051620010e192600185019201906200500f565b5060408201518051620010ff91600284019160209091019062005068565b50606091909101516003909101805460ff19169115159190911790556028805460018101825560009190915260408051808201909152601781527f61737369676e28616464726573732c75696e743235362900000000000000000060208201527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab5909101906200119090826200555c565b5060408051808201909152600681526007602082015260298054600181018255600091909152620011e8917fcb7c14ce178f56e2e8d86ab33ebc0ae081ba8556a00cd122038841867181caac909101906002620050c8565b50604080516080810190915260009080600281526020016028805480602002602001604051908101604052809291908181526020016000905b82821015620012d75783829060005260206000200180546200124390620054ce565b80601f01602080910402602001604051908101604052809291908181526020018280546200127190620054ce565b8015620012c25780601f106200129657610100808354040283529160200191620012c2565b820191906000526020600020905b815481529060010190602001808311620012a457829003601f168201915b50505050508152602001906001019062001221565b5050505081526020016029805480602002602001604051908101604052809291908181526020016000905b82821015620013a5576000848152602090819020830180546040805182850281018501909152818152928301828280156200139057602002820191906000526020600020906000905b82829054906101000a900460ff1660078111156200136d576200136d62005629565b8152602060019283018181049485019490930390920291018084116200134b5790505b50505050508152602001906001019062001302565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562001413576200141362005629565b021790555060208281015180516200143292600185019201906200500f565b50604082015180516200145091600284019160209091019062005068565b50606091909101516003909101805460ff1916911515919091179055602c805460018101825560009190915260408051808201909152601881527f617070726f766528616464726573732c75696e7432353629000000000000000060208201527f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a8609190910190620014e190826200555c565b50604080518082019091526003815260076020820152602d805460018101825560009190915262001539917f4a2cc91ee622da3bc833a54c37ffcb6f3ec23b7793efc5eaf5e71b7b406c5c06909101906002620050c8565b5060408051608081019091526000908060068152602001602c805480602002602001604051908101604052809291908181526020016000905b82821015620016285783829060005260206000200180546200159490620054ce565b80601f0160208091040260200160405190810160405280929190818152602001828054620015c290620054ce565b8015620016135780601f10620015e75761010080835404028352916020019162001613565b820191906000526020600020905b815481529060010190602001808311620015f557829003601f168201915b50505050508152602001906001019062001572565b505050508152602001602d805480602002602001604051908101604052809291908181526020016000905b82821015620016f657600084815260209081902083018054604080518285028101850190915281815292830182828015620016e157602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620016be57620016be62005629565b8152602060019283018181049485019490930390920291018084116200169c5790505b50505050508152602001906001019062001653565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562001764576200176462005629565b021790555060208281015180516200178392600185019201906200500f565b5060408201518051620017a191600284019160209091019062005068565b50606091909101516003909101805460ff1916911515919091179055601c546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200183057600080fd5b505af115801562001845573d6000803e3d6000fd5b5050601f54601e546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af1158015620018b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018d791906200563f565b50601f54601e546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200197192919091169063ea13407190602401602060405180830381865afa15801562001945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200196b91906200563f565b62004819565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620019d057600080fd5b505af1158015620019e5573d6000803e3d6000fd5b50505050505050505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801562001a4b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001a2c575b5050505050905090565b601f54604080516306fdde0360e01b8152905162001b08926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001aa2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001acc91908101906200573f565b6040518060400160405280600b81526020017f534154504e46546f6b656e00000000000000000000000000000000000000000081525062004891565b601f54604080516395d89b4160e01b8152905162001bbb926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001b55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b7f91908101906200573f565b6040518060400160405280600781526020017f534154504e46540000000000000000000000000000000000000000000000000081525062004891565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562001a4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001a2c575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562001a4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001a2c575050505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562001cd6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d0091908101906200573f565b6040518263ffffffff1660e01b815260040162001d1e919062005778565b6020604051808303816000875af192505050801562001d5c575060408051601f3d908101601f1916820190925262001d59918101906200563f565b60015b62001dc75762001d6b6200578d565b806308c379a00362001d92575062001d82620057a9565b8062001d8f575062001d94565b50565b505b3d80801562001dbe576040519150601f19603f3d011682016040523d82523d6000602084013e5050565b606091505b5050565b801562001d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f457870656374656420616e206572726f72000000000000000000000000000000604482015260640160405180910390fd5b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001f335760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001f1a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001ec65790505b5050505050815250508152602001906001019062001e58565b50505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa15801562001f91573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fbb91908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa1580156200200b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200203591908101906200573f565b601b546040516001600160e01b031960e088901b1681526200206b95949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af11580156200208b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020b191906200563f565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa1580156200210b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200213591908101906200573f565b6040518263ffffffff1660e01b815260040162002153919062005778565b600060405180830381865afa15801562002171573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200219b91908101906200621f565b9050620021f88160200151601f60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d617463680000000000000000000000000000815250620049f3565b601e54604080517f5137b8a7000000000000000000000000000000000000000000000000000000008152905162001d8f926001600160a01b031691635137b8a79160048083019260009291908290030181865afa1580156200225e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002288919081019062006328565b6000815181106200229d576200229d620063fa565b6020026020010151601f60009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620022f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200232391908101906200573f565b6040518060400160405280600f81526020017f49647320646f6e2774206d61746368000000000000000000000000000000000081525062004a57565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001f33578382906000526020600020018054620023a590620054ce565b80601f0160208091040260200160405190810160405280929190818152602001828054620023d390620054ce565b8015620024245780601f10620023f85761010080835404028352916020019162002424565b820191906000526020600020905b8154815290600101906020018083116200240657829003601f168201915b50505050508152602001906001019062002383565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001f335760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200251f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620024cb5790505b505050505081525050815260200190600101906200245d565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200258d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025b791908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562002607573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200263191908101906200573f565b601b546040516001600160e01b031960e088901b1681526200266795949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562002687573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026ad91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa15801562002703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200272d91908101906200573f565b6103e96040518363ffffffff1660e01b81526004016200274f92919062006410565b6020604051808303816000875af11580156200276f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200279591906200563f565b50601f54601e546040516370a0823160e01b81526001600160a01b03918216600482015262001bbb9291909116906370a0823190602401602060405180830381865afa158015620027ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002810919062006434565b60016040518060400160405280601081526020017f546f6b656e206e6f74206d696e7465640000000000000000000000000000000081525062004af4565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001f335783829060005260206000200180546200289490620054ce565b80601f0160208091040260200160405190810160405280929190818152602001828054620028c290620054ce565b8015620029135780601f10620028e75761010080835404028352916020019162002913565b820191906000526020600020905b815481529060010190602001808311620028f557829003601f168201915b50505050508152602001906001019062002872565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200297d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620029a791908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160059183916306fdde03916004808201926000929091908290030181865afa158015620029f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a2191908101906200573f565b601b546040516001600160e01b031960e088901b16815262002a5795949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562002a77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a9d91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa15801562002af3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b1d91908101906200573f565b6103e96040518363ffffffff1660e01b815260040162002b3f92919062006410565b6020604051808303816000875af115801562002b5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b8591906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562001cd6573d6000803e3d6000fd5b60008054610100900460ff161562002bfc5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002d0b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002c8d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200644e565b60408051601f198184030181529082905262002ca99162006480565b6000604051808303816000865af19150503d806000811462002ce8576040519150601f19603f3d011682016040523d82523d6000602084013e62002ced565b606091505b509150508080602001905181019062002d0791906200563f565b9150505b919050565b90565b601e54601f54604080516395d89b4160e01b815290516000936001600160a01b039081169363c1733f68939116916395d89b419160048082019288929091908290030181865afa15801562002d6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d9691908101906200573f565b6040518263ffffffff1660e01b815260040162002db4919062005778565b600060405180830381865afa15801562002dd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002dfc91908101906200621f565b905062001d8f816020015160006040518060600160405280602681526020016200c02060269139620049f3565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa15801562002e7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002ea891908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562002ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f2291908101906200573f565b601b546040516001600160e01b031960e088901b16815262002f5895949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562002f78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f9e91906200563f565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002ff957600080fd5b505af11580156200300e573d6000803e3d6000fd5b5050601f54601b546040516340c10f1960e01b81526001600160a01b0391821660048201526103e96024820152911692506340c10f1991506044016020604051808303816000875af115801562003069573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200308f91906200563f565b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620030ea57600080fd5b505af1158015620030ff573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b1580156200315557600080fd5b505af11580156200316a573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063e1efb596945091909216916306fdde039160048083019260009291908290030181865afa158015620031c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620031f091908101906200573f565b6103e96040518363ffffffff1660e01b81526004016200321292919062006410565b6020604051808303816000875af115801562003232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200325891906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363d9cf884c9316916306fdde039160048083019260009291908290030181865afa158015620032ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620032d891908101906200573f565b6103e96040518363ffffffff1660e01b8152600401620032fa92919062006410565b6020604051808303816000875af11580156200331a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200334091906200563f565b50601f54601b546040516370a0823160e01b81526001600160a01b03918216600482015262001bbb9291909116906370a0823190602401602060405180830381865afa15801562003395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033bb919062006434565b60016040518060400160405280601c81526020017f546f6b656e206e6f742072657475726e6564206f6e20756e6c6f636b0000000081525062004af4565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200344e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200347891908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620034c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620034f291908101906200573f565b601b546040516001600160e01b031960e088901b1681526200352895949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562003548573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200356e91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa158015620035c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035ee91908101906200573f565b6040518263ffffffff1660e01b81526004016200360c919062005778565b6020604051808303816000875af11580156200362c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200365291906200563f565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa158015620036ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620036d691908101906200573f565b6040518263ffffffff1660e01b8152600401620036f4919062005778565b600060405180830381865afa15801562003712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200373c91908101906200621f565b905062001d8f8160200151601f60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d61746368000000000000000000000000000081525062004b41565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620037ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200381891908101906200573f565b6103e96040518363ffffffff1660e01b815260040162001d1e92919062006410565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200388f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620038b991908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562003909573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200393391908101906200573f565b601b546040516001600160e01b031960e088901b1681526200396995949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562003989573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039af91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa15801562003a05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a2f91908101906200573f565b6103e96040518363ffffffff1660e01b815260040162003a5192919062006410565b6020604051808303816000875af115801562003a71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a9791906200563f565b50601f54601e546040516370a0823160e01b81526001600160a01b03918216600482015262003b509291909116906370a0823190602401602060405180830381865afa15801562003aec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b12919062006434565b60016040518060400160405280601181526020017f546f6b656e73206e6f74206d696e74656400000000000000000000000000000081525062004af4565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003baa57600080fd5b505af115801562003bbf573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b15801562003c1557600080fd5b505af115801562003c2a573d6000803e3d6000fd5b5050601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562003c8857600080fd5b505af115801562003c9d573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063b48272cc945091909216916306fdde039160048083019260009291908290030181865afa15801562003cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003d2391908101906200573f565b6103e96040518363ffffffff1660e01b815260040162003d4592919062006410565b6020604051808303816000875af115801562003d65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d8b91906200563f565b50601f54601e546040516370a0823160e01b81526001600160a01b03918216600482015262001bbb9291909116906370a0823190602401602060405180830381865afa15801562003de0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e06919062006434565b60006040518060400160405280601081526020017f546f6b656e206e6f74206275726e65640000000000000000000000000000000081525062004af4565b6060600c80548060200260200160405190810160405280929190818152602001828054801562001a4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001a2c575050505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa15801562003efb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f2591908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562003f75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f9f91908101906200573f565b601b546040516001600160e01b031960e088901b16815262003fd595949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562003ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200401b91906200563f565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200407657600080fd5b505af11580156200408b573d6000803e3d6000fd5b5050601f54601b546040516340c10f1960e01b81526001600160a01b0391821660048201526103e96024820152911692506340c10f1991506044016020604051808303816000875af1158015620040e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200410c91906200563f565b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200416757600080fd5b505af11580156200417c573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b158015620041d257600080fd5b505af1158015620041e7573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063e1efb596945091909216916306fdde039160048083019260009291908290030181865afa15801562004243573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200426d91908101906200573f565b6103e96040518363ffffffff1660e01b81526004016200428f92919062006410565b6020604051808303816000875af1158015620042af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042d591906200563f565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa1580156200432f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200435991908101906200573f565b6040518263ffffffff1660e01b815260040162004377919062005778565b600060405180830381865afa15801562004395573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620043bf91908101906200621f565b905062001d8f8160c001516103e96040518060400160405280601081526020017f546f6b656e206e6f74206c6f636b65640000000000000000000000000000000081525062004af4565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200445e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200448891908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620044d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200450291908101906200573f565b601b546040516001600160e01b031960e088901b1681526200453895949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562004558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200457e91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620045d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620045fe91908101906200573f565b6103ea6040518363ffffffff1660e01b81526004016200462092919062006410565b6020604051808303816000875af115801562004640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200466691906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b0393841693634534ba179316916306fdde039160048083019260009291908290030181865afa158015620046bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620046e691908101906200573f565b601b546040516001600160e01b031960e085901b1681526200471a92916001600160a01b0316906103ea906004016200649e565b6020604051808303816000875af11580156200473a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200476091906200563f565b50601f54601b546040516370a0823160e01b81526001600160a01b03918216600482015262001bbb9291909116906370a0823190602401602060405180830381865afa158015620047b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620047db919062006434565b60016040518060400160405280601281526020017f546f6b656e206e6f742061737369676e6564000000000000000000000000000081525062004af4565b8062001d8f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200487f9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001d8f62004ba0565b80604051602001620048a4919062006480565b6040516020818303038152906040528051906020012082604051602001620048cd919062006480565b604051602081830303815290604052805190602001201462001dc3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200496f9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051620049a89190620064ce565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620049e191906200650d565b60405180910390a162001dc362004ba0565b816001600160a01b0316836001600160a01b03161462004a52577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004a3e919062006538565b60405180910390a162004a52838362004cb3565b505050565b8160405160200162004a6a919062006480565b604051602081830303815290604052805190602001208360405160200162004a93919062006480565b604051602081830303815290604052805190602001201462004a52577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004ae0919062006538565b60405180910390a162004a52838362004891565b81831462004a52577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004b2d919062006538565b60405180910390a162004a52838362004dad565b816001600160a01b0316836001600160a01b03160362004a52577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004b8c919062006538565b60405180910390a162004a52838362004ead565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562004ca25760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262004c3d92916020016200644e565b60408051601f198184030181529082905262004c599162006480565b6000604051808303816000865af19150503d806000811462004c98576040519150601f19603f3d011682016040523d82523d6000602084013e62004c9d565b606091505b505050505b6000805461ff001916610100179055565b806001600160a01b0316826001600160a01b03161462001dc3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004d3b9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162004d74919062006581565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620049e19190620065c3565b80821462001dc3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004e3b9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162004e749190620065ee565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620049e1919062006627565b806001600160a01b0316826001600160a01b03160362001dc3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004d3b9060208082526025908201527f4572726f723a206120213d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b613ca2806200665383390190565b611d2b806200a2f583390190565b82805482825590600052602060002090601f0160209004810192821562004ffd5791602002820160005b8382111562004fcc57835183826101000a81548160ff0219169083600781111562004faa5762004faa62005629565b0217905550926020019260010160208160000104928301926001030262004f7b565b801562004ffb5782816101000a81549060ff021916905560010160208160000104928301926001030262004fcc565b505b506200500b929150620051be565b5090565b8280548282559060005260206000209081019282156200505a579160200282015b828111156200505a57825182906200504990826200555c565b509160200191906001019062005030565b506200500b929150620051d5565b828054828255906000526020600020908101928215620050ba579160200282015b82811115620050ba5782518051620050a9918491602090910190620051f6565b509160200191906001019062005089565b506200500b92915062005271565b82805482825590600052602060002090601f0160209004810192821562004ffd5791602002820160005b8382111562004fcc57835183826101000a81548160ff0219169083600781111562005121576200512162005629565b02179055509260200192600101602081600001049283019260010302620050f2565b82805482825590600052602060002090601f0160209004810192821562004ffd5791602002820160005b8382111562004fcc57835183826101000a81548160ff021916908360078111156200519c576200519c62005629565b021790555092602001926001016020816000010492830192600103026200516d565b5b808211156200500b5760008155600101620051bf565b808211156200500b576000620051ec828262005292565b50600101620051d5565b82805482825590600052602060002090601f0160209004810192821562004ffd5791602002820160005b8382111562004fcc57835183826101000a81548160ff021916908360078111156200524f576200524f62005629565b0217905550926020019260010160208160000104928301926001030262005220565b808211156200500b576000620052888282620052d1565b5060010162005271565b508054620052a090620054ce565b6000825580601f10620052b1575050565b601f01602090049060005260206000209081019062001d8f9190620051be565b50805460008255601f01602090049060005260206000209081019062001d8f9190620051be565b6020808252825182820181905260009190848201906040850190845b818110156200533b5783516001600160a01b03168352928401929184019160010162005314565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620053ef57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620053d95783516001600160e01b0319168252928b019260019290920191908b0190620053ad565b50978a019795505050918701916001016200536f565b50919998505050505050505050565b60005b838110156200541b57818101518382015260200162005401565b50506000910152565b600081518084526200543e816020860160208601620053fe565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620054ab57603f198886030184526200549885835162005424565b9450928501929085019060010162005479565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620054e357607f821691505b6020821081036200550457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562004a5257600081815260208120601f850160051c81016020861015620055335750805b601f850160051c820191505b8181101562005554578281556001016200553f565b505050505050565b815167ffffffffffffffff811115620055795762005579620054b8565b62005591816200558a8454620054ce565b846200550a565b602080601f831160018114620055c95760008415620055b05750858301515b600019600386901b1c1916600185901b17855562005554565b600085815260208120601f198616915b82811015620055fa57888601518255948401946001909101908401620055d9565b5085821015620056195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200565257600080fd5b815180151581146200566357600080fd5b9392505050565b601f8201601f1916810167ffffffffffffffff81118282101715620056935762005693620054b8565b6040525050565b60405160e0810167ffffffffffffffff81118282101715620056c057620056c0620054b8565b60405290565b600082601f830112620056d857600080fd5b815167ffffffffffffffff811115620056f557620056f5620054b8565b6040516200570e601f8301601f1916602001826200566a565b8181528460208386010111156200572457600080fd5b62005737826020830160208701620053fe565b949350505050565b6000602082840312156200575257600080fd5b815167ffffffffffffffff8111156200576a57600080fd5b6200573784828501620056c6565b60208152600062005663602083018462005424565b600060033d111562002d105760046000803e5060005160e01c90565b600060443d1015620057b85790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715620057e957505050505090565b8285019150815181811115620058025750505050505090565b843d87010160208285010111156200581d5750505050505090565b6200582e602082860101876200566a565b509095945050505050565b600881106200584c576200584c62005629565b9052565b600081548084526020808501808196508360051b81019150856000528260002060005b8581101562005fc057828403895281548085526000838152602080822090870192915b82601f8201101562005b5157815460ff620058b48682841662005839565b620058c78b8701828460081c1662005839565b620058db60408701828460101c1662005839565b620058ef60608701828460181c1662005839565b60806200590381880183858f1c1662005839565b60a062005918818901848660281c1662005839565b60c06200592d818a01858760301c1662005839565b60e062005942818b01868860381c1662005839565b620059576101008b01868860401c1662005839565b6200596c6101208b01868860481c1662005839565b620059816101408b01868860501c1662005839565b620059966101608b01868860581c1662005839565b620059ab6101808b01868860601c1662005839565b620059c06101a08b01868860681c1662005839565b620059d56101c08b01868860701c1662005839565b620059ea6101e08b01868860781c1662005839565b620059fe6102008b018688871c1662005839565b62005a136102208b01868860881c1662005839565b62005a286102408b01868860901c1662005839565b62005a3d6102608b01868860981c1662005839565b62005a516102808b018688861c1662005839565b62005a666102a08b01868860a81c1662005839565b62005a7b6102c08b01868860b01c1662005839565b62005a906102e08b01868860b81c1662005839565b62005aa46103008b018688851c1662005839565b62005ab96103208b01868860c81c1662005839565b62005ace6103408b01868860d01c1662005839565b62005ae36103608b01868860d81c1662005839565b62005af76103808b018688841c1662005839565b5050505062005b106103a08701828460e81c1662005839565b62005b256103c08701828460f01c1662005839565b5062005b396103e086018260f81c62005839565b50610400939093019260019190910190880162005896565b9054908281101562005b745762005b6c8460ff841662005839565b928801926001015b8281101562005b975762005b8f8460ff8460081c1662005839565b928801926001015b8281101562005bba5762005bb28460ff8460101c1662005839565b928801926001015b8281101562005bdd5762005bd58460ff8460181c1662005839565b928801926001015b8281101562005bff5762005bf78460ff848c1c1662005839565b928801926001015b8281101562005c225762005c1a8460ff8460281c1662005839565b928801926001015b8281101562005c455762005c3d8460ff8460301c1662005839565b928801926001015b8281101562005c685762005c608460ff8460381c1662005839565b928801926001015b8281101562005c8b5762005c838460ff8460401c1662005839565b928801926001015b8281101562005cae5762005ca68460ff8460481c1662005839565b928801926001015b8281101562005cd15762005cc98460ff8460501c1662005839565b928801926001015b8281101562005cf45762005cec8460ff8460581c1662005839565b928801926001015b8281101562005d175762005d0f8460ff8460601c1662005839565b928801926001015b8281101562005d3a5762005d328460ff8460681c1662005839565b928801926001015b8281101562005d5d5762005d558460ff8460701c1662005839565b928801926001015b8281101562005d805762005d788460ff8460781c1662005839565b928801926001015b8281101562005da35762005d9b8460ff8460801c1662005839565b928801926001015b8281101562005dc65762005dbe8460ff8460881c1662005839565b928801926001015b8281101562005de95762005de18460ff8460901c1662005839565b928801926001015b8281101562005e0c5762005e048460ff8460981c1662005839565b928801926001015b8281101562005e2f5762005e278460ff8460a01c1662005839565b928801926001015b8281101562005e525762005e4a8460ff8460a81c1662005839565b928801926001015b8281101562005e755762005e6d8460ff8460b01c1662005839565b928801926001015b8281101562005e985762005e908460ff8460b81c1662005839565b928801926001015b8281101562005ebb5762005eb38460ff8460c01c1662005839565b928801926001015b8281101562005ede5762005ed68460ff8460c81c1662005839565b928801926001015b8281101562005f015762005ef98460ff8460d01c1662005839565b928801926001015b8281101562005f245762005f1c8460ff8460d81c1662005839565b928801926001015b8281101562005f475762005f3f8460ff8460e01c1662005839565b928801926001015b8281101562005f6a5762005f628460ff8460e81c1662005839565b928801926001015b8281101562005f8d5762005f858460ff8460f01c1662005839565b928801926001015b8281101562005faa5762005fa5848360f81c62005839565b928801925b5050509885019893506001918201910162005873565b5091979650505050505050565b60e08152600062005fe260e083018962005424565b6001600160a01b0380891660208501526006881062006005576200600562005629565b87604085015283820360608501526200601f828862005424565b91508382036080850152600582527f7265664944000000000000000000000000000000000000000000000000000000602083015280861660a08501525060408382030160c084015260408101845480825260608301915060608160051b84010186600052602060002060005b83811015620061e557858303605f19018552815460ff1660078110620060b557620060b562005629565b808452506080602084015260808301600183015480825260a08501915060a08160051b86010160018501600052602060002060005b838110156200619757609f19888403018552600082546200610b81620054ce565b80865260018216801562006128576001811462006145576200617e565b60ff1983166020880152602082151560051b88010193506200617e565b85600052602060002060005b83811015620061755781546020828b01015260018201915060208101905062006151565b88016020019450505b50505060209590950194925060019182019101620060ea565b50508581036040870152620061b0816002870162005850565b92505050620061c3600384015460ff1690565b801515606086015250602095909501949250600491909101906001016200608b565b50909c9b505050505050505050505050565b80516001600160a01b038116811462002d0b57600080fd5b80516006811062002d0b57600080fd5b6000602082840312156200623257600080fd5b815167ffffffffffffffff808211156200624b57600080fd5b9083019060e082860312156200626057600080fd5b6200626a6200569a565b8251828111156200627a57600080fd5b6200628887828601620056c6565b8252506200629960208401620061f7565b6020820152620062ac604084016200620f565b6040820152606083015182811115620062c457600080fd5b620062d287828601620056c6565b606083015250608083015182811115620062eb57600080fd5b620062f987828601620056c6565b6080830152506200630d60a08401620061f7565b60a082015260c083015160c082015280935050505092915050565b600060208083850312156200633c57600080fd5b825167ffffffffffffffff808211156200635557600080fd5b818501915085601f8301126200636a57600080fd5b8151818111156200637f576200637f620054b8565b8060051b60405162006394868301826200566a565b91825283810185019185810189841115620063ae57600080fd5b86860192505b83831015620063ed57825185811115620063ce5760008081fd5b620063de8b89838a0101620056c6565b825250918601918601620063b4565b5098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60408152600062006425604083018562005424565b90508260208301529392505050565b6000602082840312156200644757600080fd5b5051919050565b6001600160e01b0319831681526000825162006472816004850160208701620053fe565b919091016004019392505050565b6000825162006494818460208701620053fe565b9190910192915050565b606081526000620064b3606083018662005424565b6001600160a01b039490941660208301525060400152919050565b604081526000620064f960408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262005737818562005424565b604081526000620064f960408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062005663608083018462005424565b604081526000620065ac60408301600a8152690808080808081319599d60b21b602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620065ac60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200661960408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200661960408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b5060405162003ca238038062003ca28339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600480546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b613b7a80620001286000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063a1bc17c5116100b2578063d9cf884c11610081578063ea8f547f11610066578063ea8f547f146102f6578063f272660b1461034d578063f2fde38b1461036057600080fd5b8063d9cf884c146102d0578063e1efb596146102e357600080fd5b8063a1bc17c514610277578063b48272cc1461028a578063bd5b93d21461029d578063c1733f68146102b057600080fd5b80634534ba17116101095780636a0876e0116100ee5780636a0876e014610249578063715018a61461025c5780638da5cb5b1461026657600080fd5b80634534ba17146102215780635137b8a71461023457600080fd5b806304c2320b1461013b578063056b01ce1461016a5780631255c1891461018d578063150b7a02146101b8575b600080fd5b61014e610149366004612d36565b610373565b6040516101619796959493929190612de5565b60405180910390f35b61017d610178366004612e51565b61056c565b6040519015158152602001610161565b6004546101a0906001600160a01b031681565b6040516001600160a01b039091168152602001610161565b6101f06101c6366004612ead565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610161565b61017d61022f366004612f48565b6106a4565b61023c6109cb565b6040516101619190612ff4565b61017d610257366004613016565b610aa4565b610264610b89565b005b6000546001600160a01b03166101a0565b61017d610285366004612d36565b610b9d565b61017d610298366004612e51565b610ecf565b61017d6102ab366004612f48565b61127d565b6102c36102be366004612d36565b611398565b60405161016191906130cf565b61017d6102de366004612e51565b61161c565b61017d6102f1366004612e51565b611a85565b61033f610304366004613186565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b6040516101619291906131e4565b61017d61035b3660046134ae565b611c82565b61026461036e36600461358d565b611fb3565b8051602081830181018051600182529282019190930120915280548190610399906135a8565b80601f01602080910402602001604051908101604052809291908181526020018280546103c5906135a8565b80156104125780601f106103e757610100808354040283529160200191610412565b820191906000526020600020905b8154815290600101906020018083116103f557829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff16935091610445906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610471906135a8565b80156104be5780601f10610493576101008083540402835291602001916104be565b820191906000526020600020905b8154815290600101906020018083116104a157829003601f168201915b5050505050908060030180546104d3906135a8565b80601f01602080910402602001604051908101604052809291908181526020018280546104ff906135a8565b801561054c5780601f106105215761010080835404028352916020019161054c565b820191906000526020600020905b81548152906001019060200180831161052f57829003601f168201915b50505050600483015460059093015491926001600160a01b031691905087565b600061057661200a565b60006001600160a01b031660018460405161059191906135e2565b908152604051908190036020019020600101546001600160a01b0316036105d6578260405163c0bab25f60e01b81526004016105cd91906135fe565b60405180910390fd5b6105e283600084612050565b61062e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c65640000000000000000000060448201526064016105cd565b8160018460405161063f91906135e2565b908152604051908190036020018120600501919091556106609084906135e2565b604051908190038120838252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a69060200160405180910390a25060015b92915050565b60006106ae61200a565b60006001856040516106c091906135e2565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160058111156106f4576106f4612dbb565b14806107115750600481600581111561070f5761070f612dbb565b145b15610877578260018660405161072791906135e2565b90815260200160405180910390206005015410156107875760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b656460448201526064016105cd565b6107948560028587612067565b6107e05760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c6564000000000000000060448201526064016105cd565b826001866040516107f191906135e2565b908152602001604051809103902060050160008282546108119190613627565b90915550506040516108249086906135e2565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a260019150506109c4565b600281600581111561088b5761088b612dbb565b14806108a8575060058160058111156108a6576108a6612dbb565b145b156109a957826001866040516108be91906135e2565b9081526020016040518091039020600501541461091d5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b656460448201526064016105cd565b61092a8560028587612067565b6109765760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c65640000000000000000000060448201526064016105cd565b600060018660405161098891906135e2565b908152604051908190036020018120600501919091556108249086906135e2565b8460405163c16fc3ad60e01b81526004016105cd91906135fe565b9392505050565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015610a9b578382906000526020600020018054610a0e906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3a906135a8565b8015610a875780601f10610a5c57610100808354040283529160200191610a87565b820191906000526020600020905b815481529060010190602001808311610a6a57829003601f168201915b5050505050815260200190600101906109ef565b50505050905090565b6000610aae61200a565b3063f272660b8888888888886000604051908082528060200260200182016040528015610b1857816020015b610b056040805160808101909152806000815260606020820181905260408201819052600091015290565b815260200190600190039081610ada5790505b506040518863ffffffff1660e01b8152600401610b3b979695949392919061363a565b6020604051808303816000875af1158015610b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7e91906137db565b979650505050505050565b610b9161200a565b610b9b6000612383565b565b6000610ba761200a565b60006001600160a01b0316600183604051610bc291906135e2565b908152604051908190036020019020600101546001600160a01b031603610bfe578160405163c0bab25f60e01b81526004016105cd91906135fe565b6000600183604051610c1091906135e2565b9081526040519081900360200190206001015460ff600160a01b9091041690506004816005811115610c4457610c44612dbb565b1480610c6157506001816005811115610c5f57610c5f612dbb565b145b15610cb0576000600184604051610c7891906135e2565b9081526020016040518091039020600501541115610cab5782604051635be9608560e11b81526004016105cd91906135fe565b610d45565b6005816005811115610cc457610cc4612dbb565b1480610ce157506002816005811115610cdf57610cdf612dbb565b145b15610d2a57600183604051610cf691906135e2565b908152602001604051809103902060050154600014610cab5782604051635be9608560e11b81526004016105cd91906135fe565b8260405163c16fc3ad60e01b81526004016105cd91906135fe565b610df7600184604051610d5891906135e2565b90815260200160405180910390206002018054610d74906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610da0906135a8565b8015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b50505050506123e0565b600183604051610e0791906135e2565b9081526040519081900360200190206000610e228282612a49565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055610e50600283016000612a49565b610e5e600383016000612a49565b5060048101805473ffffffffffffffffffffffffffffffffffffffff191690556000600590910155604051610e949084906135e2565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a260019150505b919050565b6000610ed961200a565b6000600184604051610eeb91906135e2565b90815260405190819003602001902060019081015460ff600160a01b909104169150816005811115610f1f57610f1f612dbb565b1480610f3c57506004816005811115610f3a57610f3a612dbb565b145b156110935782600185604051610f5291906135e2565b9081526020016040518091039020600501541015610fb25760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b6564000060448201526064016105cd565b610fbe84600185612050565b61100a5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c65640000000000000000000060448201526064016105cd565b8260018560405161101b91906135e2565b9081526020016040518091039020600501600082825461103b9190613627565b909155505060405161104e9085906135e2565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee99906020015b60405180910390a2600191505061069e565b60028160058111156110a7576110a7612dbb565b14806110c4575060058160058111156110c2576110c2612dbb565b145b1561125b576001846040516110d991906135e2565b90815260200160405180910390206005015460000361113a5760405162461bcd60e51b815260206004820152601660248201527f4275726e696e6720756e6d696e7465642061737365740000000000000000000060448201526064016105cd565b8260018560405161114b91906135e2565b908152602001604051809103902060050154146111d05760405162461bcd60e51b815260206004820152603060248201527f4275726e696e67204e4654206661696c65642064756520746f2077726f6e672060448201527f756e6971756544657363726970746f720000000000000000000000000000000060648201526084016105cd565b6111dc84600185612050565b6112285760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c65640000000000000000000060448201526064016105cd565b600060018560405161123a91906135e2565b9081526040519081900360200181206005019190915561104e9085906135e2565b8360405163c16fc3ad60e01b81526004016105cd91906135fe565b5092915050565b600061128761200a565b60006001600160a01b03166001856040516112a291906135e2565b908152604051908190036020019020600101546001600160a01b0316036112de578360405163c0bab25f60e01b81526004016105cd91906135fe565b6112eb8460068486612067565b6113375760405162461bcd60e51b815260206004820152601960248201527f617070726f76652061737365742063616c6c206661696c65640000000000000060448201526064016105cd565b8360405161134591906135e2565b604080519182900382206001600160a01b038616835260208301859052917fc709654ecf7a14919446b196f59286f52dcd8238dca7326767c24ab00999817c910160405180910390a25060019392505050565b6040805160e0810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c08101919091526001826040516113e091906135e2565b90815260200160405180910390206040518060e0016040529081600082018054611409906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611435906135a8565b80156114825780601f1061145757610100808354040283529160200191611482565b820191906000526020600020905b81548152906001019060200180831161146557829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff1660058111156114bf576114bf612dbb565b60058111156114d0576114d0612dbb565b81526020016002820180546114e4906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611510906135a8565b801561155d5780601f106115325761010080835404028352916020019161155d565b820191906000526020600020905b81548152906001019060200180831161154057829003601f168201915b50505050508152602001600382018054611576906135a8565b80601f01602080910402602001604051908101604052809291908181526020018280546115a2906135a8565b80156115ef5780601f106115c4576101008083540402835291602001916115ef565b820191906000526020600020905b8154815290600101906020018083116115d257829003601f168201915b505050918352505060048201546001600160a01b0316602082015260059091015460409091015292915050565b600061162661200a565b60006001600160a01b031660018460405161164191906135e2565b908152604051908190036020019020600101546001600160a01b03160361167d578260405163c0bab25f60e01b81526004016105cd91906135fe565b600060018460405161168f91906135e2565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160058111156116c3576116c3612dbb565b14806116e0575060048160058111156116de576116de612dbb565b145b1561183d57826001856040516116f691906135e2565b90815260200160405180910390206005015410156117445783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016105cd9291906137f8565b61175084600585612050565b6117c25760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016105cd565b826001856040516117d391906135e2565b908152602001604051809103902060050160008282546117f39190613627565b90915550506040516118069085906135e2565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001611081565b600281600581111561185157611851612dbb565b148061186e5750600581600581111561186c5761186c612dbb565b145b15611a515760018460405161188391906135e2565b90815260200160405180910390206005015460000361190a5760405162461bcd60e51b815260206004820152602c60248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206c6f636b6564000000000000000000000000000000000000000060648201526084016105cd565b8260018560405161191b91906135e2565b908152602001604051809103902060050154146119a05760405162461bcd60e51b815260206004820152603a60248201527f556e6c6f636b696e67204e46542063616e6e6f7420626520646f6e652064756560448201527f20746f2077726f6e6720756e6971756544657363726970746f7200000000000060648201526084016105cd565b6119ac84600585612050565b611a1e5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c656400000000000000000000000000000000000000000000000000000060648201526084016105cd565b6000600185604051611a3091906135e2565b908152604051908190036020018120600501919091556118069085906135e2565b836040517f58300fe70000000000000000000000000000000000000000000000000000000081526004016105cd91906135fe565b6000611a8f61200a565b60006001600160a01b0316600184604051611aaa91906135e2565b908152604051908190036020019020600101546001600160a01b031603611ae6578260405163c0bab25f60e01b81526004016105cd91906135fe565b6000611af484600485612050565b90508015611c4e576000600185604051611b0e91906135e2565b90815260405190819003602001902060019081015460ff600160a01b909104169150816005811115611b4257611b42612dbb565b1480611b5f57506004816005811115611b5d57611b5d612dbb565b145b15611ba05783600186604051611b7591906135e2565b90815260200160405180910390206005016000828254611b95919061381a565b90915550611bfb9050565b6002816005811115611bb457611bb4612dbb565b1480611bd157506005816005811115611bcf57611bcf612dbb565b145b15611bfb5783600186604051611be791906135e2565b908152604051908190036020019020600501555b84604051611c0991906135e2565b604051908190038120858252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc97979060200160405180910390a260019250505061069e565b836040517f8244096a0000000000000000000000000000000000000000000000000000000081526004016105cd91906135fe565b6000611c8c61200a565b60006001600160a01b0316600186604051611ca791906135e2565b908152604051908190036020019020600101546001600160a01b031614611cfc57846040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016105cd91906135fe565b611d06858361253e565b600285604051611d1691906135e2565b9081526040805160209281900383019020600360008181529190935220015460ff1615611dba57611d4885600361265e565b611dba5760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e0000000060648201526084016105cd565b6040518060e00160405280898152602001886001600160a01b03168152602001876005811115611dec57611dec612dbb565b8152602001868152602001858152602001846001600160a01b031681526020016000815250600186604051611e2191906135e2565b90815260405190819003602001902081518190611e3e908261387b565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b836005811115611ea757611ea7612dbb565b021790555060608201516002820190611ec0908261387b565b5060808201516003820190611ed5908261387b565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c090910151600590910155600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01611f51868261387b565b5084604051611f6091906135e2565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda89898987604051611f9d949392919061393b565b60405180910390a2506001979650505050505050565b611fbb61200a565b6001600160a01b038116611ffe576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016105cd565b61200781612383565b50565b6000546001600160a01b03163314610b9b576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016105cd565b600061205f8484846000612067565b949350505050565b600060028560405161207991906135e2565b9081526020016040518091039020600085600681111561209b5761209b612dbb565b60068111156120ac576120ac612dbb565b815260208101919091526040016000206003015460ff166120cf5750600061205f565b60005b6002866040516120e291906135e2565b9081526020016040518091039020600086600681111561210457612104612dbb565b600681111561211557612115612dbb565b815260208101919091526040016000206001015481101561237757600060028760405161214291906135e2565b9081526020016040518091039020600087600681111561216457612164612dbb565b600681111561217557612175612dbb565b815260200190815260200160002060010182815481106121975761219761397f565b906000526020600020016040516020016121b19190613995565b60405160208183030381529060405280519060200120905060006122cd826122c860028b6040516121e291906135e2565b908152602001604051809103902060008b600681111561220457612204612dbb565b600681111561221557612215612dbb565b815260200190815260200160002060020186815481106122375761223761397f565b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156122bb57602002820191906000526020600020906000905b82829054906101000a900460ff16600781111561229957612299612dbb565b81526020600192830181810494850194909303909202910180841161227a5790505b50505050508b898b61266d565b61298a565b905060006001896040516122e191906135e2565b908152604051908190036020018120600101546001600160a01b0316906123099084906135e2565b6000604051808303816000865af19150503d8060008114612346576040519150601f19603f3d011682016040523d82523d6000602084013e61234b565b606091505b505090508061236157600094505050505061205f565b505050808061236f90613a0b565b9150506120d2565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60035481101561253a5761249c600382815481106124035761240361397f565b906000526020600020018054612418906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054612444906135a8565b80156124915780601f1061246657610100808354040283529160200191612491565b820191906000526020600020905b81548152906001019060200180831161247457829003601f168201915b505050505083612a24565b1561252857600380546124b190600190613627565b815481106124c1576124c161397f565b90600052602060002001600382815481106124de576124de61397f565b9060005260206000200190816124f49190613a24565b50600380548061250657612506613aff565b6001900381819060005260206000200160006125229190612a49565b90555050565b8061253281613a0b565b9150506123e3565b5050565b60005b81518110156126595781818151811061255c5761255c61397f565b602002602001015160028460405161257491906135e2565b908152602001604051809103902060008484815181106125965761259661397f565b60200260200101516000015160068111156125b3576125b3612dbb565b60068111156125c4576125c4612dbb565b8152602081019190915260400160002081518154829060ff191660018360068111156125f2576125f2612dbb565b0217905550602082810151805161260f9260018501920190612a83565b506040820151805161262b916002840191602090910190612ad9565b50606091909101516003909101805460ff19169115159190911790558061265181613a0b565b915050612541565b505050565b60006109c48383600080612067565b60606000855167ffffffffffffffff81111561268b5761268b612c56565b6040519080825280602002602001820160405280156126be57816020015b60608152602001906001900390816126a95790505b50905060005b86518110156129805760058782815181106126e1576126e161397f565b602002602001015160078111156126fa576126fa612dbb565b0361273c5760408051306020820152015b60405160208183030381529060405282828151811061272c5761272c61397f565b602002602001018190525061296e565b60028782815181106127505761275061397f565b6020026020010151600781111561276957612769612dbb565b0361277f578560405160200161270b91906135fe565b60048782815181106127935761279361397f565b602002602001015160078111156127ac576127ac612dbb565b036127c25760408051602081018690520161270b565b60038782815181106127d6576127d661397f565b602002602001015160078111156127ef576127ef612dbb565b0361282d5760018660405161280491906135e2565b908152604080519182900360209081018320600401546001600160a01b0316908301520161270b565b60008782815181106128415761284161397f565b6020026020010151600781111561285a5761285a612dbb565b036128985760018660405161286f91906135e2565b908152604080519182900360209081018320600101546001600160a01b0316908301520161270b565b60068782815181106128ac576128ac61397f565b602002602001015160078111156128c5576128c5612dbb565b036128e357604080516001600160a01b03871660208201520161270b565b60078782815181106128f7576128f761397f565b6020026020010151600781111561291057612910612dbb565b036129265760408051602081018690520161270b565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f727465640000000000000000000060448201526064016105cd565b8061297881613a0b565b9150506126c4565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561127657818382815181106129e7576129e761397f565b6020026020010151604051602001612a00929190613b15565b60405160208183030381529060405291508080612a1c90613a0b565b9150506129cb565b6000815183511480156109c45750508051602091820120825192909101919091201490565b508054612a55906135a8565b6000825580601f10612a65575050565b601f0160209004906000526020600020908101906120079190612b32565b828054828255906000526020600020908101928215612ac9579160200282015b82811115612ac95782518290612ab9908261387b565b5091602001919060010190612aa3565b50612ad5929150612b47565b5090565b828054828255906000526020600020908101928215612b26579160200282015b82811115612b265782518051612b16918491602090910190612b64565b5091602001919060010190612af9565b50612ad5929150612c14565b5b80821115612ad55760008155600101612b33565b80821115612ad5576000612b5b8282612a49565b50600101612b47565b82805482825590600052602060002090601f01602090048101928215612c085791602002820160005b83821115612bd957835183826101000a81548160ff02191690836007811115612bb857612bb8612dbb565b02179055509260200192600101602081600001049283019260010302612b8d565b8015612c065782816101000a81549060ff0219169055600101602081600001049283019260010302612bd9565b505b50612ad5929150612b32565b80821115612ad5576000612c288282612c31565b50600101612c14565b50805460008255601f0160209004906000526020600020908101906120079190612b32565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715612c8f57612c8f612c56565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612cbe57612cbe612c56565b604052919050565b600082601f830112612cd757600080fd5b813567ffffffffffffffff811115612cf157612cf1612c56565b612d04601f8201601f1916602001612c95565b818152846020838601011115612d1957600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612d4857600080fd5b813567ffffffffffffffff811115612d5f57600080fd5b61205f84828501612cc6565b60005b83811015612d86578181015183820152602001612d6e565b50506000910152565b60008151808452612da7816020860160208601612d6b565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b60068110612de157612de1612dbb565b9052565b60e081526000612df860e083018a612d8f565b6001600160a01b03808a166020850152612e15604085018a612dd1565b8382036060850152612e278289612d8f565b91508382036080850152612e3b8288612d8f565b951660a0840152505060c0015295945050505050565b60008060408385031215612e6457600080fd5b823567ffffffffffffffff811115612e7b57600080fd5b612e8785828601612cc6565b95602094909401359450505050565b80356001600160a01b0381168114610eca57600080fd5b600080600080600060808688031215612ec557600080fd5b612ece86612e96565b9450612edc60208701612e96565b935060408601359250606086013567ffffffffffffffff80821115612f0057600080fd5b818801915088601f830112612f1457600080fd5b813581811115612f2357600080fd5b896020828501011115612f3557600080fd5b9699959850939650602001949392505050565b600080600060608486031215612f5d57600080fd5b833567ffffffffffffffff811115612f7457600080fd5b612f8086828701612cc6565b935050612f8f60208501612e96565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015612fe7578284038952612fd5848351612d8f565b98850198935090840190600101612fbd565b5091979650505050505050565b6020815260006109c46020830184612f9f565b803560068110610eca57600080fd5b60008060008060008060c0878903121561302f57600080fd5b863567ffffffffffffffff8082111561304757600080fd5b6130538a838b01612cc6565b975061306160208a01612e96565b965061306f60408a01613007565b9550606089013591508082111561308557600080fd5b6130918a838b01612cc6565b945060808901359150808211156130a757600080fd5b506130b489828a01612cc6565b9250506130c360a08801612e96565b90509295509295509295565b602081526000825160e060208401526130ec610100840182612d8f565b905060208401516001600160a01b038082166040860152604086015191506131176060860183612dd1565b60608601519150601f19808685030160808701526131358484612d8f565b935060808701519250808685030160a0870152506131538383612d8f565b92508060a08701511660c0860152505060c084015160e08401528091505092915050565b803560078110610eca57600080fd5b6000806040838503121561319957600080fd5b823567ffffffffffffffff8111156131b057600080fd5b6131bc85828601612cc6565b9250506131cb60208401613177565b90509250929050565b60078110612de157612de1612dbb565b604081016131f282856131d4565b82151560208301529392505050565b600067ffffffffffffffff82111561321b5761321b612c56565b5060051b60200190565b600082601f83011261323657600080fd5b8135602061324b61324683613201565b612c95565b828152600592831b850182019282820191908785111561326a57600080fd5b8387015b8581101561330f57803567ffffffffffffffff81111561328e5760008081fd5b8801603f81018a136132a05760008081fd5b8581013560406132b261324683613201565b82815291851b8301810191888101908d8411156132cf5760008081fd5b938201935b838510156132fe5784359250600883106132ee5760008081fd5b82825293890193908901906132d4565b88525050509385019350840161326e565b5090979650505050505050565b801515811461200757600080fd5b8035610eca8161331c565b600082601f83011261334657600080fd5b6133536132468335613201565b82358082526020808301929160051b8501018581111561337257600080fd5b602085015b818110156134a35767ffffffffffffffff808235111561339657600080fd5b813587016080818a03601f190112156133ae57600080fd5b6133b6612c6c565b6133c260208301613177565b81526040820135838111156133d657600080fd5b8201603f81018b136133e757600080fd5b60208101356133f861324682613201565b81815260059190911b82016040019060208101908d83111561341957600080fd5b604084015b8381101561345257878135111561343457600080fd5b6134448f60408335880101612cc6565b83526020928301920161341e565b50602085015250505060608201358381111561346d57600080fd5b61347c8b602083860101613225565b60408301525061348e6080830161332a565b60608201528652505060209384019301613377565b509095945050505050565b600080600080600080600060e0888a0312156134c957600080fd5b873567ffffffffffffffff808211156134e157600080fd5b6134ed8b838c01612cc6565b98506134fb60208b01612e96565b975061350960408b01613007565b965060608a013591508082111561351f57600080fd5b61352b8b838c01612cc6565b955060808a013591508082111561354157600080fd5b61354d8b838c01612cc6565b945061355b60a08b01612e96565b935060c08a013591508082111561357157600080fd5b5061357e8a828b01613335565b91505092959891949750929550565b60006020828403121561359f57600080fd5b6109c482612e96565b600181811c908216806135bc57607f821691505b6020821081036135dc57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516135f4818460208701612d6b565b9190910192915050565b6020815260006109c46020830184612d8f565b634e487b7160e01b600052601160045260246000fd5b8181038181111561069e5761069e613611565b60e08152600061364d60e083018a612d8f565b6001600160a01b03891660208401526136696040840189612dd1565b828103606084015261367b8188612d8f565b9050828103608084015261368f8187612d8f565b90506001600160a01b03851660a084015282810360c084015280845180835260208301915060208160051b8401016020870160005b838110156137c857601f198087850301865282516136e38582516131d4565b6020810151608060208701526136fc6080870182612f9f565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561379157858203880184528451805180845260209182019184019060005b818110156137795783516008811061376557613765612dbb565b83526020938401939092019160010161374b565b50506020968701969590950194925050600101613729565b50606086015196506137a760608b018815159052565b809950505050505050506020820191506020850194506001810190506136c4565b50909d9c50505050505050505050505050565b6000602082840312156137ed57600080fd5b81516109c48161331c565b60408152600061380b6040830185612d8f565b90508260208301529392505050565b8082018082111561069e5761069e613611565b601f82111561265957600081815260208120601f850160051c810160208610156138545750805b601f850160051c820191505b8181101561387357828155600101613860565b505050505050565b815167ffffffffffffffff81111561389557613895612c56565b6138a9816138a384546135a8565b8461382d565b602080601f8311600181146138de57600084156138c65750858301515b600019600386901b1c1916600185901b178555613873565b600085815260208120601f198616915b8281101561390d578886015182559484019460019091019084016138ee565b508582101561392b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60808152600061394e6080830187612d8f565b90506001600160a01b03808616602084015261396d6040840186612dd1565b80841660608401525095945050505050565b634e487b7160e01b600052603260045260246000fd5b60008083546139a3816135a8565b600182811680156139bb57600181146139d0576139ff565b60ff19841687528215158302870194506139ff565b8760005260208060002060005b858110156139f65781548a8201529084019082016139dd565b50505082870194505b50929695505050505050565b600060018201613a1d57613a1d613611565b5060010190565b818103613a2f575050565b613a3982546135a8565b67ffffffffffffffff811115613a5157613a51612c56565b613a5f816138a384546135a8565b6000601f821160018114613a935760008315613a7b5750848201545b600019600385901b1c1916600184901b178455613af8565b600085815260209020601f19841690600086815260209020845b83811015613acd5782860154825560019586019590910190602001613aad565b5085831015613aeb5781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b60008351613b27818460208801612d6b565b835190830190613b3b818360208801612d6b565b0194935050505056fea2646970667358221220eabb8e05617bddb4fb1905fe5c9ae7b8114b6c71752e7e9c281ba6958881528064736f6c6343000814003360806040523480156200001157600080fd5b5060405162001d2b38038062001d2b8339810160408190526200003491620001b1565b6040518060400160405280600b81526020016a29a0aa2827232a37b5b2b760a91b8152506040518060400160405280600781526020016614d0551413919560ca1b815250816001908162000089919062000288565b50600262000098828262000288565b505050620000cd7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e826200010260201b60201c565b50620000fa7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f8262000102565b505062000354565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a7576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200015e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001ab565b5060005b92915050565b600060208284031215620001c457600080fd5b81516001600160a01b0381168114620001dc57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020e57607f821691505b6020821081036200022f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028357600081815260208120601f850160051c810160208610156200025e5750805b601f850160051c820191505b818110156200027f578281556001016200026a565b5050505b505050565b81516001600160401b03811115620002a457620002a4620001e3565b620002bc81620002b58454620001f9565b8462000235565b602080601f831160018114620002f45760008415620002db5750858301515b600019600386901b1c1916600185901b1785556200027f565b600085815260208120601f198616915b82811015620003255788860151825594840194600190910190840162000304565b5085821015620003445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6119c780620003646000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b5bfddea116100a2578063d547741f11610071578063d547741f146104a5578063e58378bb146104b8578063e985e9c5146104df578063ea1340711461051b57600080fd5b8063b5bfddea14610445578063b88d4fde1461046c578063be7604881461047f578063c87b56dd1461049257600080fd5b806395d89b41116100de57806395d89b411461040f578063a217fddf14610417578063a22cb4651461041f578063a5e99b8e1461043257600080fd5b806370a08231146103b25780637750c9f01461038c5780638d944fd9146103c557806391d14854146103d857600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e1461036657806342966c681461037957806359508f8f1461038c5780636352211e1461039f57600080fd5b80632f2ff15d1461031a57806336568abe1461032d5780633ae9449d1461034057806340c10f191461035357600080fd5b8063150b7a02116101c3578063150b7a021461027357806323b872dd146102c3578063248a9ca3146102d65780632a16cca41461030757600080fd5b806301ffc9a7146101f557806306fdde031461021e578063081812fc14610233578063095ea7b31461025e575b600080fd5b610209610203366004611580565b50600090565b60405190151581526020015b60405180910390f35b61022661052e565b60405161021591906115ed565b610246610241366004611600565b6105c0565b6040516001600160a01b039091168152602001610215565b61027161026c366004611635565b6105eb565b005b61029261028136600461165f565b630a85bd0160e11b95945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b6102716102d13660046116fa565b6105fa565b6102f96102e4366004611600565b60009081526020819052604090206001015490565b604051908152602001610215565b610209610315366004611635565b6106a3565b610271610328366004611736565b61071e565b61027161033b366004611736565b610743565b6102f961034e366004611762565b610794565b610209610361366004611635565b6107a7565b6102716103743660046116fa565b6107e7565b610209610387366004611600565b610802565b61020961039a3660046116fa565b610917565b6102466103ad366004611600565b610924565b6102f96103c0366004611762565b61092f565b6102096103d3366004611635565b610990565b6102096103e6366004611736565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102266109ea565b6102f9600081565b61027161042d36600461177d565b6109f9565b610209610440366004611762565b610a04565b6102f97f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61027161047a3660046117cf565b610a5a565b61020961048d366004611635565b610a71565b6102266104a0366004611600565b610a8f565b6102716104b3366004611736565b610b03565b6102f97fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b6102096104ed3660046118ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b610209610529366004611762565b610b28565b60606001805461053d906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906118d5565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b60006105cb82610bad565b506000828152600560205260409020546001600160a01b03165b92915050565b6105f6828233610be6565b5050565b6001600160a01b03821661062957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610636838333610bf3565b9050836001600160a01b0316816001600160a01b03161461069d576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610620565b50505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6106cf81610cf9565b60006106da846105c0565b9050806001600160a01b0316856001600160a01b03161480610715575061070084610924565b6001600160a01b0316856001600160a01b0316145b95945050505050565b60008281526020819052604090206001015461073981610cf9565b61069d8383610d06565b6001600160a01b0381163314610785576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078f8282610db0565b505050565b6000806107a08361092f565b9392505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6107d381610cf9565b6107dd8484610e33565b5060019392505050565b61078f83838360405180602001604052806000815250610a5a565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61082e81610cf9565b33600061083a856105c0565b9050806001600160a01b0316826001600160a01b03161480610875575061086085610924565b6001600160a01b0316826001600160a01b0316145b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616c6c6572206973206e6f7420617070726f76656420746f206f706572617460448201527f65206f6e207468697320746f6b656e00000000000000000000000000000000006064820152608401610620565b61090a85610e4d565b6001935050505b50919050565b60006107dd8484846107e7565b60006105e582610bad565b60006001600160a01b038216610974576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b506001600160a01b031660009081526004602052604090205490565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6109bc81610cf9565b6000838152600360205260409020546001600160a01b03166109df818686610e88565b506001949350505050565b60606002805461053d906118d5565b6105f6338383610f05565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e610a3081610cf9565b6107dd7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610d06565b610a658484846105fa565b61069d84848484610fbd565b6000610a86610a7f83610924565b84846107e7565b50600192915050565b6060610a9a82610bad565b506000610ab260408051602081019091526000815290565b90506000815111610ad257604051806020016040528060008152506107a0565b80610adc846110fe565b604051602001610aed929190611909565b6040516020818303038152906040529392505050565b600082815260208190526040902060010154610b1e81610cf9565b61069d8383610db0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff1615610b7057506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6000818152600360205260408120546001600160a01b0316806105e557604051637e27328960e01b815260048101849052602401610620565b61078f838383600161119e565b6000828152600360205260408120546001600160a01b0390811690831615610c2057610c20818486610e88565b6001600160a01b03811615610c5e57610c3d60008560008061119e565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610c8d576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610d0381336112e9565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610da8576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610d603390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e5565b5060006105e5565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610da8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e5565b6105f6828260405180602001604052806000815250611355565b6000610e5c6000836000610bf3565b90506001600160a01b0381166105f657604051637e27328960e01b815260048101839052602401610620565b610e9383838361136c565b61078f576001600160a01b038316610ec157604051637e27328960e01b815260048101829052602401610620565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610620565b6001600160a01b038216610f50576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610fff903390889087908790600401611938565b6020604051808303816000875af192505050801561103a575060408051601f3d908101601f1916820190925261103791810190611974565b60015b6110a3573d808015611068576040519150601f19603f3d011682016040523d82523d6000602084013e61106d565b606091505b50805160000361109b57604051633250574960e11b81526001600160a01b0385166004820152602401610620565b805181602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116630a85bd0160e11b146110f757604051633250574960e11b81526001600160a01b0385166004820152602401610620565b5050505050565b6060600061110b836113f2565b600101905060008167ffffffffffffffff81111561112b5761112b6117b9565b6040519080825280601f01601f191660200182016040528015611155576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461115f57509392505050565b80806111b257506001600160a01b03821615155b156112ac5760006111c284610bad565b90506001600160a01b038316158015906111ee5750826001600160a01b0316816001600160a01b031614155b801561122057506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15611262576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610620565b81156112aa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166105f6576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610620565b61135f83836114d4565b61078f6000848484610fbd565b60006001600160a01b038316158015906113ea5750826001600160a01b0316846001600160a01b031614806113c657506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806113ea57506000828152600560205260409020546001600160a01b038481169116145b949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061143b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611467576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061148557662386f26fc10000830492506010015b6305f5e100831061149d576305f5e100830492506008015b61271083106114b157612710830492506004015b606483106114c3576064830492506002015b600a83106105e55760010192915050565b6001600160a01b0382166114fe57604051633250574960e11b815260006004820152602401610620565b600061150c83836000610bf3565b90506001600160a01b0381161561078f576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0357600080fd5b60006020828403121561159257600080fd5b81356107a081611552565b60005b838110156115b85781810151838201526020016115a0565b50506000910152565b600081518084526115d981602086016020860161159d565b601f01601f19169290920160200192915050565b6020815260006107a060208301846115c1565b60006020828403121561161257600080fd5b5035919050565b80356001600160a01b038116811461163057600080fd5b919050565b6000806040838503121561164857600080fd5b61165183611619565b946020939093013593505050565b60008060008060006080868803121561167757600080fd5b61168086611619565b945061168e60208701611619565b935060408601359250606086013567ffffffffffffffff808211156116b257600080fd5b818801915088601f8301126116c657600080fd5b8135818111156116d557600080fd5b8960208285010111156116e757600080fd5b9699959850939650602001949392505050565b60008060006060848603121561170f57600080fd5b61171884611619565b925061172660208501611619565b9150604084013590509250925092565b6000806040838503121561174957600080fd5b8235915061175960208401611619565b90509250929050565b60006020828403121561177457600080fd5b6107a082611619565b6000806040838503121561179057600080fd5b61179983611619565b9150602083013580151581146117ae57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156117e557600080fd5b6117ee85611619565b93506117fc60208601611619565b925060408501359150606085013567ffffffffffffffff8082111561182057600080fd5b818701915087601f83011261183457600080fd5b813581811115611846576118466117b9565b604051601f8201601f19908116603f0116810190838211818310171561186e5761186e6117b9565b816040528281528a602084870101111561188757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118be57600080fd5b6118c783611619565b915061175960208401611619565b600181811c908216806118e957607f821691505b60208210810361091157634e487b7160e01b600052602260045260246000fd5b6000835161191b81846020880161159d565b83519083019061192f81836020880161159d565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261196a60808301846115c1565b9695505050505050565b60006020828403121561198657600080fd5b81516107a08161155256fea2646970667358221220abee452498648d1ffac387224ce17506caa4559a95b6e7024afbc933aca643bc64736f6c63430008140033546f6b656e2073686f756c64206e6f74206578697374206265666f7265207772617070696e67a264697066735822122034e1a654928be764b09df7f4acf7d257865440ad95549263cb70f0c2ac627a7064736f6c63430008140033","sourceMap":"1572:26:14:-:0;;;1594:4;-1:-1:-1;;1572:26:14;;;;;;;;3161:44:17;;;;;;;;;;;491:16:35;425:7619;491:16;425:7619;491:16;;;-1:-1:-1;;;491:16:35;;;;:8;:16::i;:::-;469:38;;;-1:-1:-1;;;;;;469:38:35;-1:-1:-1;;;;;469:38:35;;;;;;;;;;549:30;;;;;;;;;;;;-1:-1:-1;;;549:30:35;;;;;;:8;:30::i;:::-;513:66;;;-1:-1:-1;;;;;;513:66:35;-1:-1:-1;;;;;513:66:35;;;;;;;;;;425:7619;;;;;;;;;;;;16374:125:18;16438:12;16472:20;16487:4;16472:14;:20::i;:::-;-1:-1:-1;16462:30:18;16374:125;-1:-1:-1;;16374:125:18:o;16093:242::-;16163:12;16177:18;16255:4;16238:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16238:22:18;;;;;;;16228:33;;16238:22;16228:33;;;;-1:-1:-1;;;;;;16279:19:18;;;;;709:25:36;;;16228:33:18;-1:-1:-1;16279:7:18;;;;682:18:36;;16279:19:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16308:20;;-1:-1:-1;;;16308:20:18;;16272:26;;-1:-1:-1;16308:8:18;;;;:20;;16272:26;;16323:4;;16308:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16093:242;;;:::o;14:250:36:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:36;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:36:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:36;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:36:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:36;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:36:o;:::-;425:7619:35;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001c55760003560e01c8063b5508aa91162000101578063cb1f5f2b11620000a3578063e96d88e0116200007a578063e96d88e01462000308578063ec31250f1462000312578063f4eaeb4e1462000326578063fa7626d4146200033057600080fd5b8063cb1f5f2b14620002ea578063e13aba4814620002f4578063e20c9f7114620002fe57600080fd5b8063c0ef026411620000d8578063c0ef026414620002cc578063c2745ada14620002d6578063c43484d614620002e057600080fd5b8063b5508aa9146200029d578063b74cda5614620002a7578063ba414fa614620002b157600080fd5b80635266885a116200016b57806385226c81116200014257806385226c811462000270578063916a17c614620002895780639642ddaf146200029357600080fd5b80635266885a146200024357806366d9a9a0146200024d5780638312289b146200026657600080fd5b80633e5e3c2311620001a05780633e5e3c2314620002025780633f7286f4146200020c5780634f8632ba146200021657600080fd5b80630a9254e414620001ca5780631ed7831c14620001d6578063218e00ff14620001f8575b600080fd5b620001d46200033e565b005b620001e0620019f1565b604051620001ef9190620052f8565b60405180910390f35b620001d462001a55565b620001e062001bbd565b620001e062001c1f565b601b546200022a906001600160a01b031681565b6040516001600160a01b039091168152602001620001ef565b620001d462001c81565b6200025762001e34565b604051620001ef919062005347565b620001d462001f3c565b6200027a6200235f565b604051620001ef919062005452565b6200025762002439565b620001d462002538565b6200027a6200284e565b620001d462002928565b620002bb62002bdb565b6040519015158152602001620001ef565b620001d462002d13565b620001d462002e29565b620001d4620033f9565b620001d462003799565b620001d46200383a565b620001e062003e44565b620001d462003ea6565b601c546200022a906001600160a01b031681565b620001d462004409565b600054620002bb9060ff1681565b306040516200034d9062004f35565b6001600160a01b039091168152602001604051809103906000f0801580156200037a573d6000803e3d6000fd5b50601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055601c54604051911690620003b89062004f43565b6001600160a01b039091168152602001604051809103906000f080158015620003e5573d6000803e3d6000fd5b50601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905560208054600181018255600082905260408051808201909152601d81527f6c6f636b28616464726573732c616464726573732c75696e7432353629000000928101929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb01906200048790826200555c565b50604080516060810190915260219080600381526020016005815260200160079052815460018101835560009283526020909220620004ca920190600362004f51565b50604080516080810182526004815260208054835181830281018301909452808452600093828401929091858383015b82821015620005b05783829060005260206000200180546200051c90620054ce565b80601f01602080910402602001604051908101604052809291908181526020018280546200054a90620054ce565b80156200059b5780601f106200056f576101008083540402835291602001916200059b565b820191906000526020600020905b8154815290600101906020018083116200057d57829003601f168201915b505050505081526020019060010190620004fa565b5050505081526020016021805480602002602001604051908101604052809291908181526020016000905b828210156200067e576000848152602090819020830180546040805182850281018501909152818152928301828280156200066957602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000646576200064662005629565b815260206001928301818104948501949093039092029101808411620006245790505b505050505081526020019060010190620005db565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620006ec57620006ec62005629565b021790555060208281015180516200070b92600185019201906200500f565b50604082015180516200072991600284019160209091019062005068565b50606091909101516003909101805460ff19169115159190911790556022805460018101825560009190915260408051808201909152601f81527f756e6c6f636b28616464726573732c616464726573732c75696e74323536290060208201527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e51090910190620007ba90826200555c565b50604080516060810190915260239080600581526020016003815260200160079052815460018101835560009283526020909220620007fd920190600362004f51565b50604080516080810190915260009080600581526020016022805480602002602001604051908101604052809291908181526020016000905b82821015620008ec5783829060005260206000200180546200085890620054ce565b80601f01602080910402602001604051908101604052809291908181526020018280546200088690620054ce565b8015620008d75780601f10620008ab57610100808354040283529160200191620008d7565b820191906000526020600020905b815481529060010190602001808311620008b957829003601f168201915b50505050508152602001906001019062000836565b5050505081526020016023805480602002602001604051908101604052809291908181526020016000905b82821015620009ba57600084815260209081902083018054604080518285028101850190915281815292830182828015620009a557602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000982576200098262005629565b815260206001928301818104948501949093039092029101808411620009605790505b50505050508152602001906001019062000917565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562000a285762000a2862005629565b0217905550602082810151805162000a4792600185019201906200500f565b506040820151805162000a6591600284019160209091019062005068565b50606091909101516003909101805460ff19169115159190911790556024805460018101825560009190915260408051808201909152601581527f6d696e7428616464726573732c75696e7432353629000000000000000000000060208201527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec49091019062000af690826200555c565b506040805180820190915260058152600760208201526025805460018101825560009190915262000b4e917f401968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c909101906002620050c8565b506040805160808101909152600090808281526020016024805480602002602001604051908101604052809291908181526020016000905b8282101562000c3c57838290600052602060002001805462000ba890620054ce565b80601f016020809104026020016040519081016040528092919081815260200182805462000bd690620054ce565b801562000c275780601f1062000bfb5761010080835404028352916020019162000c27565b820191906000526020600020905b81548152906001019060200180831162000c0957829003601f168201915b50505050508152602001906001019062000b86565b5050505081526020016025805480602002602001604051908101604052809291908181526020016000905b8282101562000d0a5760008481526020908190208301805460408051828502810185019091528181529283018282801562000cf557602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000cd25762000cd262005629565b81526020600192830181810494850194909303909202910180841162000cb05790505b50505050508152602001906001019062000c67565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562000d785762000d7862005629565b0217905550602082810151805162000d9792600185019201906200500f565b506040820151805162000db591600284019160209091019062005068565b50606091909101516003909101805460ff19169115159190911790556026805460018101825560009190915260408051808201909152600d81527f6275726e2875696e74323536290000000000000000000000000000000000000060208201527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a35949091019062000e4690826200555c565b50604080516020810190915260078152602780546001808201835560009290925262000e97927f98a476f1687bc3d60a2da2adbcba2c46958e61fa2fb4042cd7bc5816a710195b9091019162005143565b50604080516080810190915260009080600181526020016026805480602002602001604051908101604052809291908181526020016000905b8282101562000f8657838290600052602060002001805462000ef290620054ce565b80601f016020809104026020016040519081016040528092919081815260200182805462000f2090620054ce565b801562000f715780601f1062000f455761010080835404028352916020019162000f71565b820191906000526020600020905b81548152906001019060200180831162000f5357829003601f168201915b50505050508152602001906001019062000ed0565b5050505081526020016027805480602002602001604051908101604052809291908181526020016000905b8282101562001054576000848152602090819020830180546040805182850281018501909152818152928301828280156200103f57602002820191906000526020600020906000905b82829054906101000a900460ff1660078111156200101c576200101c62005629565b81526020600192830181810494850194909303909202910180841162000ffa5790505b50505050508152602001906001019062000fb1565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620010c257620010c262005629565b02179055506020828101518051620010e192600185019201906200500f565b5060408201518051620010ff91600284019160209091019062005068565b50606091909101516003909101805460ff19169115159190911790556028805460018101825560009190915260408051808201909152601781527f61737369676e28616464726573732c75696e743235362900000000000000000060208201527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab5909101906200119090826200555c565b5060408051808201909152600681526007602082015260298054600181018255600091909152620011e8917fcb7c14ce178f56e2e8d86ab33ebc0ae081ba8556a00cd122038841867181caac909101906002620050c8565b50604080516080810190915260009080600281526020016028805480602002602001604051908101604052809291908181526020016000905b82821015620012d75783829060005260206000200180546200124390620054ce565b80601f01602080910402602001604051908101604052809291908181526020018280546200127190620054ce565b8015620012c25780601f106200129657610100808354040283529160200191620012c2565b820191906000526020600020905b815481529060010190602001808311620012a457829003601f168201915b50505050508152602001906001019062001221565b5050505081526020016029805480602002602001604051908101604052809291908181526020016000905b82821015620013a5576000848152602090819020830180546040805182850281018501909152818152928301828280156200139057602002820191906000526020600020906000905b82829054906101000a900460ff1660078111156200136d576200136d62005629565b8152602060019283018181049485019490930390920291018084116200134b5790505b50505050508152602001906001019062001302565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562001413576200141362005629565b021790555060208281015180516200143292600185019201906200500f565b50604082015180516200145091600284019160209091019062005068565b50606091909101516003909101805460ff1916911515919091179055602c805460018101825560009190915260408051808201909152601881527f617070726f766528616464726573732c75696e7432353629000000000000000060208201527f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a8609190910190620014e190826200555c565b50604080518082019091526003815260076020820152602d805460018101825560009190915262001539917f4a2cc91ee622da3bc833a54c37ffcb6f3ec23b7793efc5eaf5e71b7b406c5c06909101906002620050c8565b5060408051608081019091526000908060068152602001602c805480602002602001604051908101604052809291908181526020016000905b82821015620016285783829060005260206000200180546200159490620054ce565b80601f0160208091040260200160405190810160405280929190818152602001828054620015c290620054ce565b8015620016135780601f10620015e75761010080835404028352916020019162001613565b820191906000526020600020905b815481529060010190602001808311620015f557829003601f168201915b50505050508152602001906001019062001572565b505050508152602001602d805480602002602001604051908101604052809291908181526020016000905b82821015620016f657600084815260209081902083018054604080518285028101850190915281815292830182828015620016e157602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620016be57620016be62005629565b8152602060019283018181049485019490930390920291018084116200169c5790505b50505050508152602001906001019062001653565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562001764576200176462005629565b021790555060208281015180516200178392600185019201906200500f565b5060408201518051620017a191600284019160209091019062005068565b50606091909101516003909101805460ff1916911515919091179055601c546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b1580156200183057600080fd5b505af115801562001845573d6000803e3d6000fd5b5050601f54601e546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af1158015620018b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018d791906200563f565b50601f54601e546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200197192919091169063ea13407190602401602060405180830381865afa15801562001945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200196b91906200563f565b62004819565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620019d057600080fd5b505af1158015620019e5573d6000803e3d6000fd5b50505050505050505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801562001a4b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001a2c575b5050505050905090565b601f54604080516306fdde0360e01b8152905162001b08926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001aa2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001acc91908101906200573f565b6040518060400160405280600b81526020017f534154504e46546f6b656e00000000000000000000000000000000000000000081525062004891565b601f54604080516395d89b4160e01b8152905162001bbb926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001b55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b7f91908101906200573f565b6040518060400160405280600781526020017f534154504e46540000000000000000000000000000000000000000000000000081525062004891565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801562001a4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001a2c575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562001a4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001a2c575050505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562001cd6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001d0091908101906200573f565b6040518263ffffffff1660e01b815260040162001d1e919062005778565b6020604051808303816000875af192505050801562001d5c575060408051601f3d908101601f1916820190925262001d59918101906200563f565b60015b62001dc75762001d6b6200578d565b806308c379a00362001d92575062001d82620057a9565b8062001d8f575062001d94565b50565b505b3d80801562001dbe576040519150601f19603f3d011682016040523d82523d6000602084013e5050565b606091505b5050565b801562001d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f457870656374656420616e206572726f72000000000000000000000000000000604482015260640160405180910390fd5b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001f335760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001f1a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001ec65790505b5050505050815250508152602001906001019062001e58565b50505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa15801562001f91573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fbb91908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa1580156200200b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200203591908101906200573f565b601b546040516001600160e01b031960e088901b1681526200206b95949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af11580156200208b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020b191906200563f565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa1580156200210b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200213591908101906200573f565b6040518263ffffffff1660e01b815260040162002153919062005778565b600060405180830381865afa15801562002171573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200219b91908101906200621f565b9050620021f88160200151601f60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d617463680000000000000000000000000000815250620049f3565b601e54604080517f5137b8a7000000000000000000000000000000000000000000000000000000008152905162001d8f926001600160a01b031691635137b8a79160048083019260009291908290030181865afa1580156200225e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002288919081019062006328565b6000815181106200229d576200229d620063fa565b6020026020010151601f60009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620022f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200232391908101906200573f565b6040518060400160405280600f81526020017f49647320646f6e2774206d61746368000000000000000000000000000000000081525062004a57565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001f33578382906000526020600020018054620023a590620054ce565b80601f0160208091040260200160405190810160405280929190818152602001828054620023d390620054ce565b8015620024245780601f10620023f85761010080835404028352916020019162002424565b820191906000526020600020905b8154815290600101906020018083116200240657829003601f168201915b50505050508152602001906001019062002383565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001f335760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200251f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620024cb5790505b505050505081525050815260200190600101906200245d565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200258d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620025b791908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562002607573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200263191908101906200573f565b601b546040516001600160e01b031960e088901b1681526200266795949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562002687573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026ad91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa15801562002703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200272d91908101906200573f565b6103e96040518363ffffffff1660e01b81526004016200274f92919062006410565b6020604051808303816000875af11580156200276f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200279591906200563f565b50601f54601e546040516370a0823160e01b81526001600160a01b03918216600482015262001bbb9291909116906370a0823190602401602060405180830381865afa158015620027ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002810919062006434565b60016040518060400160405280601081526020017f546f6b656e206e6f74206d696e7465640000000000000000000000000000000081525062004af4565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001f335783829060005260206000200180546200289490620054ce565b80601f0160208091040260200160405190810160405280929190818152602001828054620028c290620054ce565b8015620029135780601f10620028e75761010080835404028352916020019162002913565b820191906000526020600020905b815481529060010190602001808311620028f557829003601f168201915b50505050508152602001906001019062002872565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200297d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620029a791908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160059183916306fdde03916004808201926000929091908290030181865afa158015620029f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a2191908101906200573f565b601b546040516001600160e01b031960e088901b16815262002a5795949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562002a77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a9d91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa15801562002af3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b1d91908101906200573f565b6103e96040518363ffffffff1660e01b815260040162002b3f92919062006410565b6020604051808303816000875af115801562002b5f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b8591906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562001cd6573d6000803e3d6000fd5b60008054610100900460ff161562002bfc5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002d0b5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002c8d917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016200644e565b60408051601f198184030181529082905262002ca99162006480565b6000604051808303816000865af19150503d806000811462002ce8576040519150601f19603f3d011682016040523d82523d6000602084013e62002ced565b606091505b509150508080602001905181019062002d0791906200563f565b9150505b919050565b90565b601e54601f54604080516395d89b4160e01b815290516000936001600160a01b039081169363c1733f68939116916395d89b419160048082019288929091908290030181865afa15801562002d6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002d9691908101906200573f565b6040518263ffffffff1660e01b815260040162002db4919062005778565b600060405180830381865afa15801562002dd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002dfc91908101906200621f565b905062001d8f816020015160006040518060600160405280602681526020016200c02060269139620049f3565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa15801562002e7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002ea891908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562002ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f2291908101906200573f565b601b546040516001600160e01b031960e088901b16815262002f5895949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562002f78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f9e91906200563f565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002ff957600080fd5b505af11580156200300e573d6000803e3d6000fd5b5050601f54601b546040516340c10f1960e01b81526001600160a01b0391821660048201526103e96024820152911692506340c10f1991506044016020604051808303816000875af115801562003069573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200308f91906200563f565b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620030ea57600080fd5b505af1158015620030ff573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b1580156200315557600080fd5b505af11580156200316a573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063e1efb596945091909216916306fdde039160048083019260009291908290030181865afa158015620031c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620031f091908101906200573f565b6103e96040518363ffffffff1660e01b81526004016200321292919062006410565b6020604051808303816000875af115801562003232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200325891906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363d9cf884c9316916306fdde039160048083019260009291908290030181865afa158015620032ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620032d891908101906200573f565b6103e96040518363ffffffff1660e01b8152600401620032fa92919062006410565b6020604051808303816000875af11580156200331a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200334091906200563f565b50601f54601b546040516370a0823160e01b81526001600160a01b03918216600482015262001bbb9291909116906370a0823190602401602060405180830381865afa15801562003395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033bb919062006434565b60016040518060400160405280601c81526020017f546f6b656e206e6f742072657475726e6564206f6e20756e6c6f636b0000000081525062004af4565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200344e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200347891908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620034c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620034f291908101906200573f565b601b546040516001600160e01b031960e088901b1681526200352895949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562003548573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200356e91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa158015620035c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035ee91908101906200573f565b6040518263ffffffff1660e01b81526004016200360c919062005778565b6020604051808303816000875af11580156200362c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200365291906200563f565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa158015620036ac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620036d691908101906200573f565b6040518263ffffffff1660e01b8152600401620036f4919062005778565b600060405180830381865afa15801562003712573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200373c91908101906200621f565b905062001d8f8160200151601f60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d61746368000000000000000000000000000081525062004b41565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620037ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200381891908101906200573f565b6103e96040518363ffffffff1660e01b815260040162001d1e92919062006410565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200388f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620038b991908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562003909573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200393391908101906200573f565b601b546040516001600160e01b031960e088901b1681526200396995949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562003989573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039af91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa15801562003a05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a2f91908101906200573f565b6103e96040518363ffffffff1660e01b815260040162003a5192919062006410565b6020604051808303816000875af115801562003a71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a9791906200563f565b50601f54601e546040516370a0823160e01b81526001600160a01b03918216600482015262003b509291909116906370a0823190602401602060405180830381865afa15801562003aec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b12919062006434565b60016040518060400160405280601181526020017f546f6b656e73206e6f74206d696e74656400000000000000000000000000000081525062004af4565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003baa57600080fd5b505af115801562003bbf573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b15801562003c1557600080fd5b505af115801562003c2a573d6000803e3d6000fd5b5050601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562003c8857600080fd5b505af115801562003c9d573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063b48272cc945091909216916306fdde039160048083019260009291908290030181865afa15801562003cf9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003d2391908101906200573f565b6103e96040518363ffffffff1660e01b815260040162003d4592919062006410565b6020604051808303816000875af115801562003d65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d8b91906200563f565b50601f54601e546040516370a0823160e01b81526001600160a01b03918216600482015262001bbb9291909116906370a0823190602401602060405180830381865afa15801562003de0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e06919062006434565b60006040518060400160405280601081526020017f546f6b656e206e6f74206275726e65640000000000000000000000000000000081525062004af4565b6060600c80548060200260200160405190810160405280929190818152602001828054801562001a4b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001a2c575050505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa15801562003efb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f2591908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562003f75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f9f91908101906200573f565b601b546040516001600160e01b031960e088901b16815262003fd595949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562003ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200401b91906200563f565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200407657600080fd5b505af11580156200408b573d6000803e3d6000fd5b5050601f54601b546040516340c10f1960e01b81526001600160a01b0391821660048201526103e96024820152911692506340c10f1991506044016020604051808303816000875af1158015620040e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200410c91906200563f565b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200416757600080fd5b505af11580156200417c573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b158015620041d257600080fd5b505af1158015620041e7573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063e1efb596945091909216916306fdde039160048083019260009291908290030181865afa15801562004243573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200426d91908101906200573f565b6103e96040518363ffffffff1660e01b81526004016200428f92919062006410565b6020604051808303816000875af1158015620042af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620042d591906200563f565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa1580156200432f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200435991908101906200573f565b6040518263ffffffff1660e01b815260040162004377919062005778565b600060405180830381865afa15801562004395573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620043bf91908101906200621f565b905062001d8f8160c001516103e96040518060400160405280601081526020017f546f6b656e206e6f74206c6f636b65640000000000000000000000000000000081525062004af4565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363f272660b9316916306fdde039160048083019260009291908290030181865afa1580156200445e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200448891908101906200573f565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620044d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200450291908101906200573f565b601b546040516001600160e01b031960e088901b1681526200453895949392916001600160a01b031690601d9060040162005fcd565b6020604051808303816000875af115801562004558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200457e91906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620045d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620045fe91908101906200573f565b6103ea6040518363ffffffff1660e01b81526004016200462092919062006410565b6020604051808303816000875af115801562004640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200466691906200563f565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b0393841693634534ba179316916306fdde039160048083019260009291908290030181865afa158015620046bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620046e691908101906200573f565b601b546040516001600160e01b031960e085901b1681526200471a92916001600160a01b0316906103ea906004016200649e565b6020604051808303816000875af11580156200473a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200476091906200563f565b50601f54601b546040516370a0823160e01b81526001600160a01b03918216600482015262001bbb9291909116906370a0823190602401602060405180830381865afa158015620047b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620047db919062006434565b60016040518060400160405280601281526020017f546f6b656e206e6f742061737369676e6564000000000000000000000000000081525062004af4565b8062001d8f577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200487f9060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001d8f62004ba0565b80604051602001620048a4919062006480565b6040516020818303038152906040528051906020012082604051602001620048cd919062006480565b604051602081830303815290604052805190602001201462001dc3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f506040516200496f9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051620049a89190620064ce565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620049e191906200650d565b60405180910390a162001dc362004ba0565b816001600160a01b0316836001600160a01b03161462004a52577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004a3e919062006538565b60405180910390a162004a52838362004cb3565b505050565b8160405160200162004a6a919062006480565b604051602081830303815290604052805190602001208360405160200162004a93919062006480565b604051602081830303815290604052805190602001201462004a52577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004ae0919062006538565b60405180910390a162004a52838362004891565b81831462004a52577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004b2d919062006538565b60405180910390a162004a52838362004dad565b816001600160a01b0316836001600160a01b03160362004a52577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004b8c919062006538565b60405180910390a162004a52838362004ead565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562004ca25760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262004c3d92916020016200644e565b60408051601f198184030181529082905262004c599162006480565b6000604051808303816000865af19150503d806000811462004c98576040519150601f19603f3d011682016040523d82523d6000602084013e62004c9d565b606091505b505050505b6000805461ff001916610100179055565b806001600160a01b0316826001600160a01b03161462001dc3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004d3b9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162004d74919062006581565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620049e19190620065c3565b80821462001dc3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004e3b9060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162004e749190620065ee565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620049e1919062006627565b806001600160a01b0316826001600160a01b03160362001dc3577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004d3b9060208082526025908201527f4572726f723a206120213d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b613ca2806200665383390190565b611d2b806200a2f583390190565b82805482825590600052602060002090601f0160209004810192821562004ffd5791602002820160005b8382111562004fcc57835183826101000a81548160ff0219169083600781111562004faa5762004faa62005629565b0217905550926020019260010160208160000104928301926001030262004f7b565b801562004ffb5782816101000a81549060ff021916905560010160208160000104928301926001030262004fcc565b505b506200500b929150620051be565b5090565b8280548282559060005260206000209081019282156200505a579160200282015b828111156200505a57825182906200504990826200555c565b509160200191906001019062005030565b506200500b929150620051d5565b828054828255906000526020600020908101928215620050ba579160200282015b82811115620050ba5782518051620050a9918491602090910190620051f6565b509160200191906001019062005089565b506200500b92915062005271565b82805482825590600052602060002090601f0160209004810192821562004ffd5791602002820160005b8382111562004fcc57835183826101000a81548160ff0219169083600781111562005121576200512162005629565b02179055509260200192600101602081600001049283019260010302620050f2565b82805482825590600052602060002090601f0160209004810192821562004ffd5791602002820160005b8382111562004fcc57835183826101000a81548160ff021916908360078111156200519c576200519c62005629565b021790555092602001926001016020816000010492830192600103026200516d565b5b808211156200500b5760008155600101620051bf565b808211156200500b576000620051ec828262005292565b50600101620051d5565b82805482825590600052602060002090601f0160209004810192821562004ffd5791602002820160005b8382111562004fcc57835183826101000a81548160ff021916908360078111156200524f576200524f62005629565b0217905550926020019260010160208160000104928301926001030262005220565b808211156200500b576000620052888282620052d1565b5060010162005271565b508054620052a090620054ce565b6000825580601f10620052b1575050565b601f01602090049060005260206000209081019062001d8f9190620051be565b50805460008255601f01602090049060005260206000209081019062001d8f9190620051be565b6020808252825182820181905260009190848201906040850190845b818110156200533b5783516001600160a01b03168352928401929184019160010162005314565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620053ef57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620053d95783516001600160e01b0319168252928b019260019290920191908b0190620053ad565b50978a019795505050918701916001016200536f565b50919998505050505050505050565b60005b838110156200541b57818101518382015260200162005401565b50506000910152565b600081518084526200543e816020860160208601620053fe565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620054ab57603f198886030184526200549885835162005424565b9450928501929085019060010162005479565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620054e357607f821691505b6020821081036200550457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562004a5257600081815260208120601f850160051c81016020861015620055335750805b601f850160051c820191505b8181101562005554578281556001016200553f565b505050505050565b815167ffffffffffffffff811115620055795762005579620054b8565b62005591816200558a8454620054ce565b846200550a565b602080601f831160018114620055c95760008415620055b05750858301515b600019600386901b1c1916600185901b17855562005554565b600085815260208120601f198616915b82811015620055fa57888601518255948401946001909101908401620055d9565b5085821015620056195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200565257600080fd5b815180151581146200566357600080fd5b9392505050565b601f8201601f1916810167ffffffffffffffff81118282101715620056935762005693620054b8565b6040525050565b60405160e0810167ffffffffffffffff81118282101715620056c057620056c0620054b8565b60405290565b600082601f830112620056d857600080fd5b815167ffffffffffffffff811115620056f557620056f5620054b8565b6040516200570e601f8301601f1916602001826200566a565b8181528460208386010111156200572457600080fd5b62005737826020830160208701620053fe565b949350505050565b6000602082840312156200575257600080fd5b815167ffffffffffffffff8111156200576a57600080fd5b6200573784828501620056c6565b60208152600062005663602083018462005424565b600060033d111562002d105760046000803e5060005160e01c90565b600060443d1015620057b85790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715620057e957505050505090565b8285019150815181811115620058025750505050505090565b843d87010160208285010111156200581d5750505050505090565b6200582e602082860101876200566a565b509095945050505050565b600881106200584c576200584c62005629565b9052565b600081548084526020808501808196508360051b81019150856000528260002060005b8581101562005fc057828403895281548085526000838152602080822090870192915b82601f8201101562005b5157815460ff620058b48682841662005839565b620058c78b8701828460081c1662005839565b620058db60408701828460101c1662005839565b620058ef60608701828460181c1662005839565b60806200590381880183858f1c1662005839565b60a062005918818901848660281c1662005839565b60c06200592d818a01858760301c1662005839565b60e062005942818b01868860381c1662005839565b620059576101008b01868860401c1662005839565b6200596c6101208b01868860481c1662005839565b620059816101408b01868860501c1662005839565b620059966101608b01868860581c1662005839565b620059ab6101808b01868860601c1662005839565b620059c06101a08b01868860681c1662005839565b620059d56101c08b01868860701c1662005839565b620059ea6101e08b01868860781c1662005839565b620059fe6102008b018688871c1662005839565b62005a136102208b01868860881c1662005839565b62005a286102408b01868860901c1662005839565b62005a3d6102608b01868860981c1662005839565b62005a516102808b018688861c1662005839565b62005a666102a08b01868860a81c1662005839565b62005a7b6102c08b01868860b01c1662005839565b62005a906102e08b01868860b81c1662005839565b62005aa46103008b018688851c1662005839565b62005ab96103208b01868860c81c1662005839565b62005ace6103408b01868860d01c1662005839565b62005ae36103608b01868860d81c1662005839565b62005af76103808b018688841c1662005839565b5050505062005b106103a08701828460e81c1662005839565b62005b256103c08701828460f01c1662005839565b5062005b396103e086018260f81c62005839565b50610400939093019260019190910190880162005896565b9054908281101562005b745762005b6c8460ff841662005839565b928801926001015b8281101562005b975762005b8f8460ff8460081c1662005839565b928801926001015b8281101562005bba5762005bb28460ff8460101c1662005839565b928801926001015b8281101562005bdd5762005bd58460ff8460181c1662005839565b928801926001015b8281101562005bff5762005bf78460ff848c1c1662005839565b928801926001015b8281101562005c225762005c1a8460ff8460281c1662005839565b928801926001015b8281101562005c455762005c3d8460ff8460301c1662005839565b928801926001015b8281101562005c685762005c608460ff8460381c1662005839565b928801926001015b8281101562005c8b5762005c838460ff8460401c1662005839565b928801926001015b8281101562005cae5762005ca68460ff8460481c1662005839565b928801926001015b8281101562005cd15762005cc98460ff8460501c1662005839565b928801926001015b8281101562005cf45762005cec8460ff8460581c1662005839565b928801926001015b8281101562005d175762005d0f8460ff8460601c1662005839565b928801926001015b8281101562005d3a5762005d328460ff8460681c1662005839565b928801926001015b8281101562005d5d5762005d558460ff8460701c1662005839565b928801926001015b8281101562005d805762005d788460ff8460781c1662005839565b928801926001015b8281101562005da35762005d9b8460ff8460801c1662005839565b928801926001015b8281101562005dc65762005dbe8460ff8460881c1662005839565b928801926001015b8281101562005de95762005de18460ff8460901c1662005839565b928801926001015b8281101562005e0c5762005e048460ff8460981c1662005839565b928801926001015b8281101562005e2f5762005e278460ff8460a01c1662005839565b928801926001015b8281101562005e525762005e4a8460ff8460a81c1662005839565b928801926001015b8281101562005e755762005e6d8460ff8460b01c1662005839565b928801926001015b8281101562005e985762005e908460ff8460b81c1662005839565b928801926001015b8281101562005ebb5762005eb38460ff8460c01c1662005839565b928801926001015b8281101562005ede5762005ed68460ff8460c81c1662005839565b928801926001015b8281101562005f015762005ef98460ff8460d01c1662005839565b928801926001015b8281101562005f245762005f1c8460ff8460d81c1662005839565b928801926001015b8281101562005f475762005f3f8460ff8460e01c1662005839565b928801926001015b8281101562005f6a5762005f628460ff8460e81c1662005839565b928801926001015b8281101562005f8d5762005f858460ff8460f01c1662005839565b928801926001015b8281101562005faa5762005fa5848360f81c62005839565b928801925b5050509885019893506001918201910162005873565b5091979650505050505050565b60e08152600062005fe260e083018962005424565b6001600160a01b0380891660208501526006881062006005576200600562005629565b87604085015283820360608501526200601f828862005424565b91508382036080850152600582527f7265664944000000000000000000000000000000000000000000000000000000602083015280861660a08501525060408382030160c084015260408101845480825260608301915060608160051b84010186600052602060002060005b83811015620061e557858303605f19018552815460ff1660078110620060b557620060b562005629565b808452506080602084015260808301600183015480825260a08501915060a08160051b86010160018501600052602060002060005b838110156200619757609f19888403018552600082546200610b81620054ce565b80865260018216801562006128576001811462006145576200617e565b60ff1983166020880152602082151560051b88010193506200617e565b85600052602060002060005b83811015620061755781546020828b01015260018201915060208101905062006151565b88016020019450505b50505060209590950194925060019182019101620060ea565b50508581036040870152620061b0816002870162005850565b92505050620061c3600384015460ff1690565b801515606086015250602095909501949250600491909101906001016200608b565b50909c9b505050505050505050505050565b80516001600160a01b038116811462002d0b57600080fd5b80516006811062002d0b57600080fd5b6000602082840312156200623257600080fd5b815167ffffffffffffffff808211156200624b57600080fd5b9083019060e082860312156200626057600080fd5b6200626a6200569a565b8251828111156200627a57600080fd5b6200628887828601620056c6565b8252506200629960208401620061f7565b6020820152620062ac604084016200620f565b6040820152606083015182811115620062c457600080fd5b620062d287828601620056c6565b606083015250608083015182811115620062eb57600080fd5b620062f987828601620056c6565b6080830152506200630d60a08401620061f7565b60a082015260c083015160c082015280935050505092915050565b600060208083850312156200633c57600080fd5b825167ffffffffffffffff808211156200635557600080fd5b818501915085601f8301126200636a57600080fd5b8151818111156200637f576200637f620054b8565b8060051b60405162006394868301826200566a565b91825283810185019185810189841115620063ae57600080fd5b86860192505b83831015620063ed57825185811115620063ce5760008081fd5b620063de8b89838a0101620056c6565b825250918601918601620063b4565b5098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60408152600062006425604083018562005424565b90508260208301529392505050565b6000602082840312156200644757600080fd5b5051919050565b6001600160e01b0319831681526000825162006472816004850160208701620053fe565b919091016004019392505050565b6000825162006494818460208701620053fe565b9190910192915050565b606081526000620064b3606083018662005424565b6001600160a01b039490941660208301525060400152919050565b604081526000620064f960408301600a8152690808080808081319599d60b21b602082015260400190565b828103602084015262005737818562005424565b604081526000620064f960408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600062005663608083018462005424565b604081526000620065ac60408301600a8152690808080808081319599d60b21b602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620065ac60408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200661960408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200661960408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b5060405162003ca238038062003ca28339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600480546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b613b7a80620001286000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063a1bc17c5116100b2578063d9cf884c11610081578063ea8f547f11610066578063ea8f547f146102f6578063f272660b1461034d578063f2fde38b1461036057600080fd5b8063d9cf884c146102d0578063e1efb596146102e357600080fd5b8063a1bc17c514610277578063b48272cc1461028a578063bd5b93d21461029d578063c1733f68146102b057600080fd5b80634534ba17116101095780636a0876e0116100ee5780636a0876e014610249578063715018a61461025c5780638da5cb5b1461026657600080fd5b80634534ba17146102215780635137b8a71461023457600080fd5b806304c2320b1461013b578063056b01ce1461016a5780631255c1891461018d578063150b7a02146101b8575b600080fd5b61014e610149366004612d36565b610373565b6040516101619796959493929190612de5565b60405180910390f35b61017d610178366004612e51565b61056c565b6040519015158152602001610161565b6004546101a0906001600160a01b031681565b6040516001600160a01b039091168152602001610161565b6101f06101c6366004612ead565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610161565b61017d61022f366004612f48565b6106a4565b61023c6109cb565b6040516101619190612ff4565b61017d610257366004613016565b610aa4565b610264610b89565b005b6000546001600160a01b03166101a0565b61017d610285366004612d36565b610b9d565b61017d610298366004612e51565b610ecf565b61017d6102ab366004612f48565b61127d565b6102c36102be366004612d36565b611398565b60405161016191906130cf565b61017d6102de366004612e51565b61161c565b61017d6102f1366004612e51565b611a85565b61033f610304366004613186565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b6040516101619291906131e4565b61017d61035b3660046134ae565b611c82565b61026461036e36600461358d565b611fb3565b8051602081830181018051600182529282019190930120915280548190610399906135a8565b80601f01602080910402602001604051908101604052809291908181526020018280546103c5906135a8565b80156104125780601f106103e757610100808354040283529160200191610412565b820191906000526020600020905b8154815290600101906020018083116103f557829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff16935091610445906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610471906135a8565b80156104be5780601f10610493576101008083540402835291602001916104be565b820191906000526020600020905b8154815290600101906020018083116104a157829003601f168201915b5050505050908060030180546104d3906135a8565b80601f01602080910402602001604051908101604052809291908181526020018280546104ff906135a8565b801561054c5780601f106105215761010080835404028352916020019161054c565b820191906000526020600020905b81548152906001019060200180831161052f57829003601f168201915b50505050600483015460059093015491926001600160a01b031691905087565b600061057661200a565b60006001600160a01b031660018460405161059191906135e2565b908152604051908190036020019020600101546001600160a01b0316036105d6578260405163c0bab25f60e01b81526004016105cd91906135fe565b60405180910390fd5b6105e283600084612050565b61062e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c65640000000000000000000060448201526064016105cd565b8160018460405161063f91906135e2565b908152604051908190036020018120600501919091556106609084906135e2565b604051908190038120838252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a69060200160405180910390a25060015b92915050565b60006106ae61200a565b60006001856040516106c091906135e2565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160058111156106f4576106f4612dbb565b14806107115750600481600581111561070f5761070f612dbb565b145b15610877578260018660405161072791906135e2565b90815260200160405180910390206005015410156107875760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b656460448201526064016105cd565b6107948560028587612067565b6107e05760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c6564000000000000000060448201526064016105cd565b826001866040516107f191906135e2565b908152602001604051809103902060050160008282546108119190613627565b90915550506040516108249086906135e2565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a260019150506109c4565b600281600581111561088b5761088b612dbb565b14806108a8575060058160058111156108a6576108a6612dbb565b145b156109a957826001866040516108be91906135e2565b9081526020016040518091039020600501541461091d5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b656460448201526064016105cd565b61092a8560028587612067565b6109765760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c65640000000000000000000060448201526064016105cd565b600060018660405161098891906135e2565b908152604051908190036020018120600501919091556108249086906135e2565b8460405163c16fc3ad60e01b81526004016105cd91906135fe565b9392505050565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015610a9b578382906000526020600020018054610a0e906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3a906135a8565b8015610a875780601f10610a5c57610100808354040283529160200191610a87565b820191906000526020600020905b815481529060010190602001808311610a6a57829003601f168201915b5050505050815260200190600101906109ef565b50505050905090565b6000610aae61200a565b3063f272660b8888888888886000604051908082528060200260200182016040528015610b1857816020015b610b056040805160808101909152806000815260606020820181905260408201819052600091015290565b815260200190600190039081610ada5790505b506040518863ffffffff1660e01b8152600401610b3b979695949392919061363a565b6020604051808303816000875af1158015610b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7e91906137db565b979650505050505050565b610b9161200a565b610b9b6000612383565b565b6000610ba761200a565b60006001600160a01b0316600183604051610bc291906135e2565b908152604051908190036020019020600101546001600160a01b031603610bfe578160405163c0bab25f60e01b81526004016105cd91906135fe565b6000600183604051610c1091906135e2565b9081526040519081900360200190206001015460ff600160a01b9091041690506004816005811115610c4457610c44612dbb565b1480610c6157506001816005811115610c5f57610c5f612dbb565b145b15610cb0576000600184604051610c7891906135e2565b9081526020016040518091039020600501541115610cab5782604051635be9608560e11b81526004016105cd91906135fe565b610d45565b6005816005811115610cc457610cc4612dbb565b1480610ce157506002816005811115610cdf57610cdf612dbb565b145b15610d2a57600183604051610cf691906135e2565b908152602001604051809103902060050154600014610cab5782604051635be9608560e11b81526004016105cd91906135fe565b8260405163c16fc3ad60e01b81526004016105cd91906135fe565b610df7600184604051610d5891906135e2565b90815260200160405180910390206002018054610d74906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610da0906135a8565b8015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b50505050506123e0565b600183604051610e0791906135e2565b9081526040519081900360200190206000610e228282612a49565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055610e50600283016000612a49565b610e5e600383016000612a49565b5060048101805473ffffffffffffffffffffffffffffffffffffffff191690556000600590910155604051610e949084906135e2565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a260019150505b919050565b6000610ed961200a565b6000600184604051610eeb91906135e2565b90815260405190819003602001902060019081015460ff600160a01b909104169150816005811115610f1f57610f1f612dbb565b1480610f3c57506004816005811115610f3a57610f3a612dbb565b145b156110935782600185604051610f5291906135e2565b9081526020016040518091039020600501541015610fb25760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b6564000060448201526064016105cd565b610fbe84600185612050565b61100a5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c65640000000000000000000060448201526064016105cd565b8260018560405161101b91906135e2565b9081526020016040518091039020600501600082825461103b9190613627565b909155505060405161104e9085906135e2565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee99906020015b60405180910390a2600191505061069e565b60028160058111156110a7576110a7612dbb565b14806110c4575060058160058111156110c2576110c2612dbb565b145b1561125b576001846040516110d991906135e2565b90815260200160405180910390206005015460000361113a5760405162461bcd60e51b815260206004820152601660248201527f4275726e696e6720756e6d696e7465642061737365740000000000000000000060448201526064016105cd565b8260018560405161114b91906135e2565b908152602001604051809103902060050154146111d05760405162461bcd60e51b815260206004820152603060248201527f4275726e696e67204e4654206661696c65642064756520746f2077726f6e672060448201527f756e6971756544657363726970746f720000000000000000000000000000000060648201526084016105cd565b6111dc84600185612050565b6112285760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c65640000000000000000000060448201526064016105cd565b600060018560405161123a91906135e2565b9081526040519081900360200181206005019190915561104e9085906135e2565b8360405163c16fc3ad60e01b81526004016105cd91906135fe565b5092915050565b600061128761200a565b60006001600160a01b03166001856040516112a291906135e2565b908152604051908190036020019020600101546001600160a01b0316036112de578360405163c0bab25f60e01b81526004016105cd91906135fe565b6112eb8460068486612067565b6113375760405162461bcd60e51b815260206004820152601960248201527f617070726f76652061737365742063616c6c206661696c65640000000000000060448201526064016105cd565b8360405161134591906135e2565b604080519182900382206001600160a01b038616835260208301859052917fc709654ecf7a14919446b196f59286f52dcd8238dca7326767c24ab00999817c910160405180910390a25060019392505050565b6040805160e0810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c08101919091526001826040516113e091906135e2565b90815260200160405180910390206040518060e0016040529081600082018054611409906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611435906135a8565b80156114825780601f1061145757610100808354040283529160200191611482565b820191906000526020600020905b81548152906001019060200180831161146557829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff1660058111156114bf576114bf612dbb565b60058111156114d0576114d0612dbb565b81526020016002820180546114e4906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611510906135a8565b801561155d5780601f106115325761010080835404028352916020019161155d565b820191906000526020600020905b81548152906001019060200180831161154057829003601f168201915b50505050508152602001600382018054611576906135a8565b80601f01602080910402602001604051908101604052809291908181526020018280546115a2906135a8565b80156115ef5780601f106115c4576101008083540402835291602001916115ef565b820191906000526020600020905b8154815290600101906020018083116115d257829003601f168201915b505050918352505060048201546001600160a01b0316602082015260059091015460409091015292915050565b600061162661200a565b60006001600160a01b031660018460405161164191906135e2565b908152604051908190036020019020600101546001600160a01b03160361167d578260405163c0bab25f60e01b81526004016105cd91906135fe565b600060018460405161168f91906135e2565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160058111156116c3576116c3612dbb565b14806116e0575060048160058111156116de576116de612dbb565b145b1561183d57826001856040516116f691906135e2565b90815260200160405180910390206005015410156117445783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016105cd9291906137f8565b61175084600585612050565b6117c25760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016105cd565b826001856040516117d391906135e2565b908152602001604051809103902060050160008282546117f39190613627565b90915550506040516118069085906135e2565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001611081565b600281600581111561185157611851612dbb565b148061186e5750600581600581111561186c5761186c612dbb565b145b15611a515760018460405161188391906135e2565b90815260200160405180910390206005015460000361190a5760405162461bcd60e51b815260206004820152602c60248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206c6f636b6564000000000000000000000000000000000000000060648201526084016105cd565b8260018560405161191b91906135e2565b908152602001604051809103902060050154146119a05760405162461bcd60e51b815260206004820152603a60248201527f556e6c6f636b696e67204e46542063616e6e6f7420626520646f6e652064756560448201527f20746f2077726f6e6720756e6971756544657363726970746f7200000000000060648201526084016105cd565b6119ac84600585612050565b611a1e5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c656400000000000000000000000000000000000000000000000000000060648201526084016105cd565b6000600185604051611a3091906135e2565b908152604051908190036020018120600501919091556118069085906135e2565b836040517f58300fe70000000000000000000000000000000000000000000000000000000081526004016105cd91906135fe565b6000611a8f61200a565b60006001600160a01b0316600184604051611aaa91906135e2565b908152604051908190036020019020600101546001600160a01b031603611ae6578260405163c0bab25f60e01b81526004016105cd91906135fe565b6000611af484600485612050565b90508015611c4e576000600185604051611b0e91906135e2565b90815260405190819003602001902060019081015460ff600160a01b909104169150816005811115611b4257611b42612dbb565b1480611b5f57506004816005811115611b5d57611b5d612dbb565b145b15611ba05783600186604051611b7591906135e2565b90815260200160405180910390206005016000828254611b95919061381a565b90915550611bfb9050565b6002816005811115611bb457611bb4612dbb565b1480611bd157506005816005811115611bcf57611bcf612dbb565b145b15611bfb5783600186604051611be791906135e2565b908152604051908190036020019020600501555b84604051611c0991906135e2565b604051908190038120858252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc97979060200160405180910390a260019250505061069e565b836040517f8244096a0000000000000000000000000000000000000000000000000000000081526004016105cd91906135fe565b6000611c8c61200a565b60006001600160a01b0316600186604051611ca791906135e2565b908152604051908190036020019020600101546001600160a01b031614611cfc57846040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016105cd91906135fe565b611d06858361253e565b600285604051611d1691906135e2565b9081526040805160209281900383019020600360008181529190935220015460ff1615611dba57611d4885600361265e565b611dba5760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e0000000060648201526084016105cd565b6040518060e00160405280898152602001886001600160a01b03168152602001876005811115611dec57611dec612dbb565b8152602001868152602001858152602001846001600160a01b031681526020016000815250600186604051611e2191906135e2565b90815260405190819003602001902081518190611e3e908261387b565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b836005811115611ea757611ea7612dbb565b021790555060608201516002820190611ec0908261387b565b5060808201516003820190611ed5908261387b565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c090910151600590910155600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01611f51868261387b565b5084604051611f6091906135e2565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda89898987604051611f9d949392919061393b565b60405180910390a2506001979650505050505050565b611fbb61200a565b6001600160a01b038116611ffe576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016105cd565b61200781612383565b50565b6000546001600160a01b03163314610b9b576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016105cd565b600061205f8484846000612067565b949350505050565b600060028560405161207991906135e2565b9081526020016040518091039020600085600681111561209b5761209b612dbb565b60068111156120ac576120ac612dbb565b815260208101919091526040016000206003015460ff166120cf5750600061205f565b60005b6002866040516120e291906135e2565b9081526020016040518091039020600086600681111561210457612104612dbb565b600681111561211557612115612dbb565b815260208101919091526040016000206001015481101561237757600060028760405161214291906135e2565b9081526020016040518091039020600087600681111561216457612164612dbb565b600681111561217557612175612dbb565b815260200190815260200160002060010182815481106121975761219761397f565b906000526020600020016040516020016121b19190613995565b60405160208183030381529060405280519060200120905060006122cd826122c860028b6040516121e291906135e2565b908152602001604051809103902060008b600681111561220457612204612dbb565b600681111561221557612215612dbb565b815260200190815260200160002060020186815481106122375761223761397f565b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156122bb57602002820191906000526020600020906000905b82829054906101000a900460ff16600781111561229957612299612dbb565b81526020600192830181810494850194909303909202910180841161227a5790505b50505050508b898b61266d565b61298a565b905060006001896040516122e191906135e2565b908152604051908190036020018120600101546001600160a01b0316906123099084906135e2565b6000604051808303816000865af19150503d8060008114612346576040519150601f19603f3d011682016040523d82523d6000602084013e61234b565b606091505b505090508061236157600094505050505061205f565b505050808061236f90613a0b565b9150506120d2565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60035481101561253a5761249c600382815481106124035761240361397f565b906000526020600020018054612418906135a8565b80601f0160208091040260200160405190810160405280929190818152602001828054612444906135a8565b80156124915780601f1061246657610100808354040283529160200191612491565b820191906000526020600020905b81548152906001019060200180831161247457829003601f168201915b505050505083612a24565b1561252857600380546124b190600190613627565b815481106124c1576124c161397f565b90600052602060002001600382815481106124de576124de61397f565b9060005260206000200190816124f49190613a24565b50600380548061250657612506613aff565b6001900381819060005260206000200160006125229190612a49565b90555050565b8061253281613a0b565b9150506123e3565b5050565b60005b81518110156126595781818151811061255c5761255c61397f565b602002602001015160028460405161257491906135e2565b908152602001604051809103902060008484815181106125965761259661397f565b60200260200101516000015160068111156125b3576125b3612dbb565b60068111156125c4576125c4612dbb565b8152602081019190915260400160002081518154829060ff191660018360068111156125f2576125f2612dbb565b0217905550602082810151805161260f9260018501920190612a83565b506040820151805161262b916002840191602090910190612ad9565b50606091909101516003909101805460ff19169115159190911790558061265181613a0b565b915050612541565b505050565b60006109c48383600080612067565b60606000855167ffffffffffffffff81111561268b5761268b612c56565b6040519080825280602002602001820160405280156126be57816020015b60608152602001906001900390816126a95790505b50905060005b86518110156129805760058782815181106126e1576126e161397f565b602002602001015160078111156126fa576126fa612dbb565b0361273c5760408051306020820152015b60405160208183030381529060405282828151811061272c5761272c61397f565b602002602001018190525061296e565b60028782815181106127505761275061397f565b6020026020010151600781111561276957612769612dbb565b0361277f578560405160200161270b91906135fe565b60048782815181106127935761279361397f565b602002602001015160078111156127ac576127ac612dbb565b036127c25760408051602081018690520161270b565b60038782815181106127d6576127d661397f565b602002602001015160078111156127ef576127ef612dbb565b0361282d5760018660405161280491906135e2565b908152604080519182900360209081018320600401546001600160a01b0316908301520161270b565b60008782815181106128415761284161397f565b6020026020010151600781111561285a5761285a612dbb565b036128985760018660405161286f91906135e2565b908152604080519182900360209081018320600101546001600160a01b0316908301520161270b565b60068782815181106128ac576128ac61397f565b602002602001015160078111156128c5576128c5612dbb565b036128e357604080516001600160a01b03871660208201520161270b565b60078782815181106128f7576128f761397f565b6020026020010151600781111561291057612910612dbb565b036129265760408051602081018690520161270b565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f727465640000000000000000000060448201526064016105cd565b8061297881613a0b565b9150506126c4565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561127657818382815181106129e7576129e761397f565b6020026020010151604051602001612a00929190613b15565b60405160208183030381529060405291508080612a1c90613a0b565b9150506129cb565b6000815183511480156109c45750508051602091820120825192909101919091201490565b508054612a55906135a8565b6000825580601f10612a65575050565b601f0160209004906000526020600020908101906120079190612b32565b828054828255906000526020600020908101928215612ac9579160200282015b82811115612ac95782518290612ab9908261387b565b5091602001919060010190612aa3565b50612ad5929150612b47565b5090565b828054828255906000526020600020908101928215612b26579160200282015b82811115612b265782518051612b16918491602090910190612b64565b5091602001919060010190612af9565b50612ad5929150612c14565b5b80821115612ad55760008155600101612b33565b80821115612ad5576000612b5b8282612a49565b50600101612b47565b82805482825590600052602060002090601f01602090048101928215612c085791602002820160005b83821115612bd957835183826101000a81548160ff02191690836007811115612bb857612bb8612dbb565b02179055509260200192600101602081600001049283019260010302612b8d565b8015612c065782816101000a81549060ff0219169055600101602081600001049283019260010302612bd9565b505b50612ad5929150612b32565b80821115612ad5576000612c288282612c31565b50600101612c14565b50805460008255601f0160209004906000526020600020908101906120079190612b32565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715612c8f57612c8f612c56565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612cbe57612cbe612c56565b604052919050565b600082601f830112612cd757600080fd5b813567ffffffffffffffff811115612cf157612cf1612c56565b612d04601f8201601f1916602001612c95565b818152846020838601011115612d1957600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612d4857600080fd5b813567ffffffffffffffff811115612d5f57600080fd5b61205f84828501612cc6565b60005b83811015612d86578181015183820152602001612d6e565b50506000910152565b60008151808452612da7816020860160208601612d6b565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b60068110612de157612de1612dbb565b9052565b60e081526000612df860e083018a612d8f565b6001600160a01b03808a166020850152612e15604085018a612dd1565b8382036060850152612e278289612d8f565b91508382036080850152612e3b8288612d8f565b951660a0840152505060c0015295945050505050565b60008060408385031215612e6457600080fd5b823567ffffffffffffffff811115612e7b57600080fd5b612e8785828601612cc6565b95602094909401359450505050565b80356001600160a01b0381168114610eca57600080fd5b600080600080600060808688031215612ec557600080fd5b612ece86612e96565b9450612edc60208701612e96565b935060408601359250606086013567ffffffffffffffff80821115612f0057600080fd5b818801915088601f830112612f1457600080fd5b813581811115612f2357600080fd5b896020828501011115612f3557600080fd5b9699959850939650602001949392505050565b600080600060608486031215612f5d57600080fd5b833567ffffffffffffffff811115612f7457600080fd5b612f8086828701612cc6565b935050612f8f60208501612e96565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015612fe7578284038952612fd5848351612d8f565b98850198935090840190600101612fbd565b5091979650505050505050565b6020815260006109c46020830184612f9f565b803560068110610eca57600080fd5b60008060008060008060c0878903121561302f57600080fd5b863567ffffffffffffffff8082111561304757600080fd5b6130538a838b01612cc6565b975061306160208a01612e96565b965061306f60408a01613007565b9550606089013591508082111561308557600080fd5b6130918a838b01612cc6565b945060808901359150808211156130a757600080fd5b506130b489828a01612cc6565b9250506130c360a08801612e96565b90509295509295509295565b602081526000825160e060208401526130ec610100840182612d8f565b905060208401516001600160a01b038082166040860152604086015191506131176060860183612dd1565b60608601519150601f19808685030160808701526131358484612d8f565b935060808701519250808685030160a0870152506131538383612d8f565b92508060a08701511660c0860152505060c084015160e08401528091505092915050565b803560078110610eca57600080fd5b6000806040838503121561319957600080fd5b823567ffffffffffffffff8111156131b057600080fd5b6131bc85828601612cc6565b9250506131cb60208401613177565b90509250929050565b60078110612de157612de1612dbb565b604081016131f282856131d4565b82151560208301529392505050565b600067ffffffffffffffff82111561321b5761321b612c56565b5060051b60200190565b600082601f83011261323657600080fd5b8135602061324b61324683613201565b612c95565b828152600592831b850182019282820191908785111561326a57600080fd5b8387015b8581101561330f57803567ffffffffffffffff81111561328e5760008081fd5b8801603f81018a136132a05760008081fd5b8581013560406132b261324683613201565b82815291851b8301810191888101908d8411156132cf5760008081fd5b938201935b838510156132fe5784359250600883106132ee5760008081fd5b82825293890193908901906132d4565b88525050509385019350840161326e565b5090979650505050505050565b801515811461200757600080fd5b8035610eca8161331c565b600082601f83011261334657600080fd5b6133536132468335613201565b82358082526020808301929160051b8501018581111561337257600080fd5b602085015b818110156134a35767ffffffffffffffff808235111561339657600080fd5b813587016080818a03601f190112156133ae57600080fd5b6133b6612c6c565b6133c260208301613177565b81526040820135838111156133d657600080fd5b8201603f81018b136133e757600080fd5b60208101356133f861324682613201565b81815260059190911b82016040019060208101908d83111561341957600080fd5b604084015b8381101561345257878135111561343457600080fd5b6134448f60408335880101612cc6565b83526020928301920161341e565b50602085015250505060608201358381111561346d57600080fd5b61347c8b602083860101613225565b60408301525061348e6080830161332a565b60608201528652505060209384019301613377565b509095945050505050565b600080600080600080600060e0888a0312156134c957600080fd5b873567ffffffffffffffff808211156134e157600080fd5b6134ed8b838c01612cc6565b98506134fb60208b01612e96565b975061350960408b01613007565b965060608a013591508082111561351f57600080fd5b61352b8b838c01612cc6565b955060808a013591508082111561354157600080fd5b61354d8b838c01612cc6565b945061355b60a08b01612e96565b935060c08a013591508082111561357157600080fd5b5061357e8a828b01613335565b91505092959891949750929550565b60006020828403121561359f57600080fd5b6109c482612e96565b600181811c908216806135bc57607f821691505b6020821081036135dc57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516135f4818460208701612d6b565b9190910192915050565b6020815260006109c46020830184612d8f565b634e487b7160e01b600052601160045260246000fd5b8181038181111561069e5761069e613611565b60e08152600061364d60e083018a612d8f565b6001600160a01b03891660208401526136696040840189612dd1565b828103606084015261367b8188612d8f565b9050828103608084015261368f8187612d8f565b90506001600160a01b03851660a084015282810360c084015280845180835260208301915060208160051b8401016020870160005b838110156137c857601f198087850301865282516136e38582516131d4565b6020810151608060208701526136fc6080870182612f9f565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561379157858203880184528451805180845260209182019184019060005b818110156137795783516008811061376557613765612dbb565b83526020938401939092019160010161374b565b50506020968701969590950194925050600101613729565b50606086015196506137a760608b018815159052565b809950505050505050506020820191506020850194506001810190506136c4565b50909d9c50505050505050505050505050565b6000602082840312156137ed57600080fd5b81516109c48161331c565b60408152600061380b6040830185612d8f565b90508260208301529392505050565b8082018082111561069e5761069e613611565b601f82111561265957600081815260208120601f850160051c810160208610156138545750805b601f850160051c820191505b8181101561387357828155600101613860565b505050505050565b815167ffffffffffffffff81111561389557613895612c56565b6138a9816138a384546135a8565b8461382d565b602080601f8311600181146138de57600084156138c65750858301515b600019600386901b1c1916600185901b178555613873565b600085815260208120601f198616915b8281101561390d578886015182559484019460019091019084016138ee565b508582101561392b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60808152600061394e6080830187612d8f565b90506001600160a01b03808616602084015261396d6040840186612dd1565b80841660608401525095945050505050565b634e487b7160e01b600052603260045260246000fd5b60008083546139a3816135a8565b600182811680156139bb57600181146139d0576139ff565b60ff19841687528215158302870194506139ff565b8760005260208060002060005b858110156139f65781548a8201529084019082016139dd565b50505082870194505b50929695505050505050565b600060018201613a1d57613a1d613611565b5060010190565b818103613a2f575050565b613a3982546135a8565b67ffffffffffffffff811115613a5157613a51612c56565b613a5f816138a384546135a8565b6000601f821160018114613a935760008315613a7b5750848201545b600019600385901b1c1916600184901b178455613af8565b600085815260209020601f19841690600086815260209020845b83811015613acd5782860154825560019586019590910190602001613aad565b5085831015613aeb5781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b60008351613b27818460208801612d6b565b835190830190613b3b818360208801612d6b565b0194935050505056fea2646970667358221220eabb8e05617bddb4fb1905fe5c9ae7b8114b6c71752e7e9c281ba6958881528064736f6c6343000814003360806040523480156200001157600080fd5b5060405162001d2b38038062001d2b8339810160408190526200003491620001b1565b6040518060400160405280600b81526020016a29a0aa2827232a37b5b2b760a91b8152506040518060400160405280600781526020016614d0551413919560ca1b815250816001908162000089919062000288565b50600262000098828262000288565b505050620000cd7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e826200010260201b60201c565b50620000fa7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f8262000102565b505062000354565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a7576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200015e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001ab565b5060005b92915050565b600060208284031215620001c457600080fd5b81516001600160a01b0381168114620001dc57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020e57607f821691505b6020821081036200022f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028357600081815260208120601f850160051c810160208610156200025e5750805b601f850160051c820191505b818110156200027f578281556001016200026a565b5050505b505050565b81516001600160401b03811115620002a457620002a4620001e3565b620002bc81620002b58454620001f9565b8462000235565b602080601f831160018114620002f45760008415620002db5750858301515b600019600386901b1c1916600185901b1785556200027f565b600085815260208120601f198616915b82811015620003255788860151825594840194600190910190840162000304565b5085821015620003445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6119c780620003646000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b5bfddea116100a2578063d547741f11610071578063d547741f146104a5578063e58378bb146104b8578063e985e9c5146104df578063ea1340711461051b57600080fd5b8063b5bfddea14610445578063b88d4fde1461046c578063be7604881461047f578063c87b56dd1461049257600080fd5b806395d89b41116100de57806395d89b411461040f578063a217fddf14610417578063a22cb4651461041f578063a5e99b8e1461043257600080fd5b806370a08231146103b25780637750c9f01461038c5780638d944fd9146103c557806391d14854146103d857600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e1461036657806342966c681461037957806359508f8f1461038c5780636352211e1461039f57600080fd5b80632f2ff15d1461031a57806336568abe1461032d5780633ae9449d1461034057806340c10f191461035357600080fd5b8063150b7a02116101c3578063150b7a021461027357806323b872dd146102c3578063248a9ca3146102d65780632a16cca41461030757600080fd5b806301ffc9a7146101f557806306fdde031461021e578063081812fc14610233578063095ea7b31461025e575b600080fd5b610209610203366004611580565b50600090565b60405190151581526020015b60405180910390f35b61022661052e565b60405161021591906115ed565b610246610241366004611600565b6105c0565b6040516001600160a01b039091168152602001610215565b61027161026c366004611635565b6105eb565b005b61029261028136600461165f565b630a85bd0160e11b95945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b6102716102d13660046116fa565b6105fa565b6102f96102e4366004611600565b60009081526020819052604090206001015490565b604051908152602001610215565b610209610315366004611635565b6106a3565b610271610328366004611736565b61071e565b61027161033b366004611736565b610743565b6102f961034e366004611762565b610794565b610209610361366004611635565b6107a7565b6102716103743660046116fa565b6107e7565b610209610387366004611600565b610802565b61020961039a3660046116fa565b610917565b6102466103ad366004611600565b610924565b6102f96103c0366004611762565b61092f565b6102096103d3366004611635565b610990565b6102096103e6366004611736565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102266109ea565b6102f9600081565b61027161042d36600461177d565b6109f9565b610209610440366004611762565b610a04565b6102f97f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61027161047a3660046117cf565b610a5a565b61020961048d366004611635565b610a71565b6102266104a0366004611600565b610a8f565b6102716104b3366004611736565b610b03565b6102f97fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b6102096104ed3660046118ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b610209610529366004611762565b610b28565b60606001805461053d906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906118d5565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b60006105cb82610bad565b506000828152600560205260409020546001600160a01b03165b92915050565b6105f6828233610be6565b5050565b6001600160a01b03821661062957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610636838333610bf3565b9050836001600160a01b0316816001600160a01b03161461069d576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610620565b50505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6106cf81610cf9565b60006106da846105c0565b9050806001600160a01b0316856001600160a01b03161480610715575061070084610924565b6001600160a01b0316856001600160a01b0316145b95945050505050565b60008281526020819052604090206001015461073981610cf9565b61069d8383610d06565b6001600160a01b0381163314610785576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078f8282610db0565b505050565b6000806107a08361092f565b9392505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6107d381610cf9565b6107dd8484610e33565b5060019392505050565b61078f83838360405180602001604052806000815250610a5a565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61082e81610cf9565b33600061083a856105c0565b9050806001600160a01b0316826001600160a01b03161480610875575061086085610924565b6001600160a01b0316826001600160a01b0316145b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616c6c6572206973206e6f7420617070726f76656420746f206f706572617460448201527f65206f6e207468697320746f6b656e00000000000000000000000000000000006064820152608401610620565b61090a85610e4d565b6001935050505b50919050565b60006107dd8484846107e7565b60006105e582610bad565b60006001600160a01b038216610974576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b506001600160a01b031660009081526004602052604090205490565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6109bc81610cf9565b6000838152600360205260409020546001600160a01b03166109df818686610e88565b506001949350505050565b60606002805461053d906118d5565b6105f6338383610f05565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e610a3081610cf9565b6107dd7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610d06565b610a658484846105fa565b61069d84848484610fbd565b6000610a86610a7f83610924565b84846107e7565b50600192915050565b6060610a9a82610bad565b506000610ab260408051602081019091526000815290565b90506000815111610ad257604051806020016040528060008152506107a0565b80610adc846110fe565b604051602001610aed929190611909565b6040516020818303038152906040529392505050565b600082815260208190526040902060010154610b1e81610cf9565b61069d8383610db0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff1615610b7057506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6000818152600360205260408120546001600160a01b0316806105e557604051637e27328960e01b815260048101849052602401610620565b61078f838383600161119e565b6000828152600360205260408120546001600160a01b0390811690831615610c2057610c20818486610e88565b6001600160a01b03811615610c5e57610c3d60008560008061119e565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610c8d576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610d0381336112e9565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610da8576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610d603390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e5565b5060006105e5565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610da8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e5565b6105f6828260405180602001604052806000815250611355565b6000610e5c6000836000610bf3565b90506001600160a01b0381166105f657604051637e27328960e01b815260048101839052602401610620565b610e9383838361136c565b61078f576001600160a01b038316610ec157604051637e27328960e01b815260048101829052602401610620565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610620565b6001600160a01b038216610f50576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610fff903390889087908790600401611938565b6020604051808303816000875af192505050801561103a575060408051601f3d908101601f1916820190925261103791810190611974565b60015b6110a3573d808015611068576040519150601f19603f3d011682016040523d82523d6000602084013e61106d565b606091505b50805160000361109b57604051633250574960e11b81526001600160a01b0385166004820152602401610620565b805181602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116630a85bd0160e11b146110f757604051633250574960e11b81526001600160a01b0385166004820152602401610620565b5050505050565b6060600061110b836113f2565b600101905060008167ffffffffffffffff81111561112b5761112b6117b9565b6040519080825280601f01601f191660200182016040528015611155576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461115f57509392505050565b80806111b257506001600160a01b03821615155b156112ac5760006111c284610bad565b90506001600160a01b038316158015906111ee5750826001600160a01b0316816001600160a01b031614155b801561122057506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15611262576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610620565b81156112aa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166105f6576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610620565b61135f83836114d4565b61078f6000848484610fbd565b60006001600160a01b038316158015906113ea5750826001600160a01b0316846001600160a01b031614806113c657506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806113ea57506000828152600560205260409020546001600160a01b038481169116145b949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061143b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611467576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061148557662386f26fc10000830492506010015b6305f5e100831061149d576305f5e100830492506008015b61271083106114b157612710830492506004015b606483106114c3576064830492506002015b600a83106105e55760010192915050565b6001600160a01b0382166114fe57604051633250574960e11b815260006004820152602401610620565b600061150c83836000610bf3565b90506001600160a01b0381161561078f576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0357600080fd5b60006020828403121561159257600080fd5b81356107a081611552565b60005b838110156115b85781810151838201526020016115a0565b50506000910152565b600081518084526115d981602086016020860161159d565b601f01601f19169290920160200192915050565b6020815260006107a060208301846115c1565b60006020828403121561161257600080fd5b5035919050565b80356001600160a01b038116811461163057600080fd5b919050565b6000806040838503121561164857600080fd5b61165183611619565b946020939093013593505050565b60008060008060006080868803121561167757600080fd5b61168086611619565b945061168e60208701611619565b935060408601359250606086013567ffffffffffffffff808211156116b257600080fd5b818801915088601f8301126116c657600080fd5b8135818111156116d557600080fd5b8960208285010111156116e757600080fd5b9699959850939650602001949392505050565b60008060006060848603121561170f57600080fd5b61171884611619565b925061172660208501611619565b9150604084013590509250925092565b6000806040838503121561174957600080fd5b8235915061175960208401611619565b90509250929050565b60006020828403121561177457600080fd5b6107a082611619565b6000806040838503121561179057600080fd5b61179983611619565b9150602083013580151581146117ae57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156117e557600080fd5b6117ee85611619565b93506117fc60208601611619565b925060408501359150606085013567ffffffffffffffff8082111561182057600080fd5b818701915087601f83011261183457600080fd5b813581811115611846576118466117b9565b604051601f8201601f19908116603f0116810190838211818310171561186e5761186e6117b9565b816040528281528a602084870101111561188757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118be57600080fd5b6118c783611619565b915061175960208401611619565b600181811c908216806118e957607f821691505b60208210810361091157634e487b7160e01b600052602260045260246000fd5b6000835161191b81846020880161159d565b83519083019061192f81836020880161159d565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261196a60808301846115c1565b9695505050505050565b60006020828403121561198657600080fd5b81516107a08161155256fea2646970667358221220abee452498648d1ffac387224ce17506caa4559a95b6e7024afbc933aca643bc64736f6c63430008140033546f6b656e2073686f756c64206e6f74206578697374206265666f7265207772617070696e67a264697066735822122034e1a654928be764b09df7f4acf7d257865440ad95549263cb70f0c2ac627a7064736f6c63430008140033","sourceMap":"425:7619:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1178:2151;;;:::i;:::-;;2161:134:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3335:148:35;;;:::i;2930:133:20:-;;;:::i;2631:141::-;;;:::i;469:38:35:-;;;;;-1:-1:-1;;;;;469:38:35;;;;;;-1:-1:-1;;;;;1030:55:36;;;1012:74;;1000:2;985:18;469:38:35;866:226:36;6972:279:35;;;:::i;2447:178:20:-;;;:::i;:::-;;;;;;;:::i;3710:439:35:-;;;:::i;2301:140:20:-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;4562:316:35:-;;;:::i;1866:141:20:-;;;:::i;7257:492:35:-;;;:::i;1819:584:14:-;;;:::i;:::-;;;4340:14:36;;4333:22;4315:41;;4303:2;4288:18;1819:584:14;4175:187:36;3489:215:35;;;:::i;6033:547::-;;;:::i;4155:401::-;;;:::i;7755:287::-;;;:::i;4884:606::-;;;:::i;2013:142:20:-;;;:::i;5496:531:35:-;;;:::i;513:66::-;;;;;-1:-1:-1;;;;;513:66:35;;;6586:380;;;:::i;1572:26:14:-;;;;;;;;;1178:2151:35;1262:4;1230:38;;;;;:::i;:::-;-1:-1:-1;;;;;1030:55:36;;;1012:74;;1000:2;985:18;1230:38:35;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1212:15:35;:56;;-1:-1:-1;;1212:56:35;-1:-1:-1;;;;;1212:56:35;;;;;;1314:18;;1290:43;;1314:18;;;1290:43;;;:::i;:::-;-1:-1:-1;;;;;1030:55:36;;;1012:74;;1000:2;985:18;1290:43:35;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1278:9:35;:55;;-1:-1:-1;;1278:55:35;-1:-1:-1;;;;;1278:55:35;;;;;;;;;;1344:16;:54;;-1:-1:-1;1344:54:35;;;;-1:-1:-1;1344:54:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1408:78:35;;;;;;;;;:13;;:78;1428:13;1408:78;;;;1443:14;1408:78;;;;1459:25;1408:78;;;;;;;;;-1:-1:-1;1408:78:35;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1531:79:35;;;;;;;;1552:20;1531:79;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1531:79:35;;;;;;-1:-1:-1;1531:79:35;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1590:13;1531:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1531:79:35;;;-1:-1:-1;1605:4:35;1531:79;;;;;;;1620:10;:21;;;;;;;1531:79;1620:21;;;;;;;;;;;;;;1496:114;;-1:-1:-1;1496:114:35;;1620:21;;;;-1:-1:-1;;1620:21:35;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;1620:21:35;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1620:21:35;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1620:21:35;;;;;;;;;;;;-1:-1:-1;;1620:21:35;;;;;;;;;;1652:18;:58;;-1:-1:-1;1652:58:35;;;;-1:-1:-1;1652:58:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1720:80:35;;;;;;;;;:15;;:80;1742:14;1720:80;;;;1758:13;1720:80;;;;1773:25;1720:80;;;;;;;;;-1:-1:-1;1720:80:35;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1847:85:35;;;;;;;;;1810:34;;1847:85;1868:22;1847:85;;;;1891:18;1847:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1910:15;1847:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1847:85:35;;;-1:-1:-1;1927:4:35;1847:85;;;;;;;1942:10;:23;;;;;;;1847:85;1942:23;;;;;;;;;;;;;;1810:122;;-1:-1:-1;1810:122:35;;1942:23;;;;-1:-1:-1;;1942:23:35;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;1942:23:35;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1942:23:35;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1942:23:35;;;;;;;;;;;;-1:-1:-1;;1942:23:35;;;;;;;;;;1976:16;:46;;-1:-1:-1;1976:46:35;;;;-1:-1:-1;1976:46:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2032:63:35;;;;;;;;;2052:14;2032:63;;2068:25;2032:63;;;;:13;:63;;;;;;;-1:-1:-1;2032:63:35;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2140:79:35;;;;;;;;;2105:32;;2140:79;2105:32;2140:79;;;;2182:16;2140:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2199:13;2140:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2140:79:35;;;-1:-1:-1;2214:4:35;2140:79;;;;;;;2229:10;:21;;;;;;;2140:79;2229:21;;;;;;;;;;;;;;2105:114;;-1:-1:-1;2105:114:35;;2229:21;;;;-1:-1:-1;;2229:21:35;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2229:21:35;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2229:21:35;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2229:21:35;;;;;;;;;;;;-1:-1:-1;;2229:21:35;;;;;;;;;;2261:16;:38;;-1:-1:-1;2261:38:35;;;;-1:-1:-1;2261:38:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2309:47:35;;;;;;;;;2329:25;2309:47;;:13;:47;;;;;;;;-1:-1:-1;2309:47:35;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2401:79:35;;;;;;;;;2366:32;;2401:79;2422:20;2401:79;;;;2443:16;2401:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2460:13;2401:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2401:79:35;;;-1:-1:-1;2475:4:35;2401:79;;;;;;;2490:10;:21;;;;;;;2401:79;2490:21;;;;;;;;;;;;;;2366:114;;-1:-1:-1;2366:114:35;;2490:21;;;;-1:-1:-1;;2490:21:35;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2490:21:35;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2490:21:35;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2490:21:35;;;;;;;;;;;;-1:-1:-1;;2490:21:35;;;;;;;;;;2522:18;:50;;-1:-1:-1;2522:50:35;;;;-1:-1:-1;2522:50:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2582:67:35;;;;;;;;;2604:16;2582:67;;2622:25;2582:67;;;;:15;:67;;;;;;;-1:-1:-1;2582:67:35;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2696:85:35;;;;;;;;;2659:34;;2696:85;2717:22;2696:85;;;;2740:18;2696:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2759:15;2696:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2696:85:35;;;-1:-1:-1;2776:4:35;2696:85;;;;;;;2791:10;:23;;;;;;;2696:85;2791:23;;;;;;;;;;;;;;2659:122;;-1:-1:-1;2659:122:35;;2791:23;;;;-1:-1:-1;;2791:23:35;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2791:23:35;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2791:23:35;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2791:23:35;;;;;;;;;;;;-1:-1:-1;;2791:23:35;;;;;;;;;;2825:19;:52;;-1:-1:-1;2825:52:35;;;;-1:-1:-1;2825:52:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2887:65:35;;;;;;;;;2910:13;2887:65;;2925:25;2887:65;;;;:16;:65;;;;;;;-1:-1:-1;2887:65:35;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3000:88:35;;;;;;;;;2962:35;;3000:88;3021:23;3000:88;;;;3045:19;3000:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3065:16;3000:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3000:88:35;;;-1:-1:-1;3083:4:35;3000:88;;;;;;;3098:10;:24;;;;;;;3000:88;3098:24;;;;;;;;;;;;;;2962:126;;-1:-1:-1;2962:126:35;;3098:24;;;;-1:-1:-1;;3098:24:35;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;3098:24:35;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3098:24:35;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3098:24:35;;;;;;;;;;;;-1:-1:-1;;3098:24:35;;;;;;;;;;3147:18;;3133:33;;;;;-1:-1:-1;;;;;3147:18:35;;;3133:33;;;1012:74:36;3133:13:35;;;;985:18:36;;3133:33:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3176:9:35;;3210:15;;3176:51;;;;;-1:-1:-1;;;;;3210:15:35;;;3176:51;;;1012:74:36;3176:9:35;;;-1:-1:-1;3176:25:35;;-1:-1:-1;985:18:36;;3176:51:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3248:9:35;;3280:15;;3248:49;;;;;-1:-1:-1;;;;;3280:15:35;;;3248:49;;;1012:74:36;3237:61:35;;3248:9;;;;;:23;;985:18:36;;3248:49:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3237:10;:61::i;:::-;317:28:15;309:37;;-1:-1:-1;;;;;3308:12:35;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1202:2127;;;;;;1178:2151::o;2161:134:20:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:20;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;3335:148:35:-;3395:9;;:16;;;-1:-1:-1;;;3395:16:35;;;;3386:41;;-1:-1:-1;;;;;3395:9:35;;:14;;:16;;;;;:9;;:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3395:16:35;;;;;;;;;;;;:::i;:::-;3386:41;;;;;;;;;;;;;;;;;:8;:41::i;:::-;3446:9;;:18;;;-1:-1:-1;;;3446:18:35;;;;3437:39;;-1:-1:-1;;;;;3446:9:35;;:16;;:18;;;;;:9;;:18;;;;;;;:9;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3446:18:35;;;;;;;;;;;;:::i;:::-;3437:39;;;;;;;;;;;;;;;;;:8;:39::i;:::-;3335:148::o;2930:133:20:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:20;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:20;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;6972:279:35:-;7031:15;;7054:9;;:16;;;-1:-1:-1;;;7054:16:35;;;;-1:-1:-1;;;;;7031:15:35;;;;:22;;7054:9;;:14;;:16;;;;;7031:15;;7054:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7054:16:35;;;;;;;;;;;;:::i;:::-;7031:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7031:40:35;;;;;;;;-1:-1:-1;;7031:40:35;;;;;;;;;;;;:::i;:::-;;;7027:218;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7152:37;3335:148::o;7027:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7197:48;3335:148::o;7027:218::-;;;;;;7197:48;3335:148::o;7027:218::-;7111:1;7110:2;7102:32;;;;;;;10350:2:36;7102:32:35;;;10332:21:36;10389:2;10369:18;;;10362:30;10428:19;10408:18;;;10401:47;10465:18;;7102:32:35;;;;;;;2447:178:20;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;3710:439:35:-;3747:15;;3768:9;;:16;;;-1:-1:-1;;;3768:16:35;;;;-1:-1:-1;;;;;3747:15:35;;;;:20;;3768:9;;:14;;:16;;;;;3747:15;;3768:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3768:16:35;;;;;;;;;;;;:::i;:::-;3794:9;;3824:16;;;-1:-1:-1;;;3824:16:35;;;;-1:-1:-1;;;;;3794:9:35;;;;3806:16;;3794:9;;3824:14;;:16;;;;;3794:9;;3824:16;;;;;;;;3794:9;3824:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3824:16:35;;;;;;;;;;;;:::i;:::-;3859:4;;3747:130;;-1:-1:-1;;;;;;3747:130:35;;;;;;;;;;;;;-1:-1:-1;;;;;3859:4:35;;3866:10;;3747:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3916:15:35;;3941:9;;:16;;;-1:-1:-1;;;3941:16:35;;;;3887:26;;-1:-1:-1;;;;;3916:15:35;;;;:24;;3941:9;;;:14;;:16;;;;;3887:26;;3941:16;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3941:16:35;;;;;;;;;;;;:::i;:::-;3916:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3916:42:35;;;;;;;;;;;;:::i;:::-;3887:71;;3968:81;3977:13;:29;;;4016:9;;;;;;;;;-1:-1:-1;;;;;4016:9:35;3968:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;4068:15;;:33;;;;;;;;4059:83;;-1:-1:-1;;;;;4068:15:35;;:31;;:33;;;;;:15;;:33;;;;;;;:15;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4068:33:35;;;;;;;;;;;;:::i;:::-;4102:1;4068:36;;;;;;;;:::i;:::-;;;;;;;4106:9;;;;;;;;;-1:-1:-1;;;;;4106:9:35;-1:-1:-1;;;;;4106:14:35;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4106:16:35;;;;;;;;;;;;:::i;:::-;4059:83;;;;;;;;;;;;;;;;;:8;:83::i;2301:140:20:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4562:316:35;4599:15;;4620:9;;:16;;;-1:-1:-1;;;4620:16:35;;;;-1:-1:-1;;;;;4599:15:35;;;;:20;;4620:9;;:14;;:16;;;;;4599:15;;4620:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4620:16:35;;;;;;;;;;;;:::i;:::-;4646:9;;4676:16;;;-1:-1:-1;;;4676:16:35;;;;-1:-1:-1;;;;;4646:9:35;;;;4658:16;;4646:9;;4676:14;;:16;;;;;4646:9;;4676:16;;;;;;;;4646:9;4676:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4676:16:35;;;;;;;;;;;;:::i;:::-;4711:4;;4599:130;;-1:-1:-1;;;;;;4599:130:35;;;;;;;;;;;;;-1:-1:-1;;;;;4711:4:35;;4718:10;;4599:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4739:15:35;;4760:9;;:16;;;-1:-1:-1;;;4760:16:35;;;;-1:-1:-1;;;;;4739:15:35;;;;:20;;4760:9;;:14;;:16;;;;;4739:15;;4760:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4760:16:35;;;;;;;;;;;;:::i;:::-;4778:4;4739:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4802:9:35;;4830:15;;4802:45;;-1:-1:-1;;;4802:45:35;;-1:-1:-1;;;;;4830:15:35;;;4802:45;;;1012:74:36;4793:78:35;;4802:9;;;;;:19;;985:18:36;;4802:45:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4849:1;4793:78;;;;;;;;;;;;;;;;;:8;:78::i;1866:141:20:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7257:492:35;7316:15;;7337:9;;:16;;;-1:-1:-1;;;7337:16:35;;;;-1:-1:-1;;;;;7316:15:35;;;;:20;;7337:9;;:14;;:16;;;;;7316:15;;7337:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7337:16:35;;;;;;;;;;;;:::i;:::-;7363:9;;7410:16;;;-1:-1:-1;;;7410:16:35;;;;-1:-1:-1;;;;;7363:9:35;;;;7375:33;;7363:9;;7410:14;;:16;;;;;7363:9;;7410:16;;;;;;;;7363:9;7410:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7410:16:35;;;;;;;;;;;;:::i;:::-;7445:4;;7316:147;;-1:-1:-1;;;;;;7316:147:35;;;;;;;;;;;;;-1:-1:-1;;;;;7445:4:35;;7452:10;;7316:147;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7472:15:35;;7493:9;;:16;;;-1:-1:-1;;;7493:16:35;;;;-1:-1:-1;;;;;7472:15:35;;;;:20;;7493:9;;:14;;:16;;;;;7472:15;;7493:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7493:16:35;;;;;;;;;;;;:::i;:::-;7511:4;7472:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7529:15:35;;7552:9;;:16;;;-1:-1:-1;;;7552:16:35;;;;-1:-1:-1;;;;;7529:15:35;;;;:22;;7552:9;;:14;;:16;;;;;7529:15;;7552:16;;;;;;;:9;:16;;;;;;;;;;;;;;1819:584:14;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:14;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;29647:74:36;;;-1:-1:-1;;;29737:18:36;;;29730:34;2196:43:14;;;;;;;;;29620:18:36;;;2196:43:14;;;-1:-1:-1;;1671:64:14;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:14;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:14:o;1869:528::-;1819:584;:::o;3489:215:35:-;3558:15;;3583:9;;:18;;;-1:-1:-1;;;3583:18:35;;;;3537;;-1:-1:-1;;;;;3558:15:35;;;;:24;;3583:9;;;:16;;:18;;;;;3537;;3583;;;;;;;;:9;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3583:18:35;;;;;;;;;;;;:::i;:::-;3558:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3558:44:35;;;;;;;;;;;;:::i;:::-;3537:65;;3612:85;3621:5;:21;;;3652:1;3612:85;;;;;;;;;;;;;;;;;:8;:85::i;6033:547::-;6072:15;;6093:9;;:16;;;-1:-1:-1;;;6093:16:35;;;;-1:-1:-1;;;;;6072:15:35;;;;:20;;6093:9;;:14;;:16;;;;;6072:15;;6093:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6093:16:35;;;;;;;;;;;;:::i;:::-;6119:9;;6149:16;;;-1:-1:-1;;;6149:16:35;;;;-1:-1:-1;;;;;6119:9:35;;;;6131:16;;6119:9;;6149:14;;:16;;;;;6119:9;;6149:16;;;;;;;;6119:9;6149:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6149:16:35;;;;;;;;;;;;:::i;:::-;6184:4;;6072:130;;-1:-1:-1;;;;;;6072:130:35;;;;;;;;;;;;;-1:-1:-1;;;;;6184:4:35;;6191:10;;6072:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6229:15:35;;6212:34;;-1:-1:-1;;;6212:34:35;;-1:-1:-1;;;;;6229:15:35;;;6212:34;;;1012:74:36;6212:8:35;;;;985:18:36;;6212:34:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6256:9:35;;6279:4;;6256:35;;-1:-1:-1;;;6256:35:35;;-1:-1:-1;;;;;6279:4:35;;;6256:35;;;29647:74:36;6286:4:35;29737:18:36;;;29730:34;6256:9:35;;;-1:-1:-1;6256:14:35;;-1:-1:-1;29620:18:36;;6256:35:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6310:4:35;;6301:14;;-1:-1:-1;;;6301:14:35;;-1:-1:-1;;;;;6310:4:35;;;6301:14;;;1012:74:36;6301:8:35;;;;985:18:36;;6301:14:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6325:9:35;;6351:15;;6325:49;;-1:-1:-1;;;6325:49:35;;-1:-1:-1;;;;;6351:15:35;;;6325:49;;;29647:74:36;6369:4:35;29737:18:36;;;29730:34;6325:9:35;;;-1:-1:-1;6325:17:35;;-1:-1:-1;29620:18:36;;6325:49:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6384:15:35;;6405:9;;:16;;;-1:-1:-1;;;6405:16:35;;;;-1:-1:-1;;;;;6384:15:35;;;;-1:-1:-1;6384:20:35;;-1:-1:-1;6405:9:35;;;;;:14;;:16;;;;;6384:15;;6405:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6405:16:35;;;;;;;;;;;;:::i;:::-;6423:4;6384:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6438:15:35;;6461:9;;:16;;;-1:-1:-1;;;6461:16:35;;;;-1:-1:-1;;;;;6438:15:35;;;;:22;;6461:9;;:14;;:16;;;;;6438:15;;6461:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6461:16:35;;;;;;;;;;;;:::i;:::-;6479:4;6438:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6503:9:35;;6531:4;;6503:34;;-1:-1:-1;;;6503:34:35;;-1:-1:-1;;;;;6531:4:35;;;6503:34;;;1012:74:36;6494:79:35;;6503:9;;;;;:19;;985:18:36;;6503:34:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6539:1;6494:79;;;;;;;;;;;;;;;;;:8;:79::i;4155:401::-;4194:15;;4215:9;;:16;;;-1:-1:-1;;;4215:16:35;;;;-1:-1:-1;;;;;4194:15:35;;;;:20;;4215:9;;:14;;:16;;;;;4194:15;;4215:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4215:16:35;;;;;;;;;;;;:::i;:::-;4241:9;;4271:16;;;-1:-1:-1;;;4271:16:35;;;;-1:-1:-1;;;;;4241:9:35;;;;4253:16;;4241:9;;4271:14;;:16;;;;;4241:9;;4271:16;;;;;;;;4241:9;4271:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4271:16:35;;;;;;;;;;;;:::i;:::-;4306:4;;4194:130;;-1:-1:-1;;;;;;4194:130:35;;;;;;;;;;;;;-1:-1:-1;;;;;4306:4:35;;4313:10;;4194:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4334:15:35;;4357:9;;:16;;;-1:-1:-1;;;4357:16:35;;;;-1:-1:-1;;;;;4334:15:35;;;;:22;;4357:9;;:14;;:16;;;;;4334:15;;4357:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4357:16:35;;;;;;;;;;;;:::i;:::-;4334:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4413:15:35;;4438:9;;:16;;;-1:-1:-1;;;4438:16:35;;;;4384:26;;-1:-1:-1;;;;;4413:15:35;;;;:24;;4438:9;;;:14;;:16;;;;;4384:26;;4438:16;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4438:16:35;;;;;;;;;;;;:::i;:::-;4413:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4413:42:35;;;;;;;;;;;;:::i;:::-;4384:71;;4465:84;4477:13;:29;;;4516:9;;;;;;;;;-1:-1:-1;;;;;4516:9:35;4465:84;;;;;;;;;;;;;;;;;:11;:84::i;7755:287::-;7812:15;;7833:9;;:16;;;-1:-1:-1;;;7833:16:35;;;;-1:-1:-1;;;;;7812:15:35;;;;:20;;7833:9;;:14;;:16;;;;;7812:15;;7833:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7833:16:35;;;;;;;;;;;;:::i;:::-;7851:4;7812:44;;;;;;;;;;;;;;;;:::i;4884:606::-;4921:15;;4942:9;;:16;;;-1:-1:-1;;;4942:16:35;;;;-1:-1:-1;;;;;4921:15:35;;;;:20;;4942:9;;:14;;:16;;;;;4921:15;;4942:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4942:16:35;;;;;;;;;;;;:::i;:::-;4968:9;;4998:16;;;-1:-1:-1;;;4998:16:35;;;;-1:-1:-1;;;;;4968:9:35;;;;4980:16;;4968:9;;4998:14;;:16;;;;;4968:9;;4998:16;;;;;;;;4968:9;4998:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4998:16:35;;;;;;;;;;;;:::i;:::-;5033:4;;4921:130;;-1:-1:-1;;;;;;4921:130:35;;;;;;;;;;;;;-1:-1:-1;;;;;5033:4:35;;5040:10;;4921:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5061:15:35;;5082:9;;:16;;;-1:-1:-1;;;5082:16:35;;;;-1:-1:-1;;;;;5061:15:35;;;;:20;;5082:9;;:14;;:16;;;;;5061:15;;5082:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5082:16:35;;;;;;;;;;;;:::i;:::-;5100:4;5061:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5124:9:35;;5152:15;;5124:45;;-1:-1:-1;;;5124:45:35;;-1:-1:-1;;;;;5152:15:35;;;5124:45;;;1012:74:36;5115:79:35;;5124:9;;;;;:19;;985:18:36;;5124:45:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5171:1;5115:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;5221:15;;5204:34;;-1:-1:-1;;;5204:34:35;;-1:-1:-1;;;;;5221:15:35;;;5204:34;;;1012:74:36;5204:8:35;;;;985:18:36;;5204:34:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5248:9:35;;5274:15;;5248:49;;-1:-1:-1;;;5248:49:35;;-1:-1:-1;;;;;5274:15:35;;;5248:49;;;29647:74:36;5292:4:35;29737:18:36;;;29730:34;5248:9:35;;;-1:-1:-1;5248:17:35;;-1:-1:-1;29620:18:36;;5248:49:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5324:15:35;;5307:34;;-1:-1:-1;;;5307:34:35;;-1:-1:-1;;;;;5324:15:35;;;5307:34;;;1012:74:36;5307:8:35;;-1:-1:-1;5307:8:35;;-1:-1:-1;985:18:36;;5307:34:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5351:15:35;;5372:9;;:16;;;-1:-1:-1;;;5372:16:35;;;;-1:-1:-1;;;;;5351:15:35;;;;-1:-1:-1;5351:20:35;;-1:-1:-1;5372:9:35;;;;;:14;;:16;;;;;5351:15;;5372:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5372:16:35;;;;;;;;;;;;:::i;:::-;5390:4;5351:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5414:9:35;;5442:15;;5414:45;;-1:-1:-1;;;5414:45:35;;-1:-1:-1;;;;;5442:15:35;;;5414:45;;;1012:74:36;5405:78:35;;5414:9;;;;;:19;;985:18:36;;5414:45:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5461:1;5405:78;;;;;;;;;;;;;;;;;:8;:78::i;2013:142:20:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:20;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;5496:531:35:-;5533:15;;5554:9;;:16;;;-1:-1:-1;;;5554:16:35;;;;-1:-1:-1;;;;;5533:15:35;;;;:20;;5554:9;;:14;;:16;;;;;5533:15;;5554:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5554:16:35;;;;;;;;;;;;:::i;:::-;5580:9;;5610:16;;;-1:-1:-1;;;5610:16:35;;;;-1:-1:-1;;;;;5580:9:35;;;;5592:16;;5580:9;;5610:14;;:16;;;;;5580:9;;5610:16;;;;;;;;5580:9;5610:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5610:16:35;;;;;;;;;;;;:::i;:::-;5645:4;;5533:130;;-1:-1:-1;;;;;;5533:130:35;;;;;;;;;;;;;-1:-1:-1;;;;;5645:4:35;;5652:10;;5533:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5690:15:35;;5673:34;;-1:-1:-1;;;5673:34:35;;-1:-1:-1;;;;;5690:15:35;;;5673:34;;;1012:74:36;5673:8:35;;;;985:18:36;;5673:34:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5717:9:35;;5740:4;;5717:35;;-1:-1:-1;;;5717:35:35;;-1:-1:-1;;;;;5740:4:35;;;5717:35;;;29647:74:36;5747:4:35;29737:18:36;;;29730:34;5717:9:35;;;-1:-1:-1;5717:14:35;;-1:-1:-1;29620:18:36;;5717:35:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5771:4:35;;5762:14;;-1:-1:-1;;;5762:14:35;;-1:-1:-1;;;;;5771:4:35;;;5762:14;;;1012:74:36;5762:8:35;;;;985:18:36;;5762:14:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5786:9:35;;5812:15;;5786:49;;-1:-1:-1;;;5786:49:35;;-1:-1:-1;;;;;5812:15:35;;;5786:49;;;29647:74:36;5830:4:35;29737:18:36;;;29730:34;5786:9:35;;;-1:-1:-1;5786:17:35;;-1:-1:-1;29620:18:36;;5786:49:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5845:15:35;;5866:9;;:16;;;-1:-1:-1;;;5866:16:35;;;;-1:-1:-1;;;;;5845:15:35;;;;-1:-1:-1;5845:20:35;;-1:-1:-1;5866:9:35;;;;;:14;;:16;;;;;5845:15;;5866:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5866:16:35;;;;;;;;;;;;:::i;:::-;5884:4;5845:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5920:15:35;;5945:9;;:16;;;-1:-1:-1;;;5945:16:35;;;;5899:18;;-1:-1:-1;;;;;5920:15:35;;;;:24;;5945:9;;;:14;;:16;;;;;5899:18;;5945:16;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5945:16:35;;;;;;;;;;;;:::i;:::-;5920:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5920:42:35;;;;;;;;;;;;:::i;:::-;5899:63;;5972:48;5981:5;:12;;;5995:4;5972:48;;;;;;;;;;;;;;;;;:8;:48::i;6586:380::-;6625:15;;6646:9;;:16;;;-1:-1:-1;;;6646:16:35;;;;-1:-1:-1;;;;;6625:15:35;;;;:20;;6646:9;;:14;;:16;;;;;6625:15;;6646:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6646:16:35;;;;;;;;;;;;:::i;:::-;6672:9;;6702:16;;;-1:-1:-1;;;6702:16:35;;;;-1:-1:-1;;;;;6672:9:35;;;;6684:16;;6672:9;;6702:14;;:16;;;;;6672:9;;6702:16;;;;;;;;6672:9;6702:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6702:16:35;;;;;;;;;;;;:::i;:::-;6737:4;;6625:130;;-1:-1:-1;;;;;;6625:130:35;;;;;;;;;;;;;-1:-1:-1;;;;;6737:4:35;;6744:10;;6625:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6765:15:35;;6786:9;;:16;;;-1:-1:-1;;;6786:16:35;;;;-1:-1:-1;;;;;6765:15:35;;;;:20;;6786:9;;:14;;:16;;;;;6765:15;;6786:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6786:16:35;;;;;;;;;;;;:::i;:::-;6804:4;6765:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6819:15:35;;6842:9;;:16;;;-1:-1:-1;;;6842:16:35;;;;-1:-1:-1;;;;;6819:15:35;;;;:22;;6842:9;;:14;;:16;;;;;6819:15;;6842:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6842:16:35;;;;;;;;;;;;:::i;:::-;6868:4;;6819:61;;-1:-1:-1;;;;;;6819:61:35;;;;;;;;;;-1:-1:-1;;;;;6868:4:35;;6875;;6819:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6899:9:35;;6927:4;;6899:34;;-1:-1:-1;;;6899:34:35;;-1:-1:-1;;;;;6927:4:35;;;6899:34;;;1012:74:36;6890:69:35;;6899:9;;;;;:19;;985:18:36;;6899:34:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6935:1;6890:69;;;;;;;;;;;;;;;;;:8;:69::i;3262:157:14:-;3322:9;3317:96;;3352:30;;;;;31751:2:36;31733:21;;;31790:2;31770:18;;;31763:30;31829:25;31824:2;31809:18;;31802:53;31887:2;31872:18;;31549:347;3352:30:14;;;;;;;;3396:6;:4;:6::i;17902:344::-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;32397:2:36;32379:21;;;32436:2;32416:18;;;32409:30;32475:34;32470:2;32455:18;;32448:62;32546:6;32541:2;32526:18;;32519:34;32585:3;32570:19;;32195:400;18062:43:14;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;3904:185::-;3991:1;-1:-1:-1;;;;;3986:6:14;:1;-1:-1:-1;;;;;3986:6:14;;3982:101;;4013:31;4040:3;4013:31;;;;;;:::i;:::-;;;;;;;;4058:14;4067:1;4070;4058:8;:14::i;:::-;3904:185;;;:::o;18251:254::-;18406:1;18389:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18379:30;;;;;;18372:1;18355:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18345:30;;;;;;:64;18341:158;;18430:30;18456:3;18430:30;;;;;;:::i;:::-;;;;;;;;18474:14;18483:1;18486;18474:8;:14::i;5476:178::-;5557:1;5552;:6;5548:100;;5579:30;5605:3;5579:30;;;;;;:::i;:::-;;;;;;;;5623:14;5632:1;5635;5623:8;:14::i;7048:191::-;7138:1;-1:-1:-1;;;;;7133:6:14;:1;-1:-1:-1;;;;;7133:6:14;;7129:104;;7160:31;7187:3;7160:31;;;;;;:::i;:::-;;;;;;;;7205:17;7217:1;7220;7205:11;:17::i;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;34471:74:36;;;-1:-1:-1;;;34561:18:36;;;34554:34;;;;2712:4:14;34604:18:36;;;34597:34;2489:11:14;;1671:64;2586:43;;34444:18:36;;2652:67:14;;;-1:-1:-1;;2652:67:14;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:14;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:14;2820:7;:14;;-1:-1:-1;;2820:14:14;;;;;2409:432::o;3622:277::-;3690:1;-1:-1:-1;;;;;3685:6:14;:1;-1:-1:-1;;;;;3685:6:14;;3681:212;;3712:44;;;;;34844:2:36;34826:21;;;34883:2;34863:18;;;34856:30;34922:34;34917:2;34902:18;;34895:62;-1:-1:-1;;;34988:2:36;34973:18;;34966:35;35033:3;35018:19;;34642:401;3712:44:14;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;5209:262::-;5271:1;5266;:6;5262:203;;5293:41;;;;;36054:2:36;36036:21;;;36093:2;36073:18;;;36066:30;36132:34;36127:2;36112:18;;36105:62;36203:4;36198:2;36183:18;;36176:32;36240:3;36225:19;;35852:398;5293:41:14;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;6763:280::-;6834:1;-1:-1:-1;;;;;6829:6:14;:1;-1:-1:-1;;;;;6829:6:14;;6825:212;;6856:44;;;;;37163:2:36;37145:21;;;37202:2;37182:18;;;37175:30;37241:34;37236:2;37221:18;;37214:62;-1:-1:-1;;;37307:2:36;37292:18;;37285:35;37352:3;37337:19;;36961:401;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;180:681:36:-;351:2;403:21;;;473:13;;376:18;;;495:22;;;322:4;;351:2;574:15;;;;548:2;533:18;;;322:4;617:218;631:6;628:1;625:13;617:218;;;696:13;;-1:-1:-1;;;;;692:62:36;680:75;;810:15;;;;775:12;;;;653:1;646:9;617:218;;;-1:-1:-1;852:3:36;;180:681;-1:-1:-1;;;;;;180:681:36:o;1097:1638::-;1301:4;1330:2;1370;1359:9;1355:18;1400:2;1389:9;1382:21;1423:6;1458;1452:13;1489:6;1481;1474:22;1515:2;1505:12;;1548:2;1537:9;1533:18;1526:25;;1610:2;1600:6;1597:1;1593:14;1582:9;1578:30;1574:39;1648:2;1640:6;1636:15;1669:1;1690;1700:1006;1716:6;1711:3;1708:15;1700:1006;;;1785:22;;;-1:-1:-1;;1781:36:36;1769:49;;1841:13;;1928:9;;-1:-1:-1;;;;;1924:58:36;1909:74;;2022:11;;2016:18;2054:15;;;2047:27;;;2135:19;;1881:15;;;2167:24;;;2257:21;;;;2302:1;;2225:2;2213:15;;;2316:282;2332:8;2327:3;2324:17;2316:282;;;2413:15;;-1:-1:-1;;;;;;2409:88:36;2395:103;;2567:17;;;;2360:1;2351:11;;;;;2524:14;;;;2316:282;;;-1:-1:-1;2684:12:36;;;;2621:5;-1:-1:-1;;;2649:15:36;;;;1742:1;1733:11;1700:1006;;;-1:-1:-1;2723:6:36;;1097:1638;-1:-1:-1;;;;;;;;;1097:1638:36:o;2740:250::-;2825:1;2835:113;2849:6;2846:1;2843:13;2835:113;;;2925:11;;;2919:18;2906:11;;;2899:39;2871:2;2864:10;2835:113;;;-1:-1:-1;;2982:1:36;2964:16;;2957:27;2740:250::o;2995:271::-;3037:3;3075:5;3069:12;3102:6;3097:3;3090:19;3118:76;3187:6;3180:4;3175:3;3171:14;3164:4;3157:5;3153:16;3118:76;:::i;:::-;3248:2;3227:15;-1:-1:-1;;3223:29:36;3214:39;;;;3255:4;3210:50;;2995:271;-1:-1:-1;;2995:271:36:o;3271:803::-;3433:4;3462:2;3502;3491:9;3487:18;3532:2;3521:9;3514:21;3555:6;3590;3584:13;3621:6;3613;3606:22;3659:2;3648:9;3644:18;3637:25;;3721:2;3711:6;3708:1;3704:14;3693:9;3689:30;3685:39;3671:53;;3759:2;3751:6;3747:15;3780:1;3790:255;3804:6;3801:1;3798:13;3790:255;;;3897:2;3893:7;3881:9;3873:6;3869:22;3865:36;3860:3;3853:49;3925:40;3958:6;3949;3943:13;3925:40;:::i;:::-;3915:50;-1:-1:-1;4023:12:36;;;;3988:15;;;;3826:1;3819:9;3790:255;;;-1:-1:-1;4062:6:36;;3271:803;-1:-1:-1;;;;;;;3271:803:36:o;4367:184::-;-1:-1:-1;;;4416:1:36;4409:88;4516:4;4513:1;4506:15;4540:4;4537:1;4530:15;4556:437;4635:1;4631:12;;;;4678;;;4699:61;;4753:4;4745:6;4741:17;4731:27;;4699:61;4806:2;4798:6;4795:14;4775:18;4772:38;4769:218;;-1:-1:-1;;;4840:1:36;4833:88;4944:4;4941:1;4934:15;4972:4;4969:1;4962:15;4769:218;;4556:437;;;:::o;5124:545::-;5226:2;5221:3;5218:11;5215:448;;;5262:1;5287:5;5283:2;5276:17;5332:4;5328:2;5318:19;5402:2;5390:10;5386:19;5383:1;5379:27;5373:4;5369:38;5438:4;5426:10;5423:20;5420:47;;;-1:-1:-1;5461:4:36;5420:47;5516:2;5511:3;5507:12;5504:1;5500:20;5494:4;5490:31;5480:41;;5571:82;5589:2;5582:5;5579:13;5571:82;;;5634:17;;;5615:1;5604:13;5571:82;;;5575:3;;;5124:545;;;:::o;5845:1352::-;5971:3;5965:10;5998:18;5990:6;5987:30;5984:56;;;6020:18;;:::i;:::-;6049:97;6139:6;6099:38;6131:4;6125:11;6099:38;:::i;:::-;6093:4;6049:97;:::i;:::-;6201:4;;6265:2;6254:14;;6282:1;6277:663;;;;6984:1;7001:6;6998:89;;;-1:-1:-1;7053:19:36;;;7047:26;6998:89;-1:-1:-1;;5802:1:36;5798:11;;;5794:24;5790:29;5780:40;5826:1;5822:11;;;5777:57;7100:81;;6247:944;;6277:663;5071:1;5064:14;;;5108:4;5095:18;;-1:-1:-1;;6313:20:36;;;6431:236;6445:7;6442:1;6439:14;6431:236;;;6534:19;;;6528:26;6513:42;;6626:27;;;;6594:1;6582:14;;;;6461:19;;6431:236;;;6435:3;6695:6;6686:7;6683:19;6680:201;;;6756:19;;;6750:26;-1:-1:-1;;6839:1:36;6835:14;;;6851:3;6831:24;6827:37;6823:42;6808:58;6793:74;;6680:201;-1:-1:-1;;;;;6927:1:36;6911:14;;;6907:22;6894:36;;-1:-1:-1;5845:1352:36:o;7202:184::-;-1:-1:-1;;;7251:1:36;7244:88;7351:4;7348:1;7341:15;7375:4;7372:1;7365:15;7391:277;7458:6;7511:2;7499:9;7490:7;7486:23;7482:32;7479:52;;;7527:1;7524;7517:12;7479:52;7559:9;7553:16;7612:5;7605:13;7598:21;7591:5;7588:32;7578:60;;7634:1;7631;7624:12;7578:60;7657:5;7391:277;-1:-1:-1;;;7391:277:36:o;7673:249::-;7783:2;7764:13;;-1:-1:-1;;7760:27:36;7748:40;;7818:18;7803:34;;7839:22;;;7800:62;7797:88;;;7865:18;;:::i;:::-;7901:2;7894:22;-1:-1:-1;;7673:249:36:o;7927:248::-;7994:2;7988:9;8036:4;8024:17;;8071:18;8056:34;;8092:22;;;8053:62;8050:88;;;8118:18;;:::i;:::-;8154:2;8147:22;7927:248;:::o;8180:536::-;8234:5;8287:3;8280:4;8272:6;8268:17;8264:27;8254:55;;8305:1;8302;8295:12;8254:55;8334:6;8328:13;8360:18;8356:2;8353:26;8350:52;;;8382:18;;:::i;:::-;8431:2;8425:9;8443:67;8498:2;8479:13;;-1:-1:-1;;8475:27:36;8504:4;8471:38;8425:9;8443:67;:::i;:::-;8534:2;8526:6;8519:18;8580:3;8573:4;8568:2;8560:6;8556:15;8552:26;8549:35;8546:55;;;8597:1;8594;8587:12;8546:55;8610:76;8683:2;8676:4;8668:6;8664:17;8657:4;8649:6;8645:17;8610:76;:::i;:::-;8704:6;8180:536;-1:-1:-1;;;;8180:536:36:o;8721:337::-;8801:6;8854:2;8842:9;8833:7;8829:23;8825:32;8822:52;;;8870:1;8867;8860:12;8822:52;8903:9;8897:16;8936:18;8928:6;8925:30;8922:50;;;8968:1;8965;8958:12;8922:50;8991:61;9044:7;9035:6;9024:9;9020:22;8991:61;:::i;9063:220::-;9212:2;9201:9;9194:21;9175:4;9232:45;9273:2;9262:9;9258:18;9250:6;9232:45;:::i;9288:179::-;9323:3;9365:1;9347:16;9344:23;9341:120;;;9411:1;9408;9405;9390:23;-1:-1:-1;9448:1:36;9442:8;9437:3;9433:18;9288:179;:::o;9472:671::-;9511:3;9553:4;9535:16;9532:26;9529:39;;;9472:671;:::o;9529:39::-;9595:2;9589:9;-1:-1:-1;;9660:16:36;9656:25;;9653:1;9589:9;9632:50;9711:4;9705:11;9735:16;9770:18;9841:2;9834:4;9826:6;9822:17;9819:25;9814:2;9806:6;9803:14;9800:45;9797:58;;;9848:5;;;;;9472:671;:::o;9797:58::-;9885:6;9879:4;9875:17;9864:28;;9921:3;9915:10;9948:2;9940:6;9937:14;9934:27;;;9954:5;;;;;;9472:671;:::o;9934:27::-;10038:2;10019:16;10013:4;10009:27;10005:36;9998:4;9989:6;9984:3;9980:16;9976:27;9973:69;9970:82;;;10045:5;;;;;;9472:671;:::o;9970:82::-;10061:57;10112:4;10103:6;10095;10091:19;10087:30;10081:4;10061:57;:::i;:::-;-1:-1:-1;10134:3:36;;9472:671;-1:-1:-1;;;;;9472:671:36:o;10635:138::-;10714:1;10707:5;10704:12;10694:46;;10720:18;;:::i;:::-;10749;;10635:138::o;10778:11425::-;10854:3;10892:5;10886:12;10919:6;10914:3;10907:19;10945:4;10986:2;10981:3;10977:12;11011:11;11038;11031:18;;11088:6;11085:1;11081:14;11074:5;11070:26;11058:38;;11115:5;11112:1;11105:16;11157:2;11154:1;11144:16;11178:1;11188:10989;11202:6;11199:1;11196:13;11188:10989;;;11263:16;;;11251:29;;11339:13;;112:19;;;5071:1;5064:14;;;164:4;5095:18;;;155:14;;;;11339:13;11548:3015;11593:8;11588:2;11575:11;11571:20;11568:34;11548:3015;;;11731:8;11725:15;11767:4;11788:45;11827:5;11822:2;11816:4;11812:13;11788:45;:::i;:::-;11850:62;11908:2;11901:5;11897:14;11892:2;11885:4;11882:1;11878:12;11874:21;11850:62;:::i;:::-;11929:63;11988:2;11981:5;11977:14;11972:2;11965:4;11961:2;11957:13;11953:22;11929:63;:::i;:::-;12009;12068:2;12061:5;12057:14;12052:2;12045:4;12041:2;12037:13;12033:22;12009:63;:::i;:::-;12099:3;12119:63;12178:2;12171:5;12167:14;12162:2;12155:4;12151:2;12147:13;12143:22;12119:63;:::i;:::-;12209:3;12229:63;12288:2;12281:5;12277:14;12272:2;12265:4;12261:2;12257:13;12253:22;12229:63;:::i;:::-;12319:3;12339:63;12398:2;12391:5;12387:14;12382:2;12375:4;12371:2;12367:13;12363:22;12339:63;:::i;:::-;12429:3;12449:63;12508:2;12501:5;12497:14;12492:2;12485:4;12481:2;12477:13;12473:22;12449:63;:::i;:::-;12529:64;12588:3;12581:5;12577:15;12572:2;12565:4;12561:2;12557:13;12553:22;12529:64;:::i;:::-;12610;12669:3;12662:5;12658:15;12653:2;12646:4;12642:2;12638:13;12634:22;12610:64;:::i;:::-;12691;12750:3;12743:5;12739:15;12734:2;12727:4;12723:2;12719:13;12715:22;12691:64;:::i;:::-;12772;12831:3;12824:5;12820:15;12815:2;12808:4;12804:2;12800:13;12796:22;12772:64;:::i;:::-;12853;12912:3;12905:5;12901:15;12896:2;12889:4;12885:2;12881:13;12877:22;12853:64;:::i;:::-;12934:65;12994:3;12987:5;12983:15;12978:2;12971:4;12966:3;12962:14;12958:23;12934:65;:::i;:::-;13016;13076:3;13069:5;13065:15;13060:2;13053:4;13048:3;13044:14;13040:23;13016:65;:::i;:::-;13098;13158:3;13151:5;13147:15;13142:2;13135:4;13130:3;13126:14;13122:23;13098:65;:::i;:::-;13180:64;13239:3;13232:5;13228:15;13223:2;13216:4;13212:2;13208:13;13204:22;13180:64;:::i;:::-;13261:65;13321:3;13314:5;13310:15;13305:2;13298:4;13293:3;13289:14;13285:23;13261:65;:::i;:::-;13343;13403:3;13396:5;13392:15;13387:2;13380:4;13375:3;13371:14;13367:23;13343:65;:::i;:::-;13425;13485:3;13478:5;13474:15;13469:2;13462:4;13457:3;13453:14;13449:23;13425:65;:::i;:::-;13507:64;13566:3;13559:5;13555:15;13550:2;13543:4;13539:2;13535:13;13531:22;13507:64;:::i;:::-;13588:65;13648:3;13641:5;13637:15;13632:2;13625:4;13620:3;13616:14;13612:23;13588:65;:::i;:::-;13670;13730:3;13723:5;13719:15;13714:2;13707:4;13702:3;13698:14;13694:23;13670:65;:::i;:::-;13752;13812:3;13805:5;13801:15;13796:2;13789:4;13784:3;13780:14;13776:23;13752:65;:::i;:::-;13834:64;13893:3;13886:5;13882:15;13877:2;13870:4;13866:2;13862:13;13858:22;13834:64;:::i;:::-;13915:65;13975:3;13968:5;13964:15;13959:2;13952:4;13947:3;13943:14;13939:23;13915:65;:::i;:::-;13997;14057:3;14050:5;14046:15;14041:2;14034:4;14029:3;14025:14;14021:23;13997:65;:::i;:::-;14079;14139:3;14132:5;14128:15;14123:2;14116:4;14111:3;14107:14;14103:23;14079:65;:::i;:::-;14161:64;14220:3;14213:5;14209:15;14204:2;14197:4;14193:2;14189:13;14185:22;14161:64;:::i;:::-;;;;;14242:65;14302:3;14295:5;14291:15;14286:2;14279:4;14274:3;14270:14;14266:23;14242:65;:::i;:::-;14324;14384:3;14377:5;14373:15;14368:2;14361:4;14356:3;14352:14;14348:23;14324:65;:::i;:::-;;14406:56;14457:3;14450:5;14446:15;14439:4;14434:3;14430:14;14406:56;:::i;:::-;-1:-1:-1;14499:4:36;14488:16;;;;;14547:1;14533:16;;;;;11648:20;;11548:3015;;;14590:15;;;14621:25;;;14618:213;;;14677:49;14720:5;14713:4;14705:6;14701:17;14677:49;:::i;:::-;14752:14;;;;14815:1;14798:19;14618:213;14863:8;14850:11;14847:25;14844:221;;;14903:57;14954:5;14947:4;14938:6;14935:1;14931:14;14927:25;14903:57;:::i;:::-;14986:14;;;;15049:1;15032:19;14844:221;15097:8;15084:11;15081:25;15078:222;;;15137:58;15189:5;15182:4;15173:6;15169:2;15165:15;15161:26;15137:58;:::i;:::-;15221:14;;;;15284:1;15267:19;15078:222;15332:8;15319:11;15316:25;15313:222;;;15372:58;15424:5;15417:4;15408:6;15404:2;15400:15;15396:26;15372:58;:::i;:::-;15456:14;;;;15519:1;15502:19;15313:222;15567:8;15554:11;15551:25;15548:222;;;15607:58;15659:5;15652:4;15643:6;15639:2;15635:15;15631:26;15607:58;:::i;:::-;15691:14;;;;15754:1;15737:19;15548:222;15802:8;15789:11;15786:25;15783:222;;;15842:58;15894:5;15887:4;15878:6;15874:2;15870:15;15866:26;15842:58;:::i;:::-;15926:14;;;;15989:1;15972:19;15783:222;16037:8;16024:11;16021:25;16018:222;;;16077:58;16129:5;16122:4;16113:6;16109:2;16105:15;16101:26;16077:58;:::i;:::-;16161:14;;;;16224:1;16207:19;16018:222;16272:8;16259:11;16256:25;16253:222;;;16312:58;16364:5;16357:4;16348:6;16344:2;16340:15;16336:26;16312:58;:::i;:::-;16396:14;;;;16459:1;16442:19;16253:222;16507:8;16494:11;16491:25;16488:222;;;16547:58;16599:5;16592:4;16583:6;16579:2;16575:15;16571:26;16547:58;:::i;:::-;16631:14;;;;16694:1;16677:19;16488:222;16742:8;16729:11;16726:25;16723:222;;;16782:58;16834:5;16827:4;16818:6;16814:2;16810:15;16806:26;16782:58;:::i;:::-;16866:14;;;;16929:1;16912:19;16723:222;16977:8;16964:11;16961:25;16958:222;;;17017:58;17069:5;17062:4;17053:6;17049:2;17045:15;17041:26;17017:58;:::i;:::-;17101:14;;;;17164:1;17147:19;16958:222;17212:8;17199:11;17196:25;17193:222;;;17252:58;17304:5;17297:4;17288:6;17284:2;17280:15;17276:26;17252:58;:::i;:::-;17336:14;;;;17399:1;17382:19;17193:222;17447:8;17434:11;17431:25;17428:222;;;17487:58;17539:5;17532:4;17523:6;17519:2;17515:15;17511:26;17487:58;:::i;:::-;17571:14;;;;17634:1;17617:19;17428:222;17682:8;17669:11;17666:25;17663:223;;;17722:59;17775:5;17768:4;17759:6;17754:3;17750:16;17746:27;17722:59;:::i;:::-;17807:14;;;;17870:1;17853:19;17663:223;17918:8;17905:11;17902:25;17899:223;;;17958:59;18011:5;18004:4;17995:6;17990:3;17986:16;17982:27;17958:59;:::i;:::-;18043:14;;;;18106:1;18089:19;17899:223;18154:8;18141:11;18138:25;18135:223;;;18194:59;18247:5;18240:4;18231:6;18226:3;18222:16;18218:27;18194:59;:::i;:::-;18279:14;;;;18342:1;18325:19;18135:223;18390:8;18377:11;18374:25;18371:223;;;18430:59;18483:5;18476:4;18467:6;18462:3;18458:16;18454:27;18430:59;:::i;:::-;18515:14;;;;18578:1;18561:19;18371:223;18626:8;18613:11;18610:25;18607:223;;;18666:59;18719:5;18712:4;18703:6;18698:3;18694:16;18690:27;18666:59;:::i;:::-;18751:14;;;;18814:1;18797:19;18607:223;18862:8;18849:11;18846:25;18843:223;;;18902:59;18955:5;18948:4;18939:6;18934:3;18930:16;18926:27;18902:59;:::i;:::-;18987:14;;;;19050:1;19033:19;18843:223;19098:8;19085:11;19082:25;19079:223;;;19138:59;19191:5;19184:4;19175:6;19170:3;19166:16;19162:27;19138:59;:::i;:::-;19223:14;;;;19286:1;19269:19;19079:223;19334:8;19321:11;19318:25;19315:223;;;19374:59;19427:5;19420:4;19411:6;19406:3;19402:16;19398:27;19374:59;:::i;:::-;19459:14;;;;19522:1;19505:19;19315:223;19570:8;19557:11;19554:25;19551:223;;;19610:59;19663:5;19656:4;19647:6;19642:3;19638:16;19634:27;19610:59;:::i;:::-;19695:14;;;;19758:1;19741:19;19551:223;19806:8;19793:11;19790:25;19787:223;;;19846:59;19899:5;19892:4;19883:6;19878:3;19874:16;19870:27;19846:59;:::i;:::-;19931:14;;;;19994:1;19977:19;19787:223;20042:8;20029:11;20026:25;20023:223;;;20082:59;20135:5;20128:4;20119:6;20114:3;20110:16;20106:27;20082:59;:::i;:::-;20167:14;;;;20230:1;20213:19;20023:223;20278:8;20265:11;20262:25;20259:223;;;20318:59;20371:5;20364:4;20355:6;20350:3;20346:16;20342:27;20318:59;:::i;:::-;20403:14;;;;20466:1;20449:19;20259:223;20514:8;20501:11;20498:25;20495:223;;;20554:59;20607:5;20600:4;20591:6;20586:3;20582:16;20578:27;20554:59;:::i;:::-;20639:14;;;;20702:1;20685:19;20495:223;20750:8;20737:11;20734:25;20731:223;;;20790:59;20843:5;20836:4;20827:6;20822:3;20818:16;20814:27;20790:59;:::i;:::-;20875:14;;;;20938:1;20921:19;20731:223;20986:8;20973:11;20970:25;20967:223;;;21026:59;21079:5;21072:4;21063:6;21058:3;21054:16;21050:27;21026:59;:::i;:::-;21111:14;;;;21174:1;21157:19;20967:223;21222:8;21209:11;21206:25;21203:223;;;21262:59;21315:5;21308:4;21299:6;21294:3;21290:16;21286:27;21262:59;:::i;:::-;21347:14;;;;21410:1;21393:19;21203:223;21458:8;21445:11;21442:25;21439:223;;;21498:59;21551:5;21544:4;21535:6;21530:3;21526:16;21522:27;21498:59;:::i;:::-;21583:14;;;;21646:1;21629:19;21439:223;21694:8;21681:11;21678:25;21675:223;;;21734:59;21787:5;21780:4;21771:6;21766:3;21762:16;21758:27;21734:59;:::i;:::-;21819:14;;;;21882:1;21865:19;21675:223;21930:8;21917:11;21914:25;21911:161;;;21970:48;22012:5;22003:6;21998:3;21994:16;21970:48;:::i;:::-;22044:14;;;;21911:161;-1:-1:-1;;;22155:12:36;;;;22093:5;-1:-1:-1;22133:1:36;22121:14;;;;11217:9;11188:10989;;;-1:-1:-1;22193:4:36;;10778:11425;-1:-1:-1;;;;;;;10778:11425:36:o;22208:3738::-;22753:3;22742:9;22735:22;22716:4;22780:46;22821:3;22810:9;22806:19;22798:6;22780:46;:::i;:::-;-1:-1:-1;;;;;22935:2:36;22927:6;22923:15;22918:2;22907:9;22903:18;22896:43;22969:1;22961:6;22958:13;22948:47;;22975:18;;:::i;:::-;23031:6;23026:2;23015:9;23011:18;23004:34;23086:9;23078:6;23074:22;23069:2;23058:9;23054:18;23047:50;23120:33;23146:6;23138;23120:33;:::i;:::-;23106:47;;23202:9;23194:6;23190:22;23184:3;23173:9;23169:19;23162:51;23237:1;23229:6;23222:17;23272:7;23267:2;23259:6;23255:15;23248:32;23329:2;23321:6;23317:15;23311:3;23300:9;23296:19;23289:44;;23398:2;23386:9;23378:6;23374:22;23370:31;23364:3;23353:9;23349:19;23342:60;23434:2;23426:6;23422:15;23466:6;23460:13;23494:6;23489:3;23482:19;23529:2;23521:6;23517:15;23510:22;;23588:2;23578:6;23575:1;23571:14;23563:6;23559:27;23555:36;23610:6;23607:1;23600:17;23653:2;23650:1;23640:16;23674:1;23684:2233;23698:6;23695:1;23692:13;23684:2233;;;23763:19;;;-1:-1:-1;;23759:33:36;23747:46;;23823:13;;23838:4;23819:24;23876:1;23866:12;;23856:46;;23882:18;;:::i;:::-;23930:5;23922:6;23915:21;;23973:3;23968:2;23960:6;23956:15;23949:28;24015:3;24007:6;24003:16;24066:1;24058:6;24054:14;24048:21;24096:8;24089:5;24082:23;24139:3;24131:6;24127:16;24118:25;;24205:3;24193:8;24190:1;24186:16;24178:6;24174:29;24170:39;24244:1;24236:6;24232:14;24229:1;24222:25;24289:2;24286:1;24276:16;24316:1;24330:1141;24346:8;24341:3;24338:17;24330:1141;;;24452:3;24448:8;24439:6;24431;24427:19;24423:34;24416:5;24409:49;24486:1;24527:8;24521:15;24569:36;24595:9;24569:36;:::i;:::-;24622:24;;;24685:1;24670:17;;24704:178;;;;24904:1;24899:443;;;;24663:679;;24704:178;24776:3;24772:8;24761:9;24757:24;24752:2;24744:6;24740:15;24733:49;24861:2;24847:8;24840:16;24833:24;24830:1;24826:32;24818:6;24814:45;24810:54;24803:61;;24704:178;;24899:443;24938:8;24935:1;24928:19;24996:2;24993:1;24983:16;25031:1;25053:218;25069:8;25064:3;25061:17;25053:218;;;25189:7;25183:14;25178:2;25172:3;25164:6;25160:16;25156:25;25149:49;25247:1;25238:7;25234:15;25223:26;;25097:2;25092:3;25088:12;25081:19;;25053:218;;;25303:16;;25321:2;25299:25;;-1:-1:-1;;24663:679:36;-1:-1:-1;;;25454:2:36;25443:14;;;;;25369:3;-1:-1:-1;25415:1:36;25401:16;;;;24365:11;24330:1141;;;24334:3;;25520:6;25512;25508:19;25503:2;25495:6;25491:15;25484:44;25555:78;25626:6;25619:4;25611:6;25607:17;25555:78;:::i;:::-;25541:92;;;;25666:81;25740:4;25732:6;25728:17;25722:24;10619:4;10603:21;;10494:136;25666:81;4149:13;;4142:21;25802:2;25790:15;;4130:34;-1:-1:-1;25904:2:36;25895:12;;;;;25829:6;-1:-1:-1;25870:4:36;25858:17;;;;;23720:1;23713:9;23684:2233;;;-1:-1:-1;25934:6:36;;22208:3738;-1:-1:-1;;;;;;;;;;;;22208:3738:36:o;25951:200::-;26030:13;;-1:-1:-1;;;;;26072:54:36;;26062:65;;26052:93;;26141:1;26138;26131:12;26156:154;26242:13;;26284:1;26274:12;;26264:40;;26300:1;26297;26290:12;26315:1254;26409:6;26462:2;26450:9;26441:7;26437:23;26433:32;26430:52;;;26478:1;26475;26468:12;26430:52;26511:9;26505:16;26540:18;26581:2;26573:6;26570:14;26567:34;;;26597:1;26594;26587:12;26567:34;26620:22;;;;26676:4;26658:16;;;26654:27;26651:47;;;26694:1;26691;26684:12;26651:47;26720:17;;:::i;:::-;26768:2;26762:9;26796:2;26786:8;26783:16;26780:36;;;26812:1;26809;26802:12;26780:36;26839:56;26887:7;26876:8;26872:2;26868:17;26839:56;:::i;:::-;26832:5;26825:71;;26928:42;26966:2;26962;26958:11;26928:42;:::i;:::-;26923:2;26916:5;26912:14;26905:66;27003:49;27048:2;27044;27040:11;27003:49;:::i;:::-;26998:2;26991:5;26987:14;26980:73;27092:2;27088;27084:11;27078:18;27121:2;27111:8;27108:16;27105:36;;;27137:1;27134;27127:12;27105:36;27173:56;27221:7;27210:8;27206:2;27202:17;27173:56;:::i;:::-;27168:2;27161:5;27157:14;27150:80;;27269:3;27265:2;27261:12;27255:19;27299:2;27289:8;27286:16;27283:36;;;27315:1;27312;27305:12;27283:36;27352:56;27400:7;27389:8;27385:2;27381:17;27352:56;:::i;:::-;27346:3;27339:5;27335:15;27328:81;;27442:43;27480:3;27476:2;27472:12;27442:43;:::i;:::-;27436:3;27429:5;27425:15;27418:68;27533:3;27529:2;27525:12;27519:19;27513:3;27506:5;27502:15;27495:44;27558:5;27548:15;;;;;26315:1254;;;;:::o;27574:1209::-;27679:6;27710:2;27753;27741:9;27732:7;27728:23;27724:32;27721:52;;;27769:1;27766;27759:12;27721:52;27802:9;27796:16;27831:18;27872:2;27864:6;27861:14;27858:34;;;27888:1;27885;27878:12;27858:34;27926:6;27915:9;27911:22;27901:32;;27971:7;27964:4;27960:2;27956:13;27952:27;27942:55;;27993:1;27990;27983:12;27942:55;28022:2;28016:9;28044:2;28040;28037:10;28034:36;;;28050:18;;:::i;:::-;28096:2;28093:1;28089:10;28128:2;28122:9;28140:40;28176:2;28172;28168:11;28160:6;28140:40;:::i;:::-;28215:18;;;28291:11;;;28287:20;;;28249:15;;;28319:19;;;28316:39;;;28351:1;28348;28341:12;28316:39;28383:2;28379;28375:11;28364:22;;28395:357;28411:6;28406:3;28403:15;28395:357;;;28490:3;28484:10;28526:2;28513:11;28510:19;28507:109;;;28570:1;28599:2;28595;28588:14;28507:109;28641:68;28701:7;28696:2;28682:11;28678:2;28674:20;28670:29;28641:68;:::i;:::-;28629:81;;-1:-1:-1;28428:12:36;;;;28730;;28395:357;;;-1:-1:-1;28771:6:36;27574:1209;-1:-1:-1;;;;;;;;27574:1209:36:o;28788:184::-;-1:-1:-1;;;28837:1:36;28830:88;28937:4;28934:1;28927:15;28961:4;28958:1;28951:15;28977:302;29165:2;29154:9;29147:21;29128:4;29185:45;29226:2;29215:9;29211:18;29203:6;29185:45;:::i;:::-;29177:53;;29266:6;29261:2;29250:9;29246:18;29239:34;28977:302;;;;;:::o;29284:184::-;29354:6;29407:2;29395:9;29386:7;29382:23;29378:32;29375:52;;;29423:1;29420;29413:12;29375:52;-1:-1:-1;29446:16:36;;29284:184;-1:-1:-1;29284:184:36:o;29775:430::-;-1:-1:-1;;;;;;29964:6:36;29960:79;29955:3;29948:92;29930:3;30069:6;30063:13;30085:74;30152:6;30148:1;30143:3;30139:11;30132:4;30124:6;30120:17;30085:74;:::i;:::-;30179:16;;;;30197:1;30175:24;;29775:430;-1:-1:-1;;;29775:430:36:o;30210:287::-;30339:3;30377:6;30371:13;30393:66;30452:6;30447:3;30440:4;30432:6;30428:17;30393:66;:::i;:::-;30475:16;;;;;30210:287;-1:-1:-1;;30210:287:36:o;31122:422::-;31338:2;31327:9;31320:21;31301:4;31358:45;31399:2;31388:9;31384:18;31376:6;31358:45;:::i;:::-;-1:-1:-1;;;;;31439:55:36;;;;31434:2;31419:18;;31412:83;-1:-1:-1;31526:2:36;31511:18;31504:34;31350:53;31122:422;-1:-1:-1;31122:422:36:o;32764:440::-;33014:2;33003:9;32996:21;32977:4;33040:49;33085:2;33074:9;33070:18;32677:2;32665:15;;-1:-1:-1;;;32705:4:36;32696:14;;32689:36;32750:2;32741:12;;32600:159;33040:49;33137:9;33129:6;33125:22;33120:2;33109:9;33105:18;33098:50;33165:33;33191:6;33183;33165:33;:::i;33373:440::-;33623:2;33612:9;33605:21;33586:4;33649:49;33694:2;33683:9;33679:18;33286:2;33274:15;;-1:-1:-1;;;33314:4:36;33305:14;;33298:36;33359:2;33350:12;;33209:159;33818:446;34068:2;34057:9;34050:21;34107:1;34102:2;34091:9;34087:18;34080:29;34145:7;34140:2;34129:9;34125:18;34118:35;34191:3;34184:4;34173:9;34169:20;34162:33;34031:4;34212:46;34253:3;34242:9;34238:19;34230:6;34212:46;:::i;35048:397::-;35278:2;35267:9;35260:21;35241:4;35298:49;35343:2;35332:9;35328:18;32677:2;32665:15;;-1:-1:-1;;;32705:4:36;32696:14;;32689:36;32750:2;32741:12;;32600:159;35298:49;35290:57;;-1:-1:-1;;;;;35387:6:36;35383:55;35378:2;35367:9;35363:18;35356:83;35048:397;;;;:::o;35450:::-;35680:2;35669:9;35662:21;35643:4;35700:49;35745:2;35734:9;35730:18;33286:2;33274:15;;-1:-1:-1;;;33314:4:36;33305:14;;33298:36;33359:2;33350:12;;33209:159;36255:348;36485:2;36474:9;36467:21;36448:4;36505:49;36550:2;36539:9;36535:18;32677:2;32665:15;;-1:-1:-1;;;32705:4:36;32696:14;;32689:36;32750:2;32741:12;;32600:159;36505:49;36497:57;;36590:6;36585:2;36574:9;36570:18;36563:34;36255:348;;;;:::o;36608:::-;36838:2;36827:9;36820:21;36801:4;36858:49;36903:2;36892:9;36888:18;33286:2;33274:15;;-1:-1:-1;;;33314:4:36;33305:14;;33298:36;33359:2;33350:12;;33209:159","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testAssign()":"f4eaeb4e","testBurn()":"e13aba48","testGetAllAssetsIDs()":"c0ef0264","testLock()":"e96d88e0","testMint()":"9642ddaf","testMintATokenNotWrapped()":"cb1f5f2b","testTokenNameAndSymbol()":"218e00ff","testUnlock()":"c2745ada","testUnwrap()":"c43484d6","testUnwrapATokenNotWrapped()":"5266885a","testUnwrapATokenWithValueLocked()":"b74cda56","testWrap()":"8312289b","tokenContractOwner()":"ec31250f","user()":"4f8632ba"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAssign\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetAllAssetsIDs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintATokenNotWrapped\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTokenNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrapATokenNotWrapped\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrapATokenWithValueLocked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenContractOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/tests/SATPWrapperTestNFTApprove.sol\":\"SATPWrapperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/main/solidity/contracts/SATPWrapperContract.sol\":{\"keccak256\":\"0x3a76d1e169b1869b2cee17b23d89a3178bd4eb97a9b44f917f1802ddf4438e66\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://41cd05a74a702c7a80cd39667b4f50b42a3ddab3d4cb5d8721ff7fc1ed400296\",\"dweb:/ipfs/QmT5UGSVrVYuU5LLEUm1WPyNCNneTqLByZAV3afCqSpz4Z\"]},\"src/test/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/test/solidity/contracts/SATPNFTokenContract.sol\":{\"keccak256\":\"0x7d0c10882a17903494ab1cec53ceab398e414affd0fa81a63373bf295a8601e0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://5545b8de0f7da23b2d5a640514b14241935231d7d94a808f45a4cccea4d14330\",\"dweb:/ipfs/QmZU65tP62eDZD7rgFfoKcwCx4CacfS6fk6o5jbJ5dgzZ8\"]},\"src/test/solidity/tests/SATPWrapperTestNFTApprove.sol\":{\"keccak256\":\"0x3edf1f9824a3760a5d0cbd457759d24a28f14abcc63e769acfa6006195376a2a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d6d710909186b62dfabbac230f3415d31f7cb71a61bff7223c481ea558a432e2\",\"dweb:/ipfs/QmSHCjJnsV27vT1hXAqt7GzhLccrBWRkyjU4Tpg25vhgsc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAssign"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetAllAssetsIDs"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testLock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintATokenNotWrapped"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTokenNameAndSymbol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrapATokenNotWrapped"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrapATokenWithValueLocked"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWrap"},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenContractOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"user","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/tests/SATPWrapperTestNFTApprove.sol":"SATPWrapperTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/main/solidity/contracts/SATPWrapperContract.sol":{"keccak256":"0x3a76d1e169b1869b2cee17b23d89a3178bd4eb97a9b44f917f1802ddf4438e66","urls":["bzz-raw://41cd05a74a702c7a80cd39667b4f50b42a3ddab3d4cb5d8721ff7fc1ed400296","dweb:/ipfs/QmT5UGSVrVYuU5LLEUm1WPyNCNneTqLByZAV3afCqSpz4Z"],"license":"GPL-3.0"},"src/test/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/test/solidity/contracts/SATPNFTokenContract.sol":{"keccak256":"0x7d0c10882a17903494ab1cec53ceab398e414affd0fa81a63373bf295a8601e0","urls":["bzz-raw://5545b8de0f7da23b2d5a640514b14241935231d7d94a808f45a4cccea4d14330","dweb:/ipfs/QmZU65tP62eDZD7rgFfoKcwCx4CacfS6fk6o5jbJ5dgzZ8"],"license":"GPL-3.0"},"src/test/solidity/tests/SATPWrapperTestNFTApprove.sol":{"keccak256":"0x3edf1f9824a3760a5d0cbd457759d24a28f14abcc63e769acfa6006195376a2a","urls":["bzz-raw://d6d710909186b62dfabbac230f3415d31f7cb71a61bff7223c481ea558a432e2","dweb:/ipfs/QmSHCjJnsV27vT1hXAqt7GzhLccrBWRkyjU4Tpg25vhgsc"],"license":"GPL-3.0"}},"version":1},"id":35} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestNonFungible.sol/SATPWrapperTest.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestNonFungible.sol/SATPWrapperTest.json new file mode 100644 index 0000000000..f7bfa9a48d --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SATPWrapperTestNonFungible.sol/SATPWrapperTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAssign","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetAllAssetsIDs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testLock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMintATokenNotWrapped","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTokenNameAndSymbol","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrapATokenNotWrapped","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnwrapATokenWithValueLocked","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWrap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokenContractOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"user","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60008054600160ff19918216811790925560048054909116909117815560c06040526080908152633ab9b2b960e11b60a0526200003c90620000c4565b601b80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260128152713a37b5b2b721b7b73a3930b1ba27bbb732b960711b60208201526200009090620000c4565b601c80546001600160a01b0319166001600160a01b0392909216919091179055348015620000bd57600080fd5b50620002b1565b6000620000d182620000d8565b5092915050565b60008082604051602001620000ee91906200021d565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200015a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018091906200023b565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001be90859087906004016200026d565b600060405180830381600087803b158015620001d957600080fd5b505af1158015620001ee573d6000803e3d6000fd5b50505050915091565b60005b8381101562000214578181015183820152602001620001fa565b50506000910152565b6000825162000231818460208701620001f7565b9190910192915050565b6000602082840312156200024e57600080fd5b81516001600160a01b03811681146200026657600080fd5b9392505050565b60018060a01b038316815260406020820152600082518060408401526200029c816060850160208701620001f7565b601f01601f1916919091016060019392505050565b61c7eb80620002c16000396000f3fe60806040523480156200001157600080fd5b5060043610620001c55760003560e01c8063b5508aa91162000101578063cb1f5f2b11620000a3578063e96d88e0116200007a578063e96d88e01462000308578063ec31250f1462000312578063f4eaeb4e1462000326578063fa7626d4146200033057600080fd5b8063cb1f5f2b14620002ea578063e13aba4814620002f4578063e20c9f7114620002fe57600080fd5b8063c0ef026411620000d8578063c0ef026414620002cc578063c2745ada14620002d6578063c43484d614620002e057600080fd5b8063b5508aa9146200029d578063b74cda5614620002a7578063ba414fa614620002b157600080fd5b80635266885a116200016b57806385226c81116200014257806385226c811462000270578063916a17c614620002895780639642ddaf146200029357600080fd5b80635266885a146200024357806366d9a9a0146200024d5780638312289b146200026657600080fd5b80633e5e3c2311620001a05780633e5e3c2314620002025780633f7286f4146200020c5780634f8632ba146200021657600080fd5b80630a9254e414620001ca5780631ed7831c14620001d6578063218e00ff14620001f8575b600080fd5b620001d46200033e565b005b620001e06200169f565b604051620001ef919062004fc2565b60405180910390f35b620001d462001703565b620001e06200186b565b620001e0620018cd565b601b546200022a906001600160a01b031681565b6040516001600160a01b039091168152602001620001ef565b620001d46200192f565b6200025762001ae2565b604051620001ef919062005011565b620001d462001bea565b6200027a62002010565b604051620001ef91906200511c565b62000257620020ea565b620001d4620021e9565b6200027a62002502565b620001d4620025dc565b620002bb62002892565b6040519015158152602001620001ef565b620001d4620029ca565b620001d462002ae0565b620001d4620030b3565b620001d462003456565b620001d4620034f7565b620001e062003b04565b620001d462003b66565b601c546200022a906001600160a01b031681565b620001d4620040d0565b600054620002bb9060ff1681565b306040516200034d9062004bff565b6001600160a01b039091168152602001604051809103906000f0801580156200037a573d6000803e3d6000fd5b50601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055601c54604051911690620003b89062004c0d565b6001600160a01b039091168152602001604051809103906000f080158015620003e5573d6000803e3d6000fd5b50601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905560208054600181018255600082905260408051808201909152601d81527f6c6f636b28616464726573732c616464726573732c75696e7432353629000000928101929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb019062000487908262005226565b50604080516060810190915260219080600381526020016005815260200160079052815460018101835560009283526020909220620004ca920190600362004c1b565b50604080516080810182526004815260208054835181830281018301909452808452600093828401929091858383015b82821015620005b05783829060005260206000200180546200051c9062005198565b80601f01602080910402602001604051908101604052809291908181526020018280546200054a9062005198565b80156200059b5780601f106200056f576101008083540402835291602001916200059b565b820191906000526020600020905b8154815290600101906020018083116200057d57829003601f168201915b505050505081526020019060010190620004fa565b5050505081526020016021805480602002602001604051908101604052809291908181526020016000905b828210156200067e576000848152602090819020830180546040805182850281018501909152818152928301828280156200066957602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620006465762000646620052f3565b815260206001928301818104948501949093039092029101808411620006245790505b505050505081526020019060010190620005db565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620006ec57620006ec620052f3565b021790555060208281015180516200070b926001850192019062004cd9565b50604082015180516200072991600284019160209091019062004d32565b50606091909101516003909101805460ff19169115159190911790556022805460018101825560009190915260408051808201909152601f81527f756e6c6f636b28616464726573732c616464726573732c75696e74323536290060208201527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e51090910190620007ba908262005226565b50604080516060810190915260239080600581526020016003815260200160079052815460018101835560009283526020909220620007fd920190600362004c1b565b50604080516080810190915260009080600581526020016022805480602002602001604051908101604052809291908181526020016000905b82821015620008ec578382906000526020600020018054620008589062005198565b80601f0160208091040260200160405190810160405280929190818152602001828054620008869062005198565b8015620008d75780601f10620008ab57610100808354040283529160200191620008d7565b820191906000526020600020905b815481529060010190602001808311620008b957829003601f168201915b50505050508152602001906001019062000836565b5050505081526020016023805480602002602001604051908101604052809291908181526020016000905b82821015620009ba57600084815260209081902083018054604080518285028101850190915281815292830182828015620009a557602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620009825762000982620052f3565b815260206001928301818104948501949093039092029101808411620009605790505b50505050508152602001906001019062000917565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562000a285762000a28620052f3565b0217905550602082810151805162000a47926001850192019062004cd9565b506040820151805162000a6591600284019160209091019062004d32565b50606091909101516003909101805460ff19169115159190911790556024805460018101825560009190915260408051808201909152601581527f6d696e7428616464726573732c75696e7432353629000000000000000000000060208201527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec49091019062000af6908262005226565b506040805180820190915260058152600760208201526025805460018101825560009190915262000b4e917f401968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c90910190600262004d92565b506040805160808101909152600090808281526020016024805480602002602001604051908101604052809291908181526020016000905b8282101562000c3c57838290600052602060002001805462000ba89062005198565b80601f016020809104026020016040519081016040528092919081815260200182805462000bd69062005198565b801562000c275780601f1062000bfb5761010080835404028352916020019162000c27565b820191906000526020600020905b81548152906001019060200180831162000c0957829003601f168201915b50505050508152602001906001019062000b86565b5050505081526020016025805480602002602001604051908101604052809291908181526020016000905b8282101562000d0a5760008481526020908190208301805460408051828502810185019091528181529283018282801562000cf557602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000cd25762000cd2620052f3565b81526020600192830181810494850194909303909202910180841162000cb05790505b50505050508152602001906001019062000c67565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562000d785762000d78620052f3565b0217905550602082810151805162000d97926001850192019062004cd9565b506040820151805162000db591600284019160209091019062004d32565b50606091909101516003909101805460ff19169115159190911790556026805460018101825560009190915260408051808201909152600d81527f6275726e2875696e74323536290000000000000000000000000000000000000060208201527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a35949091019062000e46908262005226565b50604080516020810190915260078152602780546001808201835560009290925262000e97927f98a476f1687bc3d60a2da2adbcba2c46958e61fa2fb4042cd7bc5816a710195b9091019162004e0d565b50604080516080810190915260009080600181526020016026805480602002602001604051908101604052809291908181526020016000905b8282101562000f8657838290600052602060002001805462000ef29062005198565b80601f016020809104026020016040519081016040528092919081815260200182805462000f209062005198565b801562000f715780601f1062000f455761010080835404028352916020019162000f71565b820191906000526020600020905b81548152906001019060200180831162000f5357829003601f168201915b50505050508152602001906001019062000ed0565b5050505081526020016027805480602002602001604051908101604052809291908181526020016000905b8282101562001054576000848152602090819020830180546040805182850281018501909152818152928301828280156200103f57602002820191906000526020600020906000905b82829054906101000a900460ff1660078111156200101c576200101c620052f3565b81526020600192830181810494850194909303909202910180841162000ffa5790505b50505050508152602001906001019062000fb1565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620010c257620010c2620052f3565b02179055506020828101518051620010e1926001850192019062004cd9565b5060408201518051620010ff91600284019160209091019062004d32565b50606091909101516003909101805460ff19169115159190911790556028805460018101825560009190915260408051808201909152601781527f61737369676e28616464726573732c75696e743235362900000000000000000060208201527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab59091019062001190908262005226565b5060408051808201909152600681526007602082015260298054600181018255600091909152620011e8917fcb7c14ce178f56e2e8d86ab33ebc0ae081ba8556a00cd122038841867181caac90910190600262004d92565b50604080516080810190915260009080600281526020016028805480602002602001604051908101604052809291908181526020016000905b82821015620012d7578382906000526020600020018054620012439062005198565b80601f0160208091040260200160405190810160405280929190818152602001828054620012719062005198565b8015620012c25780601f106200129657610100808354040283529160200191620012c2565b820191906000526020600020905b815481529060010190602001808311620012a457829003601f168201915b50505050508152602001906001019062001221565b5050505081526020016029805480602002602001604051908101604052809291908181526020016000905b82821015620013a5576000848152602090819020830180546040805182850281018501909152818152928301828280156200139057602002820191906000526020600020906000905b82829054906101000a900460ff1660078111156200136d576200136d620052f3565b8152602060019283018181049485019490930390920291018084116200134b5790505b50505050508152602001906001019062001302565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620014135762001413620052f3565b0217905550602082810151805162001432926001850192019062004cd9565b50604082015180516200145091600284019160209091019062004d32565b50606091909101516003909101805460ff1916911515919091179055601c546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015620014df57600080fd5b505af1158015620014f4573d6000803e3d6000fd5b5050601f54601e546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af115801562001560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001586919062005309565b50601f54601e546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200162092919091169063ea13407190602401602060405180830381865afa158015620015f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200161a919062005309565b620044e3565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200167f57600080fd5b505af115801562001694573d6000803e3d6000fd5b505050505050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620016f957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620016da575b5050505050905090565b601f54604080516306fdde0360e01b81529051620017b6926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001750573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200177a91908101906200540a565b6040518060400160405280600b81526020017f534154504e46546f6b656e0000000000000000000000000000000000000000008152506200455b565b601f54604080516395d89b4160e01b8152905162001869926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001803573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200182d91908101906200540a565b6040518060400160405280600781526020017f534154504e4654000000000000000000000000000000000000000000000000008152506200455b565b565b6060600f805480602002602001604051908101604052809291908181526020018280548015620016f9576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620016da575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620016f9576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620016da575050505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562001984573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019ae91908101906200540a565b6040518263ffffffff1660e01b8152600401620019cc919062005443565b6020604051808303816000875af192505050801562001a0a575060408051601f3d908101601f1916820190925262001a079181019062005309565b60015b62001a755762001a1962005458565b806308c379a00362001a40575062001a3062005474565b8062001a3d575062001a42565b50565b505b3d80801562001a6c576040519150601f19603f3d011682016040523d82523d6000602084013e5050565b606091505b5050565b801562001a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f457870656374656420616e206572726f72000000000000000000000000000000604482015260640160405180910390fd5b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001be15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001bc857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001b745790505b5050505050815250508152602001906001019062001b06565b50505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562001c3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c6991908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562001cb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ce391908101906200540a565b601b546040516001600160e01b031960e088901b16815262001d1c95949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562001d3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d62919062005309565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa15801562001dbc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001de691908101906200540a565b6040518263ffffffff1660e01b815260040162001e04919062005443565b600060405180830381865afa15801562001e22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e4c919081019062005f26565b905062001ea98160200151601f60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d617463680000000000000000000000000000815250620046bd565b601e54604080517f5137b8a7000000000000000000000000000000000000000000000000000000008152905162001a3d926001600160a01b031691635137b8a79160048083019260009291908290030181865afa15801562001f0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f39919081019062006040565b60008151811062001f4e5762001f4e62006112565b6020026020010151601f60009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001faa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fd491908101906200540a565b6040518060400160405280600f81526020017f49647320646f6e2774206d61746368000000000000000000000000000000000081525062004721565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001be1578382906000526020600020018054620020569062005198565b80601f0160208091040260200160405190810160405280929190818152602001828054620020849062005198565b8015620020d55780601f10620020a957610100808354040283529160200191620020d5565b820191906000526020600020905b815481529060010190602001808311620020b757829003601f168201915b50505050508152602001906001019062002034565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001be15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021d057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200217c5790505b505050505081525050815260200190600101906200210e565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa1580156200223e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200226891908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620022b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620022e291908101906200540a565b601b546040516001600160e01b031960e088901b1681526200231b95949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af11580156200233b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002361919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620023b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620023e191908101906200540a565b6103e96040518363ffffffff1660e01b81526004016200240392919062006128565b6020604051808303816000875af115801562002423573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002449919062005309565b50601f54601e546040516370a0823160e01b81526001600160a01b039182166004820152620018699291909116906370a0823190602401602060405180830381865afa1580156200249e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024c491906200614c565b60016040518060400160405280601081526020017f546f6b656e206e6f74206d696e74656400000000000000000000000000000000815250620047be565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001be1578382906000526020600020018054620025489062005198565b80601f0160208091040260200160405190810160405280929190818152602001828054620025769062005198565b8015620025c75780601f106200259b57610100808354040283529160200191620025c7565b820191906000526020600020905b815481529060010190602001808311620025a957829003601f168201915b50505050508152602001906001019062002526565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002631573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200265b91908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620026ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620026d591908101906200540a565b601b546040516001600160e01b031960e088901b1681526200270e95949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af11580156200272e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002754919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620027aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620027d491908101906200540a565b6103e96040518363ffffffff1660e01b8152600401620027f692919062006128565b6020604051808303816000875af115801562002816573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200283c919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562001984573d6000803e3d6000fd5b60008054610100900460ff1615620028b35750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620029c25760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002944917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162006166565b60408051601f1981840301815290829052620029609162006198565b6000604051808303816000865af19150503d80600081146200299f576040519150601f19603f3d011682016040523d82523d6000602084013e620029a4565b606091505b5091505080806020019051810190620029be919062005309565b9150505b919050565b90565b601e54601f54604080516395d89b4160e01b815290516000936001600160a01b039081169363c1733f68939116916395d89b419160048082019288929091908290030181865afa15801562002a23573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a4d91908101906200540a565b6040518263ffffffff1660e01b815260040162002a6b919062005443565b600060405180830381865afa15801562002a89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002ab3919081019062005f26565b905062001a3d816020015160006040518060600160405280602681526020016200c79060269139620046bd565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002b35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5f91908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562002baf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002bd991908101906200540a565b601b546040516001600160e01b031960e088901b16815262002c1295949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562002c32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c58919062005309565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002cb357600080fd5b505af115801562002cc8573d6000803e3d6000fd5b5050601f54601b546040516340c10f1960e01b81526001600160a01b0391821660048201526103e96024820152911692506340c10f1991506044016020604051808303816000875af115801562002d23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d49919062005309565b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002da457600080fd5b505af115801562002db9573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b15801562002e0f57600080fd5b505af115801562002e24573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063e1efb596945091909216916306fdde039160048083019260009291908290030181865afa15801562002e80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002eaa91908101906200540a565b6103e96040518363ffffffff1660e01b815260040162002ecc92919062006128565b6020604051808303816000875af115801562002eec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f12919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363d9cf884c9316916306fdde039160048083019260009291908290030181865afa15801562002f68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f9291908101906200540a565b6103e96040518363ffffffff1660e01b815260040162002fb492919062006128565b6020604051808303816000875af115801562002fd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ffa919062005309565b50601f54601b546040516370a0823160e01b81526001600160a01b039182166004820152620018699291909116906370a0823190602401602060405180830381865afa1580156200304f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200307591906200614c565b60016040518060400160405280601c81526020017f546f6b656e206e6f742072657475726e6564206f6e20756e6c6f636b00000000815250620047be565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562003108573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200313291908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562003182573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620031ac91908101906200540a565b601b546040516001600160e01b031960e088901b168152620031e595949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562003205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200322b919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562003281573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620032ab91908101906200540a565b6040518263ffffffff1660e01b8152600401620032c9919062005443565b6020604051808303816000875af1158015620032e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200330f919062005309565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa15801562003369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200339391908101906200540a565b6040518263ffffffff1660e01b8152600401620033b1919062005443565b600060405180830381865afa158015620033cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620033f9919081019062005f26565b905062001a3d8160200151601f60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d6174636800000000000000000000000000008152506200480b565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620034ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620034d591908101906200540a565b6103e96040518363ffffffff1660e01b8152600401620019cc92919062006128565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa1580156200354c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200357691908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620035c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035f091908101906200540a565b601b546040516001600160e01b031960e088901b1681526200362995949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562003649573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200366f919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620036c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620036ef91908101906200540a565b6103e96040518363ffffffff1660e01b81526004016200371192919062006128565b6020604051808303816000875af115801562003731573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003757919062005309565b50601f54601e546040516370a0823160e01b81526001600160a01b039182166004820152620038109291909116906370a0823190602401602060405180830381865afa158015620037ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037d291906200614c565b60016040518060400160405280601181526020017f546f6b656e73206e6f74206d696e746564000000000000000000000000000000815250620047be565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200386a57600080fd5b505af11580156200387f573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b158015620038d557600080fd5b505af1158015620038ea573d6000803e3d6000fd5b5050601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200394857600080fd5b505af11580156200395d573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063b48272cc945091909216916306fdde039160048083019260009291908290030181865afa158015620039b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620039e391908101906200540a565b6103e96040518363ffffffff1660e01b815260040162003a0592919062006128565b6020604051808303816000875af115801562003a25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a4b919062005309565b50601f54601e546040516370a0823160e01b81526001600160a01b039182166004820152620018699291909116906370a0823190602401602060405180830381865afa15801562003aa0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ac691906200614c565b60006040518060400160405280601081526020017f546f6b656e206e6f74206275726e656400000000000000000000000000000000815250620047be565b6060600c805480602002602001604051908101604052809291908181526020018280548015620016f9576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620016da575050505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562003bbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003be591908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562003c35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c5f91908101906200540a565b601b546040516001600160e01b031960e088901b16815262003c9895949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562003cb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cde919062005309565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003d3957600080fd5b505af115801562003d4e573d6000803e3d6000fd5b5050601f54601b546040516340c10f1960e01b81526001600160a01b0391821660048201526103e96024820152911692506340c10f1991506044016020604051808303816000875af115801562003da9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dcf919062005309565b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003e2a57600080fd5b505af115801562003e3f573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b15801562003e9557600080fd5b505af115801562003eaa573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063e1efb596945091909216916306fdde039160048083019260009291908290030181865afa15801562003f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f3091908101906200540a565b6103e96040518363ffffffff1660e01b815260040162003f5292919062006128565b6020604051808303816000875af115801562003f72573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f98919062005309565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363324980b5939116916306fdde039160048082019288929091908290030181865afa15801562003ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200401c91908101906200540a565b6103e96040518363ffffffff1660e01b81526004016200403e92919062006128565b600060405180830381865afa1580156200405c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004086919081019062005f26565b905062001a3d8160c001516103e96040518060400160405280601081526020017f546f6b656e206e6f74206c6f636b656400000000000000000000000000000000815250620047be565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562004125573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200414f91908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa1580156200419f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620041c991908101906200540a565b601b546040516001600160e01b031960e088901b1681526200420295949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562004222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004248919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa1580156200429e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620042c891908101906200540a565b6103ea6040518363ffffffff1660e01b8152600401620042ea92919062006128565b6020604051808303816000875af11580156200430a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004330919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b0393841693634534ba179316916306fdde039160048083019260009291908290030181865afa15801562004386573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620043b091908101906200540a565b601b546040516001600160e01b031960e085901b168152620043e492916001600160a01b0316906103ea90600401620061b6565b6020604051808303816000875af115801562004404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200442a919062005309565b50601f54601b546040516370a0823160e01b81526001600160a01b039182166004820152620018699291909116906370a0823190602401602060405180830381865afa1580156200447f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044a591906200614c565b60016040518060400160405280601281526020017f546f6b656e206e6f742061737369676e65640000000000000000000000000000815250620047be565b8062001a3d577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620045499060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001a3d6200486a565b806040516020016200456e919062006198565b604051602081830303815290604052805190602001208260405160200162004597919062006198565b604051602081830303815290604052805190602001201462001a71577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620046399060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051620046729190620061e6565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620046ab919062006225565b60405180910390a162001a716200486a565b816001600160a01b0316836001600160a01b0316146200471c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004708919062006250565b60405180910390a16200471c83836200497d565b505050565b8160405160200162004734919062006198565b60405160208183030381529060405280519060200120836040516020016200475d919062006198565b60405160208183030381529060405280519060200120146200471c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620047aa919062006250565b60405180910390a16200471c83836200455b565b8183146200471c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620047f7919062006250565b60405180910390a16200471c838362004a77565b816001600160a01b0316836001600160a01b0316036200471c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004856919062006250565b60405180910390a16200471c838362004b77565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200496c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262004907929160200162006166565b60408051601f1981840301815290829052620049239162006198565b6000604051808303816000865af19150503d806000811462004962576040519150601f19603f3d011682016040523d82523d6000602084013e62004967565b606091505b505050505b6000805461ff001916610100179055565b806001600160a01b0316826001600160a01b03161462001a71577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004a059060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162004a3e919062006299565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620046ab9190620062db565b80821462001a71577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004b059060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162004b3e919062006306565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620046ab91906200633f565b806001600160a01b0316826001600160a01b03160362001a71577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004a059060208082526025908201527f4572726f723a206120213d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b6146fa806200636b83390190565b611d2b806200aa6583390190565b82805482825590600052602060002090601f0160209004810192821562004cc75791602002820160005b8382111562004c9657835183826101000a81548160ff0219169083600781111562004c745762004c74620052f3565b0217905550926020019260010160208160000104928301926001030262004c45565b801562004cc55782816101000a81549060ff021916905560010160208160000104928301926001030262004c96565b505b5062004cd592915062004e88565b5090565b82805482825590600052602060002090810192821562004d24579160200282015b8281111562004d24578251829062004d13908262005226565b509160200191906001019062004cfa565b5062004cd592915062004e9f565b82805482825590600052602060002090810192821562004d84579160200282015b8281111562004d84578251805162004d7391849160209091019062004ec0565b509160200191906001019062004d53565b5062004cd592915062004f3b565b82805482825590600052602060002090601f0160209004810192821562004cc75791602002820160005b8382111562004c9657835183826101000a81548160ff0219169083600781111562004deb5762004deb620052f3565b0217905550926020019260010160208160000104928301926001030262004dbc565b82805482825590600052602060002090601f0160209004810192821562004cc75791602002820160005b8382111562004c9657835183826101000a81548160ff0219169083600781111562004e665762004e66620052f3565b0217905550926020019260010160208160000104928301926001030262004e37565b5b8082111562004cd5576000815560010162004e89565b8082111562004cd557600062004eb6828262004f5c565b5060010162004e9f565b82805482825590600052602060002090601f0160209004810192821562004cc75791602002820160005b8382111562004c9657835183826101000a81548160ff0219169083600781111562004f195762004f19620052f3565b0217905550926020019260010160208160000104928301926001030262004eea565b8082111562004cd557600062004f52828262004f9b565b5060010162004f3b565b50805462004f6a9062005198565b6000825580601f1062004f7b575050565b601f01602090049060005260206000209081019062001a3d919062004e88565b50805460008255601f01602090049060005260206000209081019062001a3d919062004e88565b6020808252825182820181905260009190848201906040850190845b81811015620050055783516001600160a01b03168352928401929184019160010162004fde565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620050b957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620050a35783516001600160e01b0319168252928b019260019290920191908b019062005077565b50978a0197955050509187019160010162005039565b50919998505050505050505050565b60005b83811015620050e5578181015183820152602001620050cb565b50506000910152565b6000815180845262005108816020860160208601620050c8565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200517557603f1988860301845262005162858351620050ee565b9450928501929085019060010162005143565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620051ad57607f821691505b602082108103620051ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200471c57600081815260208120601f850160051c81016020861015620051fd5750805b601f850160051c820191505b818110156200521e5782815560010162005209565b505050505050565b815167ffffffffffffffff81111562005243576200524362005182565b6200525b8162005254845462005198565b84620051d4565b602080601f8311600181146200529357600084156200527a5750858301515b600019600386901b1c1916600185901b1785556200521e565b600085815260208120601f198616915b82811015620052c457888601518255948401946001909101908401620052a3565b5085821015620052e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200531c57600080fd5b815180151581146200532d57600080fd5b9392505050565b601f8201601f1916810167ffffffffffffffff811182821017156200535d576200535d62005182565b6040525050565b604051610100810167ffffffffffffffff811182821017156200538b576200538b62005182565b60405290565b600082601f830112620053a357600080fd5b815167ffffffffffffffff811115620053c057620053c062005182565b604051620053d9601f8301601f19166020018262005334565b818152846020838601011115620053ef57600080fd5b62005402826020830160208701620050c8565b949350505050565b6000602082840312156200541d57600080fd5b815167ffffffffffffffff8111156200543557600080fd5b620054028482850162005391565b6020815260006200532d6020830184620050ee565b600060033d1115620029c75760046000803e5060005160e01c90565b600060443d1015620054835790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715620054b457505050505090565b8285019150815181811115620054cd5750505050505090565b843d8701016020828501011115620054e85750505050505090565b620054f96020828601018762005334565b509095945050505050565b60088110620055175762005517620052f3565b9052565b600081548084526020808501808196508360051b81019150856000528260002060005b8581101562005c8b57828403895281548085526000838152602080822090870192915b82601f820110156200581c57815460ff6200557f8682841662005504565b620055928b8701828460081c1662005504565b620055a660408701828460101c1662005504565b620055ba60608701828460181c1662005504565b6080620055ce81880183858f1c1662005504565b60a0620055e3818901848660281c1662005504565b60c0620055f8818a01858760301c1662005504565b60e06200560d818b01868860381c1662005504565b620056226101008b01868860401c1662005504565b620056376101208b01868860481c1662005504565b6200564c6101408b01868860501c1662005504565b620056616101608b01868860581c1662005504565b620056766101808b01868860601c1662005504565b6200568b6101a08b01868860681c1662005504565b620056a06101c08b01868860701c1662005504565b620056b56101e08b01868860781c1662005504565b620056c96102008b018688871c1662005504565b620056de6102208b01868860881c1662005504565b620056f36102408b01868860901c1662005504565b620057086102608b01868860981c1662005504565b6200571c6102808b018688861c1662005504565b620057316102a08b01868860a81c1662005504565b620057466102c08b01868860b01c1662005504565b6200575b6102e08b01868860b81c1662005504565b6200576f6103008b018688851c1662005504565b620057846103208b01868860c81c1662005504565b620057996103408b01868860d01c1662005504565b620057ae6103608b01868860d81c1662005504565b620057c26103808b018688841c1662005504565b50505050620057db6103a08701828460e81c1662005504565b620057f06103c08701828460f01c1662005504565b50620058046103e086018260f81c62005504565b50610400939093019260019190910190880162005561565b905490828110156200583f57620058378460ff841662005504565b928801926001015b8281101562005862576200585a8460ff8460081c1662005504565b928801926001015b8281101562005885576200587d8460ff8460101c1662005504565b928801926001015b82811015620058a857620058a08460ff8460181c1662005504565b928801926001015b82811015620058ca57620058c28460ff848c1c1662005504565b928801926001015b82811015620058ed57620058e58460ff8460281c1662005504565b928801926001015b828110156200591057620059088460ff8460301c1662005504565b928801926001015b8281101562005933576200592b8460ff8460381c1662005504565b928801926001015b8281101562005956576200594e8460ff8460401c1662005504565b928801926001015b828110156200597957620059718460ff8460481c1662005504565b928801926001015b828110156200599c57620059948460ff8460501c1662005504565b928801926001015b82811015620059bf57620059b78460ff8460581c1662005504565b928801926001015b82811015620059e257620059da8460ff8460601c1662005504565b928801926001015b8281101562005a0557620059fd8460ff8460681c1662005504565b928801926001015b8281101562005a285762005a208460ff8460701c1662005504565b928801926001015b8281101562005a4b5762005a438460ff8460781c1662005504565b928801926001015b8281101562005a6e5762005a668460ff8460801c1662005504565b928801926001015b8281101562005a915762005a898460ff8460881c1662005504565b928801926001015b8281101562005ab45762005aac8460ff8460901c1662005504565b928801926001015b8281101562005ad75762005acf8460ff8460981c1662005504565b928801926001015b8281101562005afa5762005af28460ff8460a01c1662005504565b928801926001015b8281101562005b1d5762005b158460ff8460a81c1662005504565b928801926001015b8281101562005b405762005b388460ff8460b01c1662005504565b928801926001015b8281101562005b635762005b5b8460ff8460b81c1662005504565b928801926001015b8281101562005b865762005b7e8460ff8460c01c1662005504565b928801926001015b8281101562005ba95762005ba18460ff8460c81c1662005504565b928801926001015b8281101562005bcc5762005bc48460ff8460d01c1662005504565b928801926001015b8281101562005bef5762005be78460ff8460d81c1662005504565b928801926001015b8281101562005c125762005c0a8460ff8460e01c1662005504565b928801926001015b8281101562005c355762005c2d8460ff8460e81c1662005504565b928801926001015b8281101562005c585762005c508460ff8460f01c1662005504565b928801926001015b8281101562005c755762005c70848360f81c62005504565b928801925b505050988501989350600191820191016200553e565b5091979650505050505050565b60048110620055175762005517620052f3565b6101008152600062005cc261010083018a620050ee565b6001600160a01b03891660208401526003881062005ce45762005ce4620052f3565b876040840152828103606084015262005cfe8188620050ee565b90508281036080840152600581527f726566494400000000000000000000000000000000000000000000000000000060208201526001600160a01b03861660a084015260408382030160c084015260408101855480825260608301915060608160051b84010187600052602060002060005b8381101562005eca57858303605f19018552815460ff166007811062005d9a5762005d9a620052f3565b808452506080602084015260808301600183015480825260a08501915060a08160051b86010160018501600052602060002060005b8381101562005e7c57609f198884030185526000825462005df08162005198565b80865260018216801562005e0d576001811462005e2a5762005e63565b60ff1983166020880152602082151560051b880101935062005e63565b85600052602060002060005b8381101562005e5a5781546020828b01015260018201915060208101905062005e36565b88016020019450505b5050506020959095019492506001918201910162005dcf565b5050858103604087015262005e9581600287016200551b565b9250505062005ea8600384015460ff1690565b8015156060860152506020959095019492506004919091019060010162005d70565b50508094505050505062005ee260e083018462005c98565b98975050505050505050565b80516001600160a01b0381168114620029c257600080fd5b805160038110620029c257600080fd5b805160048110620029c257600080fd5b60006020828403121562005f3957600080fd5b815167ffffffffffffffff8082111562005f5257600080fd5b90830190610100828603121562005f6857600080fd5b62005f7262005364565b82518281111562005f8257600080fd5b62005f908782860162005391565b82525062005fa16020840162005eee565b602082015262005fb46040840162005f06565b604082015260608301518281111562005fcc57600080fd5b62005fda8782860162005391565b60608301525060808301518281111562005ff357600080fd5b620060018782860162005391565b6080830152506200601560a0840162005eee565b60a082015260c083015160c08201526200603260e0840162005f16565b60e082015295945050505050565b600060208083850312156200605457600080fd5b825167ffffffffffffffff808211156200606d57600080fd5b818501915085601f8301126200608257600080fd5b81518181111562006097576200609762005182565b8060051b604051620060ac8683018262005334565b91825283810185019185810189841115620060c657600080fd5b86860192505b838310156200610557825185811115620060e65760008081fd5b620060f68b89838a010162005391565b825250918601918601620060cc565b5098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b6040815260006200613d6040830185620050ee565b90508260208301529392505050565b6000602082840312156200615f57600080fd5b5051919050565b6001600160e01b031983168152600082516200618a816004850160208701620050c8565b919091016004019392505050565b60008251620061ac818460208701620050c8565b9190910192915050565b606081526000620061cb6060830186620050ee565b6001600160a01b039490941660208301525060400152919050565b6040815260006200621160408301600a8152690808080808081319599d60b21b602082015260400190565b8281036020840152620054028185620050ee565b6040815260006200621160408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006200532d6080830184620050ee565b604081526000620062c460408301600a8152690808080808081319599d60b21b602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620062c460408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200633160408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200633160408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b50604051620046fa380380620046fa8339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600580546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b6145d280620001286000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063715018a6116100cd578063d9cf884c11610081578063e1efb59611610066578063e1efb59614610350578063ea8f547f14610363578063f2fde38b146103ba57600080fd5b8063d9cf884c1461032a578063dbf156391461033d57600080fd5b8063a1bc17c5116100b2578063a1bc17c5146102f1578063b48272cc14610304578063c1733f681461031757600080fd5b8063715018a6146102d65780638da5cb5b146102e057600080fd5b806319d09bc911610124578063433f60ac11610109578063433f60ac1461029b5780634534ba17146102ae5780635137b8a7146102c157600080fd5b806319d09bc91461023d578063324980b51461027b57600080fd5b806304c2320b14610156578063056b01ce146101865780631255c189146101a9578063150b7a02146101d4575b600080fd5b61016961016436600461370f565b6103cd565b60405161017d9897969594939291906137ce565b60405180910390f35b610199610194366004613853565b6105d1565b604051901515815260200161017d565b6005546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b61020c6101e23660046138af565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017d565b61019961024b366004613853565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b61028e610289366004613853565b61092b565b60405161017d919061394a565b6101996102a9366004613cf0565b61114d565b6101996102bc366004613de0565b6114c0565b6102c961191b565b60405161017d9190613e8c565b6102de6119f4565b005b6000546001600160a01b03166101bc565b6101996102ff36600461370f565b611a08565b610199610312366004613853565b611c59565b61028e61032536600461370f565b61209c565b610199610338366004613853565b6120eb565b61019961034b366004613e9f565b612568565b61019961035e366004613853565b612650565b6103ac610371366004613f6a565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161017d929190613fc8565b6102de6103c8366004613fe5565b612985565b80516020818301810180516001825292820191909301209152805481906103f390614000565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90614000565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161049f90614000565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90614000565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509080600301805461052d90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461055990614000565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050506004830154600584015460069094015492936001600160a01b039091169290915060ff1688565b60006105db6129dc565b60006001600160a01b03166001846040516105f6919061403a565b908152604051908190036020019020600101546001600160a01b03160361063b578260405163c0bab25f60e01b81526004016106329190614056565b60405180910390fd5b6000821161068b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b600060018460405161069d919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156106d1576106d1613794565b03610757576106e284600085612a22565b61072e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b8260018560405161073f919061403a565b908152604051908190036020019020600501556108d6565b600281600281111561076b5761076b613794565b036108bb57600384604051610780919061403a565b90815260408051602092819003830190206000868152925290205460ff16156107eb5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220616c7265616479206578697374736044820152606401610632565b6107f784600085612a22565b6108435760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051610854919061403a565b90815260200160405180910390206005016000828254610874919061407f565b92505081905550600160038560405161088d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556108d6565b8360405163c16fc3ad60e01b81526004016106329190614056565b836040516108e4919061403a565b604051908190038120848252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a260019150505b92915050565b61096f60408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b6000600184604051610981919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156109b5576109b5613794565b03610c3b576001846040516109ca919061403a565b9081526020016040518091039020604051806101000160405290816000820180546109f490614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090614000565b8015610a6d5780601f10610a4257610100808354040283529160200191610a6d565b820191906000526020600020905b815481529060010190602001808311610a5057829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166002811115610aaa57610aaa613794565b6002811115610abb57610abb613794565b8152602001600282018054610acf90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90614000565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b50505050508152602001600382018054610b6190614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90614000565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260058201546040820152600682015460609091019060ff166003811115610c1e57610c1e613794565b6003811115610c2f57610c2f613794565b81525050915050610925565b6002816002811115610c4f57610c4f613794565b0361114657600384604051610c64919061403a565b90815260408051602092819003830190206000868152925290205460ff1615610ef757604051806101000160405280600186604051610ca3919061403a565b9081526040519081900360200190208054610cbd90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990614000565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050508152602001600186604051610d50919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051610d93919061403a565b9081526040519081900360200190206001015460ff600160a01b909104166002811115610dc257610dc2613794565b8152602001858152602001600186604051610ddd919061403a565b90815260200160405180910390206003018054610df990614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2590614000565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b50505050508152602001600186604051610e8c919061403a565b9081526040805160209281900383019020600401546001600160a01b031683529082018690528051910190600190610ec590889061403a565b9081526040519081900360200190206006015460ff166003811115610eec57610eec613794565b815250915050610925565b604051806101000160405280600186604051610f13919061403a565b9081526040519081900360200190208054610f2d90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990614000565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b50505050508152602001600186604051610fc0919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051611003919061403a565b9081526040519081900360200190206001015460ff600160a01b90910416600281111561103257611032613794565b815260200185815260200160018660405161104d919061403a565b9081526020016040518091039020600301805461106990614000565b80601f016020809104026020016040519081016040528092919081815260200182805461109590614000565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081526020016001866040516110fc919061403a565b908152602001604051809103902060040160009054906101000a90046001600160a01b03166001600160a01b0316815260200160008152602001600186604051610ec5919061403a565b5092915050565b60006111576129dc565b60006001600160a01b0316600187604051611172919061403a565b908152604051908190036020019020600101546001600160a01b0316146111c757856040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016106329190614056565b6111d18684612a39565b6002866040516111e1919061403a565b9081526040805160209281900383019020600360008181529190935220015460ff161561128557611213866003612b59565b6112855760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e000000006064820152608401610632565b6040518061010001604052808a8152602001896001600160a01b031681526020018860028111156112b8576112b8613794565b8152602001878152602001868152602001856001600160a01b03168152602001600081526020018360038111156112f1576112f1613794565b815250600187604051611304919061403a565b9081526040519081900360200190208151819061132190826140e0565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600281111561138a5761138a613794565b0217905550606082015160028201906113a390826140e0565b50608082015160038201906113b890826140e0565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c0820151600582015560e082015160068201805460ff1916600183600381111561141957611419613794565b021790555050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905061145d87826140e0565b508560405161146c919061403a565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8a8a8a886040516114a994939291906141a0565b60405180910390a250600198975050505050505050565b60006114ca6129dc565b60006001600160a01b03166001856040516114e5919061403a565b908152604051908190036020019020600101546001600160a01b031603611521578360405163c0bab25f60e01b81526004016106329190614056565b600082116115715760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600185604051611583919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156115b7576115b7613794565b036116c257826001866040516115cd919061403a565b908152602001604051809103902060050154101561162d5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b65646044820152606401610632565b61163a8560028587612b6f565b6116865760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c656400000000000000006044820152606401610632565b82600186604051611697919061403a565b908152602001604051809103902060050160008282546116b791906141e4565b909155506118b99050565b60028160028111156116d6576116d6613794565b0361189e5760006001866040516116ed919061403a565b9081526020016040518091039020600501541161174c5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b65646044820152606401610632565b60038560405161175c919061403a565b908152604080519182900360209081019092206000868152925290205460ff1615156001146117cd5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b6117da8560028587612b6f565b6118265760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018086604051611837919061403a565b9081526020016040518091039020600501600082825461185791906141e4565b925050819055506000600386604051611870919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556118b9565b8460405163c16fc3ad60e01b81526004016106329190614056565b846040516118c7919061403a565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a2506001949350505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156119eb57838290600052602060002001805461195e90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461198a90614000565b80156119d75780601f106119ac576101008083540402835291602001916119d7565b820191906000526020600020905b8154815290600101906020018083116119ba57829003601f168201915b50505050508152602001906001019061193f565b50505050905090565b6119fc6129dc565b611a066000612e8b565b565b6000611a126129dc565b60006001600160a01b0316600183604051611a2d919061403a565b908152604051908190036020019020600101546001600160a01b031603611a69578160405163c0bab25f60e01b81526004016106329190614056565b6000600183604051611a7b919061403a565b9081526020016040518091039020600501541115611ac757816040517fb7d2c10a0000000000000000000000000000000000000000000000000000000081526004016106329190614056565b611b79600183604051611ada919061403a565b90815260200160405180910390206002018054611af690614000565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290614000565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050612ee8565b600182604051611b89919061403a565b9081526040519081900360200190206000611ba48282613422565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055611bd2600283016000613422565b611be0600383016000613422565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820155600601805460ff19169055604051611c2090839061403a565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000611c636129dc565b60006001600160a01b0316600184604051611c7e919061403a565b908152604051908190036020019020600101546001600160a01b031603611cba578260405163c0bab25f60e01b81526004016106329190614056565b60008211611d0a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051611d1c919061403a565b90815260405190819003602001902060019081015460ff600160a01b909104169150816002811115611d5057611d50613794565b03611e5a5782600185604051611d66919061403a565b9081526020016040518091039020600501541015611dc65760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b656400006044820152606401610632565b611dd284600185612a22565b611e1e5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b82600185604051611e2f919061403a565b90815260200160405180910390206005016000828254611e4f91906141e4565b909155506120579050565b6002816002811115611e6e57611e6e613794565b036108bb576000600185604051611e85919061403a565b90815260200160405180910390206005015411611f0a5760405162461bcd60e51b815260206004820152602360248201527f547279696e6720746f206275726e20616e20756e6163636f756e74656420417360448201527f73657400000000000000000000000000000000000000000000000000000000006064820152608401610632565b600384604051611f1a919061403a565b908152604080519182900360209081019092206000868152925290205460ff161515600114611f8b5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b611f9784600185612a22565b611fe35760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051611ff4919061403a565b9081526020016040518091039020600501600082825461201491906141e4565b92505081905550600060038560405161202d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612065919061403a565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee9990602001610917565b6120e060408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b61092582600061092b565b60006120f56129dc565b60006001600160a01b0316600184604051612110919061403a565b908152604051908190036020019020600101546001600160a01b03160361214c578260405163c0bab25f60e01b81526004016106329190614056565b6000821161219c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b60006001846040516121ae919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156121e2576121e2613794565b0361230057826001856040516121f8919061403a565b90815260200160405180910390206005015410156122465783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016106329291906141f7565b61225284600585612a22565b6122c45760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610632565b826001856040516122d5919061403a565b908152602001604051809103902060050160008282546122f591906141e4565b909155506125239050565b600281600281111561231457612314613794565b036108bb57600384604051612329919061403a565b908152604080519182900360209081019092206000868152925290205460ff16151560011461239a5760405162461bcd60e51b815260206004820152601060248201527f546f6b656e204e6f74204c6f636b6564000000000000000000000000000000006044820152606401610632565b60006001856040516123ac919061403a565b908152602001604051809103902060050154116124315760405162461bcd60e51b815260206004820152603360248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206163636f756e74656420666f72000000000000000000000000006064820152608401610632565b61243d84600585612a22565b6124af5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610632565b600180856040516124c0919061403a565b908152602001604051809103902060050160008282546124e091906141e4565b9250508190555060006003856040516124f9919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612531919061403a565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001610917565b60006125726129dc565b3063433f60ac89898989898960006040519080825280602002602001820160405280156125dc57816020015b6125c96040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161259e5790505b508a6040518963ffffffff1660e01b8152600401612601989796959493929190614219565b6020604051808303816000875af1158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906143ba565b98975050505050505050565b600061265a6129dc565b60006001600160a01b0316600184604051612675919061403a565b908152604051908190036020019020600101546001600160a01b0316036126b1578260405163c0bab25f60e01b81526004016106329190614056565b600082116127015760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051612713919061403a565b90815260405190819003602001902060019081015460ff600160a01b90910416915081600281111561274757612747613794565b036127e05761275884600485612a22565b6127a45760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b826001856040516127b5919061403a565b908152602001604051809103902060050160008282546127d5919061407f565b909155506129409050565b60028160028111156127f4576127f4613794565b036108bb57600384604051612809919061403a565b90815260408051602092819003830190206000868152925290205460ff16156128745760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20416c7265616479204c6f636b65640000000000000000000000006044820152606401610632565b61288084600485612a22565b6128cc5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b600180856040516128dd919061403a565b908152602001604051809103902060050160008282546128fd919061407f565b925050819055506001600385604051612916919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b8360405161294e919061403a565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001610917565b61298d6129dc565b6001600160a01b0381166129d0576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610632565b6129d981612e8b565b50565b6000546001600160a01b03163314611a06576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610632565b6000612a318484846000612b6f565b949350505050565b60005b8151811015612b5457818181518110612a5757612a576143d7565b6020026020010151600284604051612a6f919061403a565b90815260200160405180910390206000848481518110612a9157612a916143d7565b6020026020010151600001516006811115612aae57612aae613794565b6006811115612abf57612abf613794565b8152602081019190915260400160002081518154829060ff19166001836006811115612aed57612aed613794565b02179055506020828101518051612b0a926001850192019061345c565b5060408201518051612b269160028401916020909101906134b2565b50606091909101516003909101805460ff191691151591909117905580612b4c816143ed565b915050612a3c565b505050565b6000612b688383600080612b6f565b9392505050565b6000600285604051612b81919061403a565b90815260200160405180910390206000856006811115612ba357612ba3613794565b6006811115612bb457612bb4613794565b815260208101919091526040016000206003015460ff16612bd757506000612a31565b60005b600286604051612bea919061403a565b90815260200160405180910390206000866006811115612c0c57612c0c613794565b6006811115612c1d57612c1d613794565b8152602081019190915260400160002060010154811015612e7f576000600287604051612c4a919061403a565b90815260200160405180910390206000876006811115612c6c57612c6c613794565b6006811115612c7d57612c7d613794565b81526020019081526020016000206001018281548110612c9f57612c9f6143d7565b90600052602060002001604051602001612cb99190614406565b6040516020818303038152906040528051906020012090506000612dd582612dd060028b604051612cea919061403a565b908152602001604051809103902060008b6006811115612d0c57612d0c613794565b6006811115612d1d57612d1d613794565b81526020019081526020016000206002018681548110612d3f57612d3f6143d7565b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015612dc357602002820191906000526020600020906000905b82829054906101000a900460ff166007811115612da157612da1613794565b815260206001928301818104948501949093039092029101808411612d825790505b50505050508b898b613046565b613363565b90506000600189604051612de9919061403a565b908152604051908190036020018120600101546001600160a01b031690612e1190849061403a565b6000604051808303816000865af19150503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5050905080612e69576000945050505050612a31565b5050508080612e77906143ed565b915050612bda565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60045481101561304257612fa460048281548110612f0b57612f0b6143d7565b906000526020600020018054612f2090614000565b80601f0160208091040260200160405190810160405280929190818152602001828054612f4c90614000565b8015612f995780601f10612f6e57610100808354040283529160200191612f99565b820191906000526020600020905b815481529060010190602001808311612f7c57829003601f168201915b5050505050836133fd565b156130305760048054612fb9906001906141e4565b81548110612fc957612fc96143d7565b9060005260206000200160048281548110612fe657612fe66143d7565b906000526020600020019081612ffc919061447c565b50600480548061300e5761300e614557565b60019003818190600052602060002001600061302a9190613422565b90555050565b8061303a816143ed565b915050612eeb565b5050565b60606000855167ffffffffffffffff8111156130645761306461362f565b60405190808252806020026020018201604052801561309757816020015b60608152602001906001900390816130825790505b50905060005b86518110156133595760058782815181106130ba576130ba6143d7565b602002602001015160078111156130d3576130d3613794565b036131155760408051306020820152015b604051602081830303815290604052828281518110613105576131056143d7565b6020026020010181905250613347565b6002878281518110613129576131296143d7565b6020026020010151600781111561314257613142613794565b0361315857856040516020016130e49190614056565b600487828151811061316c5761316c6143d7565b6020026020010151600781111561318557613185613794565b0361319b576040805160208101869052016130e4565b60038782815181106131af576131af6143d7565b602002602001015160078111156131c8576131c8613794565b03613206576001866040516131dd919061403a565b908152604080519182900360209081018320600401546001600160a01b031690830152016130e4565b600087828151811061321a5761321a6143d7565b6020026020010151600781111561323357613233613794565b0361327157600186604051613248919061403a565b908152604080519182900360209081018320600101546001600160a01b031690830152016130e4565b6006878281518110613285576132856143d7565b6020026020010151600781111561329e5761329e613794565b036132bc57604080516001600160a01b0387166020820152016130e4565b60078782815181106132d0576132d06143d7565b602002602001015160078111156132e9576132e9613794565b036132ff576040805160208101869052016130e4565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f72746564000000000000000000006044820152606401610632565b80613351816143ed565b91505061309d565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561114657818382815181106133c0576133c06143d7565b60200260200101516040516020016133d992919061456d565b604051602081830303815290604052915080806133f5906143ed565b9150506133a4565b600081518351148015612b685750508051602091820120825192909101919091201490565b50805461342e90614000565b6000825580601f1061343e575050565b601f0160209004906000526020600020908101906129d9919061350b565b8280548282559060005260206000209081019282156134a2579160200282015b828111156134a2578251829061349290826140e0565b509160200191906001019061347c565b506134ae929150613520565b5090565b8280548282559060005260206000209081019282156134ff579160200282015b828111156134ff57825180516134ef91849160209091019061353d565b50916020019190600101906134d2565b506134ae9291506135ed565b5b808211156134ae576000815560010161350c565b808211156134ae5760006135348282613422565b50600101613520565b82805482825590600052602060002090601f016020900481019282156135e15791602002820160005b838211156135b257835183826101000a81548160ff0219169083600781111561359157613591613794565b02179055509260200192600101602081600001049283019260010302613566565b80156135df5782816101000a81549060ff02191690556001016020816000010492830192600103026135b2565b505b506134ae92915061350b565b808211156134ae576000613601828261360a565b506001016135ed565b50805460008255601f0160209004906000526020600020908101906129d9919061350b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156136685761366861362f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136975761369761362f565b604052919050565b600082601f8301126136b057600080fd5b813567ffffffffffffffff8111156136ca576136ca61362f565b6136dd601f8201601f191660200161366e565b8181528460208386010111156136f257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561372157600080fd5b813567ffffffffffffffff81111561373857600080fd5b612a318482850161369f565b60005b8381101561375f578181015183820152602001613747565b50506000910152565b60008151808452613780816020860160208601613744565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106137ba576137ba613794565b9052565b600481106137ba576137ba613794565b60006101008083526137e28184018c613768565b90506001600160a01b03808b166020850152613801604085018b6137aa565b8382036060850152613813828a613768565b915083820360808501526138278289613768565b925080871660a085015250508360c083015261384660e08301846137be565b9998505050505050505050565b6000806040838503121561386657600080fd5b823567ffffffffffffffff81111561387d57600080fd5b6138898582860161369f565b95602094909401359450505050565b80356001600160a01b0381168114611c5457600080fd5b6000806000806000608086880312156138c757600080fd5b6138d086613898565b94506138de60208701613898565b935060408601359250606086013567ffffffffffffffff8082111561390257600080fd5b818801915088601f83011261391657600080fd5b81358181111561392557600080fd5b89602082850101111561393757600080fd5b9699959850939650602001949392505050565b6020815260008251610100806020850152613969610120850183613768565b9150602085015161398560408601826001600160a01b03169052565b50604085015161399860608601826137aa565b506060850151601f19808685030160808701526139b58483613768565b935060808701519150808685030160a0870152506139d38382613768565b92505060a08501516139f060c08601826001600160a01b03169052565b5060c085015160e085015260e0850151613a0c828601826137be565b5090949350505050565b803560038110611c5457600080fd5b600067ffffffffffffffff821115613a3f57613a3f61362f565b5060051b60200190565b803560078110611c5457600080fd5b600082601f830112613a6957600080fd5b81356020613a7e613a7983613a25565b61366e565b828152600592831b8501820192828201919087851115613a9d57600080fd5b8387015b85811015613b4257803567ffffffffffffffff811115613ac15760008081fd5b8801603f81018a13613ad35760008081fd5b858101356040613ae5613a7983613a25565b82815291851b8301810191888101908d841115613b025760008081fd5b938201935b83851015613b31578435925060088310613b215760008081fd5b8282529389019390890190613b07565b885250505093850193508401613aa1565b5090979650505050505050565b80151581146129d957600080fd5b8035611c5481613b4f565b600082601f830112613b7957600080fd5b613b86613a798335613a25565b82358082526020808301929160051b85010185811115613ba557600080fd5b602085015b81811015613cd65767ffffffffffffffff8082351115613bc957600080fd5b813587016080818a03601f19011215613be157600080fd5b613be9613645565b613bf560208301613a49565b8152604082013583811115613c0957600080fd5b8201603f81018b13613c1a57600080fd5b6020810135613c2b613a7982613a25565b81815260059190911b82016040019060208101908d831115613c4c57600080fd5b604084015b83811015613c85578781351115613c6757600080fd5b613c778f6040833588010161369f565b835260209283019201613c51565b506020850152505050606082013583811115613ca057600080fd5b613caf8b602083860101613a58565b604083015250613cc160808301613b5d565b60608201528652505060209384019301613baa565b509095945050505050565b803560048110611c5457600080fd5b600080600080600080600080610100898b031215613d0d57600080fd5b883567ffffffffffffffff80821115613d2557600080fd5b613d318c838d0161369f565b9950613d3f60208c01613898565b9850613d4d60408c01613a16565b975060608b0135915080821115613d6357600080fd5b613d6f8c838d0161369f565b965060808b0135915080821115613d8557600080fd5b613d918c838d0161369f565b9550613d9f60a08c01613898565b945060c08b0135915080821115613db557600080fd5b50613dc28b828c01613b68565b925050613dd160e08a01613ce1565b90509295985092959890939650565b600080600060608486031215613df557600080fd5b833567ffffffffffffffff811115613e0c57600080fd5b613e188682870161369f565b935050613e2760208501613898565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015613e7f578284038952613e6d848351613768565b98850198935090840190600101613e55565b5091979650505050505050565b602081526000612b686020830184613e37565b600080600080600080600060e0888a031215613eba57600080fd5b873567ffffffffffffffff80821115613ed257600080fd5b613ede8b838c0161369f565b9850613eec60208b01613898565b9750613efa60408b01613a16565b965060608a0135915080821115613f1057600080fd5b613f1c8b838c0161369f565b955060808a0135915080821115613f3257600080fd5b50613f3f8a828b0161369f565b935050613f4e60a08901613898565b9150613f5c60c08901613ce1565b905092959891949750929550565b60008060408385031215613f7d57600080fd5b823567ffffffffffffffff811115613f9457600080fd5b613fa08582860161369f565b925050613faf60208401613a49565b90509250929050565b600781106137ba576137ba613794565b60408101613fd68285613fb8565b82151560208301529392505050565b600060208284031215613ff757600080fd5b612b6882613898565b600181811c9082168061401457607f821691505b60208210810361403457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161404c818460208701613744565b9190910192915050565b602081526000612b686020830184613768565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092557610925614069565b601f821115612b5457600081815260208120601f850160051c810160208610156140b95750805b601f850160051c820191505b818110156140d8578281556001016140c5565b505050505050565b815167ffffffffffffffff8111156140fa576140fa61362f565b61410e816141088454614000565b84614092565b602080601f831160018114614143576000841561412b5750858301515b600019600386901b1c1916600185901b1785556140d8565b600085815260208120601f198616915b8281101561417257888601518255948401946001909101908401614153565b50858210156141905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006141b36080830187613768565b90506001600160a01b0380861660208401526141d260408401866137aa565b80841660608401525095945050505050565b8181038181111561092557610925614069565b60408152600061420a6040830185613768565b90508260208301529392505050565b6101008152600061422e61010083018b613768565b6001600160a01b03808b16602085015261424b604085018b6137aa565b838203606085015261425d828a613768565b915083820360808501526142718289613768565b915080871660a08501525082810360c084015280855180835260208301915060208160051b8401016020880160005b838110156143a457601f198087850301865282516142bf858251613fb8565b6020810151608060208701526142d86080870182613e37565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561436d57858203880184528451805180845260209182019184019060005b818110156143555783516008811061434157614341613794565b835260209384019390920191600101614327565b50506020968701969590950194925050600101614305565b506060860151965061438360608b018815159052565b809950505050505050506020820191506020850194506001810190506142a0565b50508094505050505061384660e08301846137be565b6000602082840312156143cc57600080fd5b8151612b6881613b4f565b634e487b7160e01b600052603260045260246000fd5b6000600182016143ff576143ff614069565b5060010190565b600080835461441481614000565b6001828116801561442c576001811461444157614470565b60ff1984168752821515830287019450614470565b8760005260208060002060005b858110156144675781548a82015290840190820161444e565b50505082870194505b50929695505050505050565b818103614487575050565b6144918254614000565b67ffffffffffffffff8111156144a9576144a961362f565b6144b7816141088454614000565b6000601f8211600181146144eb57600083156144d35750848201545b600019600385901b1c1916600184901b178455614550565b600085815260209020601f19841690600086815260209020845b838110156145255782860154825560019586019590910190602001614505565b50858310156145435781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b6000835161457f818460208801613744565b835190830190614593818360208801613744565b0194935050505056fea2646970667358221220cc545097d62ab752192a515a53206f325e79a54a4fe781e2769cb76ecb844be064736f6c6343000814003360806040523480156200001157600080fd5b5060405162001d2b38038062001d2b8339810160408190526200003491620001b1565b6040518060400160405280600b81526020016a29a0aa2827232a37b5b2b760a91b8152506040518060400160405280600781526020016614d0551413919560ca1b815250816001908162000089919062000288565b50600262000098828262000288565b505050620000cd7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e826200010260201b60201c565b50620000fa7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f8262000102565b505062000354565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a7576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200015e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001ab565b5060005b92915050565b600060208284031215620001c457600080fd5b81516001600160a01b0381168114620001dc57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020e57607f821691505b6020821081036200022f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028357600081815260208120601f850160051c810160208610156200025e5750805b601f850160051c820191505b818110156200027f578281556001016200026a565b5050505b505050565b81516001600160401b03811115620002a457620002a4620001e3565b620002bc81620002b58454620001f9565b8462000235565b602080601f831160018114620002f45760008415620002db5750858301515b600019600386901b1c1916600185901b1785556200027f565b600085815260208120601f198616915b82811015620003255788860151825594840194600190910190840162000304565b5085821015620003445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6119c780620003646000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b5bfddea116100a2578063d547741f11610071578063d547741f146104a5578063e58378bb146104b8578063e985e9c5146104df578063ea1340711461051b57600080fd5b8063b5bfddea14610445578063b88d4fde1461046c578063be7604881461047f578063c87b56dd1461049257600080fd5b806395d89b41116100de57806395d89b411461040f578063a217fddf14610417578063a22cb4651461041f578063a5e99b8e1461043257600080fd5b806370a08231146103b25780637750c9f01461038c5780638d944fd9146103c557806391d14854146103d857600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e1461036657806342966c681461037957806359508f8f1461038c5780636352211e1461039f57600080fd5b80632f2ff15d1461031a57806336568abe1461032d5780633ae9449d1461034057806340c10f191461035357600080fd5b8063150b7a02116101c3578063150b7a021461027357806323b872dd146102c3578063248a9ca3146102d65780632a16cca41461030757600080fd5b806301ffc9a7146101f557806306fdde031461021e578063081812fc14610233578063095ea7b31461025e575b600080fd5b610209610203366004611580565b50600090565b60405190151581526020015b60405180910390f35b61022661052e565b60405161021591906115ed565b610246610241366004611600565b6105c0565b6040516001600160a01b039091168152602001610215565b61027161026c366004611635565b6105eb565b005b61029261028136600461165f565b630a85bd0160e11b95945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b6102716102d13660046116fa565b6105fa565b6102f96102e4366004611600565b60009081526020819052604090206001015490565b604051908152602001610215565b610209610315366004611635565b6106a3565b610271610328366004611736565b61071e565b61027161033b366004611736565b610743565b6102f961034e366004611762565b610794565b610209610361366004611635565b6107a7565b6102716103743660046116fa565b6107e7565b610209610387366004611600565b610802565b61020961039a3660046116fa565b610917565b6102466103ad366004611600565b610924565b6102f96103c0366004611762565b61092f565b6102096103d3366004611635565b610990565b6102096103e6366004611736565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102266109ea565b6102f9600081565b61027161042d36600461177d565b6109f9565b610209610440366004611762565b610a04565b6102f97f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61027161047a3660046117cf565b610a5a565b61020961048d366004611635565b610a71565b6102266104a0366004611600565b610a8f565b6102716104b3366004611736565b610b03565b6102f97fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b6102096104ed3660046118ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b610209610529366004611762565b610b28565b60606001805461053d906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906118d5565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b60006105cb82610bad565b506000828152600560205260409020546001600160a01b03165b92915050565b6105f6828233610be6565b5050565b6001600160a01b03821661062957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610636838333610bf3565b9050836001600160a01b0316816001600160a01b03161461069d576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610620565b50505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6106cf81610cf9565b60006106da846105c0565b9050806001600160a01b0316856001600160a01b03161480610715575061070084610924565b6001600160a01b0316856001600160a01b0316145b95945050505050565b60008281526020819052604090206001015461073981610cf9565b61069d8383610d06565b6001600160a01b0381163314610785576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078f8282610db0565b505050565b6000806107a08361092f565b9392505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6107d381610cf9565b6107dd8484610e33565b5060019392505050565b61078f83838360405180602001604052806000815250610a5a565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61082e81610cf9565b33600061083a856105c0565b9050806001600160a01b0316826001600160a01b03161480610875575061086085610924565b6001600160a01b0316826001600160a01b0316145b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616c6c6572206973206e6f7420617070726f76656420746f206f706572617460448201527f65206f6e207468697320746f6b656e00000000000000000000000000000000006064820152608401610620565b61090a85610e4d565b6001935050505b50919050565b60006107dd8484846107e7565b60006105e582610bad565b60006001600160a01b038216610974576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b506001600160a01b031660009081526004602052604090205490565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6109bc81610cf9565b6000838152600360205260409020546001600160a01b03166109df818686610e88565b506001949350505050565b60606002805461053d906118d5565b6105f6338383610f05565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e610a3081610cf9565b6107dd7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610d06565b610a658484846105fa565b61069d84848484610fbd565b6000610a86610a7f83610924565b84846107e7565b50600192915050565b6060610a9a82610bad565b506000610ab260408051602081019091526000815290565b90506000815111610ad257604051806020016040528060008152506107a0565b80610adc846110fe565b604051602001610aed929190611909565b6040516020818303038152906040529392505050565b600082815260208190526040902060010154610b1e81610cf9565b61069d8383610db0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff1615610b7057506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6000818152600360205260408120546001600160a01b0316806105e557604051637e27328960e01b815260048101849052602401610620565b61078f838383600161119e565b6000828152600360205260408120546001600160a01b0390811690831615610c2057610c20818486610e88565b6001600160a01b03811615610c5e57610c3d60008560008061119e565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610c8d576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610d0381336112e9565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610da8576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610d603390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e5565b5060006105e5565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610da8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e5565b6105f6828260405180602001604052806000815250611355565b6000610e5c6000836000610bf3565b90506001600160a01b0381166105f657604051637e27328960e01b815260048101839052602401610620565b610e9383838361136c565b61078f576001600160a01b038316610ec157604051637e27328960e01b815260048101829052602401610620565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610620565b6001600160a01b038216610f50576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610fff903390889087908790600401611938565b6020604051808303816000875af192505050801561103a575060408051601f3d908101601f1916820190925261103791810190611974565b60015b6110a3573d808015611068576040519150601f19603f3d011682016040523d82523d6000602084013e61106d565b606091505b50805160000361109b57604051633250574960e11b81526001600160a01b0385166004820152602401610620565b805181602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116630a85bd0160e11b146110f757604051633250574960e11b81526001600160a01b0385166004820152602401610620565b5050505050565b6060600061110b836113f2565b600101905060008167ffffffffffffffff81111561112b5761112b6117b9565b6040519080825280601f01601f191660200182016040528015611155576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461115f57509392505050565b80806111b257506001600160a01b03821615155b156112ac5760006111c284610bad565b90506001600160a01b038316158015906111ee5750826001600160a01b0316816001600160a01b031614155b801561122057506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15611262576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610620565b81156112aa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166105f6576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610620565b61135f83836114d4565b61078f6000848484610fbd565b60006001600160a01b038316158015906113ea5750826001600160a01b0316846001600160a01b031614806113c657506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806113ea57506000828152600560205260409020546001600160a01b038481169116145b949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061143b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611467576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061148557662386f26fc10000830492506010015b6305f5e100831061149d576305f5e100830492506008015b61271083106114b157612710830492506004015b606483106114c3576064830492506002015b600a83106105e55760010192915050565b6001600160a01b0382166114fe57604051633250574960e11b815260006004820152602401610620565b600061150c83836000610bf3565b90506001600160a01b0381161561078f576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0357600080fd5b60006020828403121561159257600080fd5b81356107a081611552565b60005b838110156115b85781810151838201526020016115a0565b50506000910152565b600081518084526115d981602086016020860161159d565b601f01601f19169290920160200192915050565b6020815260006107a060208301846115c1565b60006020828403121561161257600080fd5b5035919050565b80356001600160a01b038116811461163057600080fd5b919050565b6000806040838503121561164857600080fd5b61165183611619565b946020939093013593505050565b60008060008060006080868803121561167757600080fd5b61168086611619565b945061168e60208701611619565b935060408601359250606086013567ffffffffffffffff808211156116b257600080fd5b818801915088601f8301126116c657600080fd5b8135818111156116d557600080fd5b8960208285010111156116e757600080fd5b9699959850939650602001949392505050565b60008060006060848603121561170f57600080fd5b61171884611619565b925061172660208501611619565b9150604084013590509250925092565b6000806040838503121561174957600080fd5b8235915061175960208401611619565b90509250929050565b60006020828403121561177457600080fd5b6107a082611619565b6000806040838503121561179057600080fd5b61179983611619565b9150602083013580151581146117ae57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156117e557600080fd5b6117ee85611619565b93506117fc60208601611619565b925060408501359150606085013567ffffffffffffffff8082111561182057600080fd5b818701915087601f83011261183457600080fd5b813581811115611846576118466117b9565b604051601f8201601f19908116603f0116810190838211818310171561186e5761186e6117b9565b816040528281528a602084870101111561188757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118be57600080fd5b6118c783611619565b915061175960208401611619565b600181811c908216806118e957607f821691505b60208210810361091157634e487b7160e01b600052602260045260246000fd5b6000835161191b81846020880161159d565b83519083019061192f81836020880161159d565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261196a60808301846115c1565b9695505050505050565b60006020828403121561198657600080fd5b81516107a08161155256fea26469706673582212203f5ab80dc6f0b3ee871144587f727bf6705f6dba123b4717d2615eebae48e21064736f6c63430008140033546f6b656e2073686f756c64206e6f74206578697374206265666f7265207772617070696e67a2646970667358221220dee22a316f4323ae8b19012d8fc8ce66ad4ea5c4d06f1bb9da6f0f70f79e970364736f6c63430008140033","sourceMap":"1572:26:17:-:0;;;1594:4;-1:-1:-1;;1572:26:17;;;;;;;;3161:44:20;;;;;;;;;;;508:16:44;442:7857;508:16;442:7857;508:16;;;-1:-1:-1;;;508:16:44;;;;:8;:16::i;:::-;486:38;;;-1:-1:-1;;;;;;486:38:44;-1:-1:-1;;;;;486:38:44;;;;;;;;;;566:30;;;;;;;;;;;;-1:-1:-1;;;566:30:44;;;;;;:8;:30::i;:::-;530:66;;;-1:-1:-1;;;;;;530:66:44;-1:-1:-1;;;;;530:66:44;;;;;;;;;;442:7857;;;;;;;;;;;;16374:125:21;16438:12;16472:20;16487:4;16472:14;:20::i;:::-;-1:-1:-1;16462:30:21;16374:125;-1:-1:-1;;16374:125:21:o;16093:242::-;16163:12;16177:18;16255:4;16238:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;16238:22:21;;;;;;;16228:33;;16238:22;16228:33;;;;-1:-1:-1;;;;;;16279:19:21;;;;;709:25:45;;;16228:33:21;-1:-1:-1;16279:7:21;;;;682:18:45;;16279:19:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16308:20;;-1:-1:-1;;;16308:20:21;;16272:26;;-1:-1:-1;16308:8:21;;;;:20;;16272:26;;16323:4;;16308:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16093:242;;;:::o;14:250:45:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:45;238:16;;231:27;14:250::o;269:289::-;400:3;438:6;432:13;454:66;513:6;508:3;501:4;493:6;489:17;454:66;:::i;:::-;536:16;;;;;269:289;-1:-1:-1;;269:289:45:o;745:290::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;910:16;;-1:-1:-1;;;;;955:31:45;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;745:290;-1:-1:-1;;;745:290:45:o;1040:493::-;1246:1;1242;1237:3;1233:11;1229:19;1221:6;1217:32;1206:9;1199:51;1286:2;1281;1270:9;1266:18;1259:30;1180:4;1318:6;1312:13;1361:6;1356:2;1345:9;1341:18;1334:34;1377:79;1449:6;1444:2;1433:9;1429:18;1424:2;1416:6;1412:15;1377:79;:::i;:::-;1517:2;1496:15;-1:-1:-1;;1492:29:45;1477:45;;;;1524:2;1473:54;;1040:493;-1:-1:-1;;;1040:493:45:o;:::-;442:7857:44;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001c55760003560e01c8063b5508aa91162000101578063cb1f5f2b11620000a3578063e96d88e0116200007a578063e96d88e01462000308578063ec31250f1462000312578063f4eaeb4e1462000326578063fa7626d4146200033057600080fd5b8063cb1f5f2b14620002ea578063e13aba4814620002f4578063e20c9f7114620002fe57600080fd5b8063c0ef026411620000d8578063c0ef026414620002cc578063c2745ada14620002d6578063c43484d614620002e057600080fd5b8063b5508aa9146200029d578063b74cda5614620002a7578063ba414fa614620002b157600080fd5b80635266885a116200016b57806385226c81116200014257806385226c811462000270578063916a17c614620002895780639642ddaf146200029357600080fd5b80635266885a146200024357806366d9a9a0146200024d5780638312289b146200026657600080fd5b80633e5e3c2311620001a05780633e5e3c2314620002025780633f7286f4146200020c5780634f8632ba146200021657600080fd5b80630a9254e414620001ca5780631ed7831c14620001d6578063218e00ff14620001f8575b600080fd5b620001d46200033e565b005b620001e06200169f565b604051620001ef919062004fc2565b60405180910390f35b620001d462001703565b620001e06200186b565b620001e0620018cd565b601b546200022a906001600160a01b031681565b6040516001600160a01b039091168152602001620001ef565b620001d46200192f565b6200025762001ae2565b604051620001ef919062005011565b620001d462001bea565b6200027a62002010565b604051620001ef91906200511c565b62000257620020ea565b620001d4620021e9565b6200027a62002502565b620001d4620025dc565b620002bb62002892565b6040519015158152602001620001ef565b620001d4620029ca565b620001d462002ae0565b620001d4620030b3565b620001d462003456565b620001d4620034f7565b620001e062003b04565b620001d462003b66565b601c546200022a906001600160a01b031681565b620001d4620040d0565b600054620002bb9060ff1681565b306040516200034d9062004bff565b6001600160a01b039091168152602001604051809103906000f0801580156200037a573d6000803e3d6000fd5b50601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055601c54604051911690620003b89062004c0d565b6001600160a01b039091168152602001604051809103906000f080158015620003e5573d6000803e3d6000fd5b50601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905560208054600181018255600082905260408051808201909152601d81527f6c6f636b28616464726573732c616464726573732c75696e7432353629000000928101929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb019062000487908262005226565b50604080516060810190915260219080600381526020016005815260200160079052815460018101835560009283526020909220620004ca920190600362004c1b565b50604080516080810182526004815260208054835181830281018301909452808452600093828401929091858383015b82821015620005b05783829060005260206000200180546200051c9062005198565b80601f01602080910402602001604051908101604052809291908181526020018280546200054a9062005198565b80156200059b5780601f106200056f576101008083540402835291602001916200059b565b820191906000526020600020905b8154815290600101906020018083116200057d57829003601f168201915b505050505081526020019060010190620004fa565b5050505081526020016021805480602002602001604051908101604052809291908181526020016000905b828210156200067e576000848152602090819020830180546040805182850281018501909152818152928301828280156200066957602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620006465762000646620052f3565b815260206001928301818104948501949093039092029101808411620006245790505b505050505081526020019060010190620005db565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620006ec57620006ec620052f3565b021790555060208281015180516200070b926001850192019062004cd9565b50604082015180516200072991600284019160209091019062004d32565b50606091909101516003909101805460ff19169115159190911790556022805460018101825560009190915260408051808201909152601f81527f756e6c6f636b28616464726573732c616464726573732c75696e74323536290060208201527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e51090910190620007ba908262005226565b50604080516060810190915260239080600581526020016003815260200160079052815460018101835560009283526020909220620007fd920190600362004c1b565b50604080516080810190915260009080600581526020016022805480602002602001604051908101604052809291908181526020016000905b82821015620008ec578382906000526020600020018054620008589062005198565b80601f0160208091040260200160405190810160405280929190818152602001828054620008869062005198565b8015620008d75780601f10620008ab57610100808354040283529160200191620008d7565b820191906000526020600020905b815481529060010190602001808311620008b957829003601f168201915b50505050508152602001906001019062000836565b5050505081526020016023805480602002602001604051908101604052809291908181526020016000905b82821015620009ba57600084815260209081902083018054604080518285028101850190915281815292830182828015620009a557602002820191906000526020600020906000905b82829054906101000a900460ff166007811115620009825762000982620052f3565b815260206001928301818104948501949093039092029101808411620009605790505b50505050508152602001906001019062000917565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562000a285762000a28620052f3565b0217905550602082810151805162000a47926001850192019062004cd9565b506040820151805162000a6591600284019160209091019062004d32565b50606091909101516003909101805460ff19169115159190911790556024805460018101825560009190915260408051808201909152601581527f6d696e7428616464726573732c75696e7432353629000000000000000000000060208201527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec49091019062000af6908262005226565b506040805180820190915260058152600760208201526025805460018101825560009190915262000b4e917f401968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c90910190600262004d92565b506040805160808101909152600090808281526020016024805480602002602001604051908101604052809291908181526020016000905b8282101562000c3c57838290600052602060002001805462000ba89062005198565b80601f016020809104026020016040519081016040528092919081815260200182805462000bd69062005198565b801562000c275780601f1062000bfb5761010080835404028352916020019162000c27565b820191906000526020600020905b81548152906001019060200180831162000c0957829003601f168201915b50505050508152602001906001019062000b86565b5050505081526020016025805480602002602001604051908101604052809291908181526020016000905b8282101562000d0a5760008481526020908190208301805460408051828502810185019091528181529283018282801562000cf557602002820191906000526020600020906000905b82829054906101000a900460ff16600781111562000cd25762000cd2620052f3565b81526020600192830181810494850194909303909202910180841162000cb05790505b50505050508152602001906001019062000c67565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff19169083600681111562000d785762000d78620052f3565b0217905550602082810151805162000d97926001850192019062004cd9565b506040820151805162000db591600284019160209091019062004d32565b50606091909101516003909101805460ff19169115159190911790556026805460018101825560009190915260408051808201909152600d81527f6275726e2875696e74323536290000000000000000000000000000000000000060208201527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a35949091019062000e46908262005226565b50604080516020810190915260078152602780546001808201835560009290925262000e97927f98a476f1687bc3d60a2da2adbcba2c46958e61fa2fb4042cd7bc5816a710195b9091019162004e0d565b50604080516080810190915260009080600181526020016026805480602002602001604051908101604052809291908181526020016000905b8282101562000f8657838290600052602060002001805462000ef29062005198565b80601f016020809104026020016040519081016040528092919081815260200182805462000f209062005198565b801562000f715780601f1062000f455761010080835404028352916020019162000f71565b820191906000526020600020905b81548152906001019060200180831162000f5357829003601f168201915b50505050508152602001906001019062000ed0565b5050505081526020016027805480602002602001604051908101604052809291908181526020016000905b8282101562001054576000848152602090819020830180546040805182850281018501909152818152928301828280156200103f57602002820191906000526020600020906000905b82829054906101000a900460ff1660078111156200101c576200101c620052f3565b81526020600192830181810494850194909303909202910180841162000ffa5790505b50505050508152602001906001019062000fb1565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620010c257620010c2620052f3565b02179055506020828101518051620010e1926001850192019062004cd9565b5060408201518051620010ff91600284019160209091019062004d32565b50606091909101516003909101805460ff19169115159190911790556028805460018101825560009190915260408051808201909152601781527f61737369676e28616464726573732c75696e743235362900000000000000000060208201527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab59091019062001190908262005226565b5060408051808201909152600681526007602082015260298054600181018255600091909152620011e8917fcb7c14ce178f56e2e8d86ab33ebc0ae081ba8556a00cd122038841867181caac90910190600262004d92565b50604080516080810190915260009080600281526020016028805480602002602001604051908101604052809291908181526020016000905b82821015620012d7578382906000526020600020018054620012439062005198565b80601f0160208091040260200160405190810160405280929190818152602001828054620012719062005198565b8015620012c25780601f106200129657610100808354040283529160200191620012c2565b820191906000526020600020905b815481529060010190602001808311620012a457829003601f168201915b50505050508152602001906001019062001221565b5050505081526020016029805480602002602001604051908101604052809291908181526020016000905b82821015620013a5576000848152602090819020830180546040805182850281018501909152818152928301828280156200139057602002820191906000526020600020906000905b82829054906101000a900460ff1660078111156200136d576200136d620052f3565b8152602060019283018181049485019490930390920291018084116200134b5790505b50505050508152602001906001019062001302565b5050509082525060016020909101819052601d80548083018255600091909152825160049091027f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01805493945084939092839160ff191690836006811115620014135762001413620052f3565b0217905550602082810151805162001432926001850192019062004cd9565b50604082015180516200145091600284019160209091019062004d32565b50606091909101516003909101805460ff1916911515919091179055601c546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015620014df57600080fd5b505af1158015620014f4573d6000803e3d6000fd5b5050601f54601e546040517fa5e99b8e0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063a5e99b8e91506024016020604051808303816000875af115801562001560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001586919062005309565b50601f54601e546040517fea1340710000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200162092919091169063ea13407190602401602060405180830381865afa158015620015f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200161a919062005309565b620044e3565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200167f57600080fd5b505af115801562001694573d6000803e3d6000fd5b505050505050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620016f957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620016da575b5050505050905090565b601f54604080516306fdde0360e01b81529051620017b6926001600160a01b0316916306fdde039160048083019260009291908290030181865afa15801562001750573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200177a91908101906200540a565b6040518060400160405280600b81526020017f534154504e46546f6b656e0000000000000000000000000000000000000000008152506200455b565b601f54604080516395d89b4160e01b8152905162001869926001600160a01b0316916395d89b419160048083019260009291908290030181865afa15801562001803573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200182d91908101906200540a565b6040518060400160405280600781526020017f534154504e4654000000000000000000000000000000000000000000000000008152506200455b565b565b6060600f805480602002602001604051908101604052809291908181526020018280548015620016f9576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620016da575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620016f9576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620016da575050505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562001984573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019ae91908101906200540a565b6040518263ffffffff1660e01b8152600401620019cc919062005443565b6020604051808303816000875af192505050801562001a0a575060408051601f3d908101601f1916820190925262001a079181019062005309565b60015b62001a755762001a1962005458565b806308c379a00362001a40575062001a3062005474565b8062001a3d575062001a42565b50565b505b3d80801562001a6c576040519150601f19603f3d011682016040523d82523d6000602084013e5050565b606091505b5050565b801562001a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f457870656374656420616e206572726f72000000000000000000000000000000604482015260640160405180910390fd5b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001be15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001bc857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001b745790505b5050505050815250508152602001906001019062001b06565b50505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562001c3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c6991908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562001cb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ce391908101906200540a565b601b546040516001600160e01b031960e088901b16815262001d1c95949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562001d3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d62919062005309565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa15801562001dbc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001de691908101906200540a565b6040518263ffffffff1660e01b815260040162001e04919062005443565b600060405180830381865afa15801562001e22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e4c919081019062005f26565b905062001ea98160200151601f60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d617463680000000000000000000000000000815250620046bd565b601e54604080517f5137b8a7000000000000000000000000000000000000000000000000000000008152905162001a3d926001600160a01b031691635137b8a79160048083019260009291908290030181865afa15801562001f0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f39919081019062006040565b60008151811062001f4e5762001f4e62006112565b6020026020010151601f60009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001faa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fd491908101906200540a565b6040518060400160405280600f81526020017f49647320646f6e2774206d61746368000000000000000000000000000000000081525062004721565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001be1578382906000526020600020018054620020569062005198565b80601f0160208091040260200160405190810160405280929190818152602001828054620020849062005198565b8015620020d55780601f10620020a957610100808354040283529160200191620020d5565b820191906000526020600020905b815481529060010190602001808311620020b757829003601f168201915b50505050508152602001906001019062002034565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001be15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620021d057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200217c5790505b505050505081525050815260200190600101906200210e565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa1580156200223e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200226891908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620022b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620022e291908101906200540a565b601b546040516001600160e01b031960e088901b1681526200231b95949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af11580156200233b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002361919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620023b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620023e191908101906200540a565b6103e96040518363ffffffff1660e01b81526004016200240392919062006128565b6020604051808303816000875af115801562002423573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002449919062005309565b50601f54601e546040516370a0823160e01b81526001600160a01b039182166004820152620018699291909116906370a0823190602401602060405180830381865afa1580156200249e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024c491906200614c565b60016040518060400160405280601081526020017f546f6b656e206e6f74206d696e74656400000000000000000000000000000000815250620047be565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001be1578382906000526020600020018054620025489062005198565b80601f0160208091040260200160405190810160405280929190818152602001828054620025769062005198565b8015620025c75780601f106200259b57610100808354040283529160200191620025c7565b820191906000526020600020905b815481529060010190602001808311620025a957829003601f168201915b50505050508152602001906001019062002526565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002631573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200265b91908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620026ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620026d591908101906200540a565b601b546040516001600160e01b031960e088901b1681526200270e95949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af11580156200272e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002754919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620027aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620027d491908101906200540a565b6103e96040518363ffffffff1660e01b8152600401620027f692919062006128565b6020604051808303816000875af115801562002816573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200283c919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562001984573d6000803e3d6000fd5b60008054610100900460ff1615620028b35750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620029c25760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b8284015282518083038401815260608301909352600092909162002944917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162006166565b60408051601f1981840301815290829052620029609162006198565b6000604051808303816000865af19150503d80600081146200299f576040519150601f19603f3d011682016040523d82523d6000602084013e620029a4565b606091505b5091505080806020019051810190620029be919062005309565b9150505b919050565b90565b601e54601f54604080516395d89b4160e01b815290516000936001600160a01b039081169363c1733f68939116916395d89b419160048082019288929091908290030181865afa15801562002a23573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a4d91908101906200540a565b6040518263ffffffff1660e01b815260040162002a6b919062005443565b600060405180830381865afa15801562002a89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002ab3919081019062005f26565b905062001a3d816020015160006040518060600160405280602681526020016200c79060269139620046bd565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562002b35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5f91908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562002baf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002bd991908101906200540a565b601b546040516001600160e01b031960e088901b16815262002c1295949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562002c32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c58919062005309565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002cb357600080fd5b505af115801562002cc8573d6000803e3d6000fd5b5050601f54601b546040516340c10f1960e01b81526001600160a01b0391821660048201526103e96024820152911692506340c10f1991506044016020604051808303816000875af115801562002d23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d49919062005309565b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002da457600080fd5b505af115801562002db9573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b15801562002e0f57600080fd5b505af115801562002e24573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063e1efb596945091909216916306fdde039160048083019260009291908290030181865afa15801562002e80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002eaa91908101906200540a565b6103e96040518363ffffffff1660e01b815260040162002ecc92919062006128565b6020604051808303816000875af115801562002eec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f12919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363d9cf884c9316916306fdde039160048083019260009291908290030181865afa15801562002f68573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002f9291908101906200540a565b6103e96040518363ffffffff1660e01b815260040162002fb492919062006128565b6020604051808303816000875af115801562002fd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ffa919062005309565b50601f54601b546040516370a0823160e01b81526001600160a01b039182166004820152620018699291909116906370a0823190602401602060405180830381865afa1580156200304f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200307591906200614c565b60016040518060400160405280601c81526020017f546f6b656e206e6f742072657475726e6564206f6e20756e6c6f636b00000000815250620047be565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562003108573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200313291908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562003182573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620031ac91908101906200540a565b601b546040516001600160e01b031960e088901b168152620031e595949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562003205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200322b919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363a1bc17c59316916306fdde039160048083019260009291908290030181865afa15801562003281573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620032ab91908101906200540a565b6040518263ffffffff1660e01b8152600401620032c9919062005443565b6020604051808303816000875af1158015620032e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200330f919062005309565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363c1733f68939116916306fdde039160048082019288929091908290030181865afa15801562003369573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200339391908101906200540a565b6040518263ffffffff1660e01b8152600401620033b1919062005443565b600060405180830381865afa158015620033cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620033f9919081019062005f26565b905062001a3d8160200151601f60009054906101000a90046001600160a01b03166040518060400160405280601281526020017f546f6b656e7320646f6e2774206d6174636800000000000000000000000000008152506200480b565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620034ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620034d591908101906200540a565b6103e96040518363ffffffff1660e01b8152600401620019cc92919062006128565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa1580156200354c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200357691908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa158015620035c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620035f091908101906200540a565b601b546040516001600160e01b031960e088901b1681526200362995949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562003649573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200366f919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa158015620036c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620036ef91908101906200540a565b6103e96040518363ffffffff1660e01b81526004016200371192919062006128565b6020604051808303816000875af115801562003731573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003757919062005309565b50601f54601e546040516370a0823160e01b81526001600160a01b039182166004820152620038109291909116906370a0823190602401602060405180830381865afa158015620037ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037d291906200614c565b60016040518060400160405280601181526020017f546f6b656e73206e6f74206d696e746564000000000000000000000000000000815250620047be565b601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200386a57600080fd5b505af11580156200387f573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b158015620038d557600080fd5b505af1158015620038ea573d6000803e3d6000fd5b5050601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200394857600080fd5b505af11580156200395d573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063b48272cc945091909216916306fdde039160048083019260009291908290030181865afa158015620039b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620039e391908101906200540a565b6103e96040518363ffffffff1660e01b815260040162003a0592919062006128565b6020604051808303816000875af115801562003a25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a4b919062005309565b50601f54601e546040516370a0823160e01b81526001600160a01b039182166004820152620018699291909116906370a0823190602401602060405180830381865afa15801562003aa0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ac691906200614c565b60006040518060400160405280601081526020017f546f6b656e206e6f74206275726e656400000000000000000000000000000000815250620047be565b6060600c805480602002602001604051908101604052809291908181526020018280548015620016f9576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620016da575050505050905090565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562003bbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003be591908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa15801562003c35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c5f91908101906200540a565b601b546040516001600160e01b031960e088901b16815262003c9895949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562003cb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003cde919062005309565b50601e5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003d3957600080fd5b505af115801562003d4e573d6000803e3d6000fd5b5050601f54601b546040516340c10f1960e01b81526001600160a01b0391821660048201526103e96024820152911692506340c10f1991506044016020604051808303816000875af115801562003da9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dcf919062005309565b50601b5460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003e2a57600080fd5b505af115801562003e3f573d6000803e3d6000fd5b5050601f54601e5460405163095ea7b360e01b81526001600160a01b0391821660048201526103e960248201529116925063095ea7b39150604401600060405180830381600087803b15801562003e9557600080fd5b505af115801562003eaa573d6000803e3d6000fd5b5050601e54601f54604080516306fdde0360e01b815290516001600160a01b03938416955063e1efb596945091909216916306fdde039160048083019260009291908290030181865afa15801562003f06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f3091908101906200540a565b6103e96040518363ffffffff1660e01b815260040162003f5292919062006128565b6020604051808303816000875af115801562003f72573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f98919062005309565b50601e54601f54604080516306fdde0360e01b815290516000936001600160a01b039081169363324980b5939116916306fdde039160048082019288929091908290030181865afa15801562003ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200401c91908101906200540a565b6103e96040518363ffffffff1660e01b81526004016200403e92919062006128565b600060405180830381865afa1580156200405c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004086919081019062005f26565b905062001a3d8160c001516103e96040518060400160405280601081526020017f546f6b656e206e6f74206c6f636b656400000000000000000000000000000000815250620047be565b601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363433f60ac9316916306fdde039160048083019260009291908290030181865afa15801562004125573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200414f91908101906200540a565b601f54604080516306fdde0360e01b815290516001600160a01b039092169160029183916306fdde03916004808201926000929091908290030181865afa1580156200419f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620041c991908101906200540a565b601b546040516001600160e01b031960e088901b1681526200420295949392916001600160a01b031690601d9060029060040162005cab565b6020604051808303816000875af115801562004222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004248919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b039384169363056b01ce9316916306fdde039160048083019260009291908290030181865afa1580156200429e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620042c891908101906200540a565b6103ea6040518363ffffffff1660e01b8152600401620042ea92919062006128565b6020604051808303816000875af11580156200430a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004330919062005309565b50601e54601f54604080516306fdde0360e01b815290516001600160a01b0393841693634534ba179316916306fdde039160048083019260009291908290030181865afa15801562004386573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620043b091908101906200540a565b601b546040516001600160e01b031960e085901b168152620043e492916001600160a01b0316906103ea90600401620061b6565b6020604051808303816000875af115801562004404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200442a919062005309565b50601f54601b546040516370a0823160e01b81526001600160a01b039182166004820152620018699291909116906370a0823190602401602060405180830381865afa1580156200447f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620044a591906200614c565b60016040518060400160405280601281526020017f546f6b656e206e6f742061737369676e65640000000000000000000000000000815250620047be565b8062001a3d577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620045499060208082526017908201527f4572726f723a20417373657274696f6e204661696c6564000000000000000000604082015260600190565b60405180910390a162001a3d6200486a565b806040516020016200456e919062006198565b604051602081830303815290604052805190602001208260405160200162004597919062006198565b604051602081830303815290604052805190602001201462001a71577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620046399060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051620046729190620061e6565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620046ab919062006225565b60405180910390a162001a716200486a565b816001600160a01b0316836001600160a01b0316146200471c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004708919062006250565b60405180910390a16200471c83836200497d565b505050565b8160405160200162004734919062006198565b60405160208183030381529060405280519060200120836040516020016200475d919062006198565b60405160208183030381529060405280519060200120146200471c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620047aa919062006250565b60405180910390a16200471c83836200455b565b8183146200471c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051620047f7919062006250565b60405180910390a16200471c838362004a77565b816001600160a01b0316836001600160a01b0316036200471c577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838160405162004856919062006250565b60405180910390a16200471c838362004b77565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156200496c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190526519985a5b195960d21b9282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262004907929160200162006166565b60408051601f1981840301815290829052620049239162006198565b6000604051808303816000865af19150503d806000811462004962576040519150601f19603f3d011682016040523d82523d6000602084013e62004967565b606091505b505050505b6000805461ff001916610100179055565b806001600160a01b0316826001600160a01b03161462001a71577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004a059060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f8260405162004a3e919062006299565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f81604051620046ab9190620062db565b80821462001a71577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004b059060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88260405162004b3e919062006306565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a881604051620046ab91906200633f565b806001600160a01b0316826001600160a01b03160362001a71577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162004a059060208082526025908201527f4572726f723a206120213d2062206e6f7420736174697366696564205b616464604082015264726573735d60d81b606082015260800190565b6146fa806200636b83390190565b611d2b806200aa6583390190565b82805482825590600052602060002090601f0160209004810192821562004cc75791602002820160005b8382111562004c9657835183826101000a81548160ff0219169083600781111562004c745762004c74620052f3565b0217905550926020019260010160208160000104928301926001030262004c45565b801562004cc55782816101000a81549060ff021916905560010160208160000104928301926001030262004c96565b505b5062004cd592915062004e88565b5090565b82805482825590600052602060002090810192821562004d24579160200282015b8281111562004d24578251829062004d13908262005226565b509160200191906001019062004cfa565b5062004cd592915062004e9f565b82805482825590600052602060002090810192821562004d84579160200282015b8281111562004d84578251805162004d7391849160209091019062004ec0565b509160200191906001019062004d53565b5062004cd592915062004f3b565b82805482825590600052602060002090601f0160209004810192821562004cc75791602002820160005b8382111562004c9657835183826101000a81548160ff0219169083600781111562004deb5762004deb620052f3565b0217905550926020019260010160208160000104928301926001030262004dbc565b82805482825590600052602060002090601f0160209004810192821562004cc75791602002820160005b8382111562004c9657835183826101000a81548160ff0219169083600781111562004e665762004e66620052f3565b0217905550926020019260010160208160000104928301926001030262004e37565b5b8082111562004cd5576000815560010162004e89565b8082111562004cd557600062004eb6828262004f5c565b5060010162004e9f565b82805482825590600052602060002090601f0160209004810192821562004cc75791602002820160005b8382111562004c9657835183826101000a81548160ff0219169083600781111562004f195762004f19620052f3565b0217905550926020019260010160208160000104928301926001030262004eea565b8082111562004cd557600062004f52828262004f9b565b5060010162004f3b565b50805462004f6a9062005198565b6000825580601f1062004f7b575050565b601f01602090049060005260206000209081019062001a3d919062004e88565b50805460008255601f01602090049060005260206000209081019062001a3d919062004e88565b6020808252825182820181905260009190848201906040850190845b81811015620050055783516001600160a01b03168352928401929184019160010162004fde565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015620050b957898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b80831015620050a35783516001600160e01b0319168252928b019260019290920191908b019062005077565b50978a0197955050509187019160010162005039565b50919998505050505050505050565b60005b83811015620050e5578181015183820152602001620050cb565b50506000910152565b6000815180845262005108816020860160208601620050c8565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200517557603f1988860301845262005162858351620050ee565b9450928501929085019060010162005143565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620051ad57607f821691505b602082108103620051ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200471c57600081815260208120601f850160051c81016020861015620051fd5750805b601f850160051c820191505b818110156200521e5782815560010162005209565b505050505050565b815167ffffffffffffffff81111562005243576200524362005182565b6200525b8162005254845462005198565b84620051d4565b602080601f8311600181146200529357600084156200527a5750858301515b600019600386901b1c1916600185901b1785556200521e565b600085815260208120601f198616915b82811015620052c457888601518255948401946001909101908401620052a3565b5085821015620052e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156200531c57600080fd5b815180151581146200532d57600080fd5b9392505050565b601f8201601f1916810167ffffffffffffffff811182821017156200535d576200535d62005182565b6040525050565b604051610100810167ffffffffffffffff811182821017156200538b576200538b62005182565b60405290565b600082601f830112620053a357600080fd5b815167ffffffffffffffff811115620053c057620053c062005182565b604051620053d9601f8301601f19166020018262005334565b818152846020838601011115620053ef57600080fd5b62005402826020830160208701620050c8565b949350505050565b6000602082840312156200541d57600080fd5b815167ffffffffffffffff8111156200543557600080fd5b620054028482850162005391565b6020815260006200532d6020830184620050ee565b600060033d1115620029c75760046000803e5060005160e01c90565b600060443d1015620054835790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715620054b457505050505090565b8285019150815181811115620054cd5750505050505090565b843d8701016020828501011115620054e85750505050505090565b620054f96020828601018762005334565b509095945050505050565b60088110620055175762005517620052f3565b9052565b600081548084526020808501808196508360051b81019150856000528260002060005b8581101562005c8b57828403895281548085526000838152602080822090870192915b82601f820110156200581c57815460ff6200557f8682841662005504565b620055928b8701828460081c1662005504565b620055a660408701828460101c1662005504565b620055ba60608701828460181c1662005504565b6080620055ce81880183858f1c1662005504565b60a0620055e3818901848660281c1662005504565b60c0620055f8818a01858760301c1662005504565b60e06200560d818b01868860381c1662005504565b620056226101008b01868860401c1662005504565b620056376101208b01868860481c1662005504565b6200564c6101408b01868860501c1662005504565b620056616101608b01868860581c1662005504565b620056766101808b01868860601c1662005504565b6200568b6101a08b01868860681c1662005504565b620056a06101c08b01868860701c1662005504565b620056b56101e08b01868860781c1662005504565b620056c96102008b018688871c1662005504565b620056de6102208b01868860881c1662005504565b620056f36102408b01868860901c1662005504565b620057086102608b01868860981c1662005504565b6200571c6102808b018688861c1662005504565b620057316102a08b01868860a81c1662005504565b620057466102c08b01868860b01c1662005504565b6200575b6102e08b01868860b81c1662005504565b6200576f6103008b018688851c1662005504565b620057846103208b01868860c81c1662005504565b620057996103408b01868860d01c1662005504565b620057ae6103608b01868860d81c1662005504565b620057c26103808b018688841c1662005504565b50505050620057db6103a08701828460e81c1662005504565b620057f06103c08701828460f01c1662005504565b50620058046103e086018260f81c62005504565b50610400939093019260019190910190880162005561565b905490828110156200583f57620058378460ff841662005504565b928801926001015b8281101562005862576200585a8460ff8460081c1662005504565b928801926001015b8281101562005885576200587d8460ff8460101c1662005504565b928801926001015b82811015620058a857620058a08460ff8460181c1662005504565b928801926001015b82811015620058ca57620058c28460ff848c1c1662005504565b928801926001015b82811015620058ed57620058e58460ff8460281c1662005504565b928801926001015b828110156200591057620059088460ff8460301c1662005504565b928801926001015b8281101562005933576200592b8460ff8460381c1662005504565b928801926001015b8281101562005956576200594e8460ff8460401c1662005504565b928801926001015b828110156200597957620059718460ff8460481c1662005504565b928801926001015b828110156200599c57620059948460ff8460501c1662005504565b928801926001015b82811015620059bf57620059b78460ff8460581c1662005504565b928801926001015b82811015620059e257620059da8460ff8460601c1662005504565b928801926001015b8281101562005a0557620059fd8460ff8460681c1662005504565b928801926001015b8281101562005a285762005a208460ff8460701c1662005504565b928801926001015b8281101562005a4b5762005a438460ff8460781c1662005504565b928801926001015b8281101562005a6e5762005a668460ff8460801c1662005504565b928801926001015b8281101562005a915762005a898460ff8460881c1662005504565b928801926001015b8281101562005ab45762005aac8460ff8460901c1662005504565b928801926001015b8281101562005ad75762005acf8460ff8460981c1662005504565b928801926001015b8281101562005afa5762005af28460ff8460a01c1662005504565b928801926001015b8281101562005b1d5762005b158460ff8460a81c1662005504565b928801926001015b8281101562005b405762005b388460ff8460b01c1662005504565b928801926001015b8281101562005b635762005b5b8460ff8460b81c1662005504565b928801926001015b8281101562005b865762005b7e8460ff8460c01c1662005504565b928801926001015b8281101562005ba95762005ba18460ff8460c81c1662005504565b928801926001015b8281101562005bcc5762005bc48460ff8460d01c1662005504565b928801926001015b8281101562005bef5762005be78460ff8460d81c1662005504565b928801926001015b8281101562005c125762005c0a8460ff8460e01c1662005504565b928801926001015b8281101562005c355762005c2d8460ff8460e81c1662005504565b928801926001015b8281101562005c585762005c508460ff8460f01c1662005504565b928801926001015b8281101562005c755762005c70848360f81c62005504565b928801925b505050988501989350600191820191016200553e565b5091979650505050505050565b60048110620055175762005517620052f3565b6101008152600062005cc261010083018a620050ee565b6001600160a01b03891660208401526003881062005ce45762005ce4620052f3565b876040840152828103606084015262005cfe8188620050ee565b90508281036080840152600581527f726566494400000000000000000000000000000000000000000000000000000060208201526001600160a01b03861660a084015260408382030160c084015260408101855480825260608301915060608160051b84010187600052602060002060005b8381101562005eca57858303605f19018552815460ff166007811062005d9a5762005d9a620052f3565b808452506080602084015260808301600183015480825260a08501915060a08160051b86010160018501600052602060002060005b8381101562005e7c57609f198884030185526000825462005df08162005198565b80865260018216801562005e0d576001811462005e2a5762005e63565b60ff1983166020880152602082151560051b880101935062005e63565b85600052602060002060005b8381101562005e5a5781546020828b01015260018201915060208101905062005e36565b88016020019450505b5050506020959095019492506001918201910162005dcf565b5050858103604087015262005e9581600287016200551b565b9250505062005ea8600384015460ff1690565b8015156060860152506020959095019492506004919091019060010162005d70565b50508094505050505062005ee260e083018462005c98565b98975050505050505050565b80516001600160a01b0381168114620029c257600080fd5b805160038110620029c257600080fd5b805160048110620029c257600080fd5b60006020828403121562005f3957600080fd5b815167ffffffffffffffff8082111562005f5257600080fd5b90830190610100828603121562005f6857600080fd5b62005f7262005364565b82518281111562005f8257600080fd5b62005f908782860162005391565b82525062005fa16020840162005eee565b602082015262005fb46040840162005f06565b604082015260608301518281111562005fcc57600080fd5b62005fda8782860162005391565b60608301525060808301518281111562005ff357600080fd5b620060018782860162005391565b6080830152506200601560a0840162005eee565b60a082015260c083015160c08201526200603260e0840162005f16565b60e082015295945050505050565b600060208083850312156200605457600080fd5b825167ffffffffffffffff808211156200606d57600080fd5b818501915085601f8301126200608257600080fd5b81518181111562006097576200609762005182565b8060051b604051620060ac8683018262005334565b91825283810185019185810189841115620060c657600080fd5b86860192505b838310156200610557825185811115620060e65760008081fd5b620060f68b89838a010162005391565b825250918601918601620060cc565b5098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b6040815260006200613d6040830185620050ee565b90508260208301529392505050565b6000602082840312156200615f57600080fd5b5051919050565b6001600160e01b031983168152600082516200618a816004850160208701620050c8565b919091016004019392505050565b60008251620061ac818460208701620050c8565b9190910192915050565b606081526000620061cb6060830186620050ee565b6001600160a01b039490941660208301525060400152919050565b6040815260006200621160408301600a8152690808080808081319599d60b21b602082015260400190565b8281036020840152620054028185620050ee565b6040815260006200621160408301600a8152690808080808149a59da1d60b21b602082015260400190565b60408152600560408201527f4572726f7200000000000000000000000000000000000000000000000000000060608201526080602082015260006200532d6080830184620050ee565b604081526000620062c460408301600a8152690808080808081319599d60b21b602082015260400190565b90506001600160a01b038316602083015292915050565b604081526000620062c460408301600a8152690808080808149a59da1d60b21b602082015260400190565b6040815260006200633160408301600a8152690808080808081319599d60b21b602082015260400190565b905082602083015292915050565b6040815260006200633160408301600a8152690808080808149a59da1d60b21b60208201526040019056fe60806040523480156200001157600080fd5b50604051620046fa380380620046fa8339810160408190526200003491620000e6565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000096565b50600580546001600160a01b0319166001600160a01b039290921691909117905562000118565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f957600080fd5b81516001600160a01b03811681146200011157600080fd5b9392505050565b6145d280620001286000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063715018a6116100cd578063d9cf884c11610081578063e1efb59611610066578063e1efb59614610350578063ea8f547f14610363578063f2fde38b146103ba57600080fd5b8063d9cf884c1461032a578063dbf156391461033d57600080fd5b8063a1bc17c5116100b2578063a1bc17c5146102f1578063b48272cc14610304578063c1733f681461031757600080fd5b8063715018a6146102d65780638da5cb5b146102e057600080fd5b806319d09bc911610124578063433f60ac11610109578063433f60ac1461029b5780634534ba17146102ae5780635137b8a7146102c157600080fd5b806319d09bc91461023d578063324980b51461027b57600080fd5b806304c2320b14610156578063056b01ce146101865780631255c189146101a9578063150b7a02146101d4575b600080fd5b61016961016436600461370f565b6103cd565b60405161017d9897969594939291906137ce565b60405180910390f35b610199610194366004613853565b6105d1565b604051901515815260200161017d565b6005546101bc906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b61020c6101e23660046138af565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161017d565b61019961024b366004613853565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b61028e610289366004613853565b61092b565b60405161017d919061394a565b6101996102a9366004613cf0565b61114d565b6101996102bc366004613de0565b6114c0565b6102c961191b565b60405161017d9190613e8c565b6102de6119f4565b005b6000546001600160a01b03166101bc565b6101996102ff36600461370f565b611a08565b610199610312366004613853565b611c59565b61028e61032536600461370f565b61209c565b610199610338366004613853565b6120eb565b61019961034b366004613e9f565b612568565b61019961035e366004613853565b612650565b6103ac610371366004613f6a565b8151602081840181018051600282529282019482019490942091909352909152600090815260409020805460039091015460ff918216911682565b60405161017d929190613fc8565b6102de6103c8366004613fe5565b612985565b80516020818301810180516001825292820191909301209152805481906103f390614000565b80601f016020809104026020016040519081016040528092919081815260200182805461041f90614000565b801561046c5780601f106104415761010080835404028352916020019161046c565b820191906000526020600020905b81548152906001019060200180831161044f57829003601f168201915b50505050600183015460028401805493946001600160a01b03831694600160a01b90930460ff1693509161049f90614000565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90614000565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509080600301805461052d90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461055990614000565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050506004830154600584015460069094015492936001600160a01b039091169290915060ff1688565b60006105db6129dc565b60006001600160a01b03166001846040516105f6919061403a565b908152604051908190036020019020600101546001600160a01b03160361063b578260405163c0bab25f60e01b81526004016106329190614056565b60405180910390fd5b6000821161068b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b600060018460405161069d919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156106d1576106d1613794565b03610757576106e284600085612a22565b61072e5760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b8260018560405161073f919061403a565b908152604051908190036020019020600501556108d6565b600281600281111561076b5761076b613794565b036108bb57600384604051610780919061403a565b90815260408051602092819003830190206000868152925290205460ff16156107eb5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220616c7265616479206578697374736044820152606401610632565b6107f784600085612a22565b6108435760405162461bcd60e51b815260206004820152601660248201527f6d696e742061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051610854919061403a565b90815260200160405180910390206005016000828254610874919061407f565b92505081905550600160038560405161088d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556108d6565b8360405163c16fc3ad60e01b81526004016106329190614056565b836040516108e4919061403a565b604051908190038120848252907f0a4e1e5035320483d096cf114513007c4eda3853a4dca806da2d9faec60470a6906020015b60405180910390a260019150505b92915050565b61096f60408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b6000600184604051610981919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156109b5576109b5613794565b03610c3b576001846040516109ca919061403a565b9081526020016040518091039020604051806101000160405290816000820180546109f490614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090614000565b8015610a6d5780601f10610a4257610100808354040283529160200191610a6d565b820191906000526020600020905b815481529060010190602001808311610a5057829003601f168201915b505050918352505060018201546001600160a01b0381166020830152604090910190600160a01b900460ff166002811115610aaa57610aaa613794565b6002811115610abb57610abb613794565b8152602001600282018054610acf90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90614000565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b50505050508152602001600382018054610b6190614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90614000565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050918352505060048201546001600160a01b0316602082015260058201546040820152600682015460609091019060ff166003811115610c1e57610c1e613794565b6003811115610c2f57610c2f613794565b81525050915050610925565b6002816002811115610c4f57610c4f613794565b0361114657600384604051610c64919061403a565b90815260408051602092819003830190206000868152925290205460ff1615610ef757604051806101000160405280600186604051610ca3919061403a565b9081526040519081900360200190208054610cbd90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990614000565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050508152602001600186604051610d50919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051610d93919061403a565b9081526040519081900360200190206001015460ff600160a01b909104166002811115610dc257610dc2613794565b8152602001858152602001600186604051610ddd919061403a565b90815260200160405180910390206003018054610df990614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2590614000565b8015610e725780601f10610e4757610100808354040283529160200191610e72565b820191906000526020600020905b815481529060010190602001808311610e5557829003601f168201915b50505050508152602001600186604051610e8c919061403a565b9081526040805160209281900383019020600401546001600160a01b031683529082018690528051910190600190610ec590889061403a565b9081526040519081900360200190206006015460ff166003811115610eec57610eec613794565b815250915050610925565b604051806101000160405280600186604051610f13919061403a565b9081526040519081900360200190208054610f2d90614000565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990614000565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b50505050508152602001600186604051610fc0919061403a565b908152602001604051809103902060010160009054906101000a90046001600160a01b03166001600160a01b03168152602001600186604051611003919061403a565b9081526040519081900360200190206001015460ff600160a01b90910416600281111561103257611032613794565b815260200185815260200160018660405161104d919061403a565b9081526020016040518091039020600301805461106990614000565b80601f016020809104026020016040519081016040528092919081815260200182805461109590614000565b80156110e25780601f106110b7576101008083540402835291602001916110e2565b820191906000526020600020905b8154815290600101906020018083116110c557829003601f168201915b505050505081526020016001866040516110fc919061403a565b908152602001604051809103902060040160009054906101000a90046001600160a01b03166001600160a01b0316815260200160008152602001600186604051610ec5919061403a565b5092915050565b60006111576129dc565b60006001600160a01b0316600187604051611172919061403a565b908152604051908190036020019020600101546001600160a01b0316146111c757856040517f67ab23440000000000000000000000000000000000000000000000000000000081526004016106329190614056565b6111d18684612a39565b6002866040516111e1919061403a565b9081526040805160209281900383019020600360008181529190935220015460ff161561128557611213866003612b59565b6112855760405162461bcd60e51b815260206004820152603c60248201527f436f6e747261637420646f6573206e6f742068617665207065726d697373696f60448201527f6e20746f20696e74657261637420776974682074686520746f6b656e000000006064820152608401610632565b6040518061010001604052808a8152602001896001600160a01b031681526020018860028111156112b8576112b8613794565b8152602001878152602001868152602001856001600160a01b03168152602001600081526020018360038111156112f1576112f1613794565b815250600187604051611304919061403a565b9081526040519081900360200190208151819061132190826140e0565b5060208201516001820180546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff1983168117825560408501519274ffffffffffffffffffffffffffffffffffffffffff191617600160a01b83600281111561138a5761138a613794565b0217905550606082015160028201906113a390826140e0565b50608082015160038201906113b890826140e0565b5060a082015160048201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560c0820151600582015560e082015160068201805460ff1916600183600381111561141957611419613794565b021790555050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905061145d87826140e0565b508560405161146c919061403a565b60405180910390207f1455a30f034090309f76768ab435a6bd3c547427fc31dbe48477cfb5b9f47dda8a8a8a886040516114a994939291906141a0565b60405180910390a250600198975050505050505050565b60006114ca6129dc565b60006001600160a01b03166001856040516114e5919061403a565b908152604051908190036020019020600101546001600160a01b031603611521578360405163c0bab25f60e01b81526004016106329190614056565b600082116115715760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600185604051611583919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156115b7576115b7613794565b036116c257826001866040516115cd919061403a565b908152602001604051809103902060050154101561162d5760405162461bcd60e51b815260206004820181905260248201527f61737369676e206173736574206173736574206973206e6f74206c6f636b65646044820152606401610632565b61163a8560028587612b6f565b6116865760405162461bcd60e51b815260206004820152601860248201527f61737369676e2061737365742063616c6c206661696c656400000000000000006044820152606401610632565b82600186604051611697919061403a565b908152602001604051809103902060050160008282546116b791906141e4565b909155506118b99050565b60028160028111156116d6576116d6613794565b0361189e5760006001866040516116ed919061403a565b9081526020016040518091039020600501541161174c5760405162461bcd60e51b815260206004820181905260248201527f41737369676e206e6674202d206173736574206973206e6f74206c6f636b65646044820152606401610632565b60038560405161175c919061403a565b908152604080519182900360209081019092206000868152925290205460ff1615156001146117cd5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b6117da8560028587612b6f565b6118265760405162461bcd60e51b815260206004820152601660248201527f61737369676e206e66742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018086604051611837919061403a565b9081526020016040518091039020600501600082825461185791906141e4565b925050819055506000600386604051611870919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790556118b9565b8460405163c16fc3ad60e01b81526004016106329190614056565b846040516118c7919061403a565b604080519182900382206001600160a01b038716835260208301869052917f0b3112bdbedc0251766a323a5c6ad4df77174bbc08bd61b944815ad9efe8d54c910160405180910390a2506001949350505050565b60606004805480602002602001604051908101604052809291908181526020016000905b828210156119eb57838290600052602060002001805461195e90614000565b80601f016020809104026020016040519081016040528092919081815260200182805461198a90614000565b80156119d75780601f106119ac576101008083540402835291602001916119d7565b820191906000526020600020905b8154815290600101906020018083116119ba57829003601f168201915b50505050508152602001906001019061193f565b50505050905090565b6119fc6129dc565b611a066000612e8b565b565b6000611a126129dc565b60006001600160a01b0316600183604051611a2d919061403a565b908152604051908190036020019020600101546001600160a01b031603611a69578160405163c0bab25f60e01b81526004016106329190614056565b6000600183604051611a7b919061403a565b9081526020016040518091039020600501541115611ac757816040517fb7d2c10a0000000000000000000000000000000000000000000000000000000081526004016106329190614056565b611b79600183604051611ada919061403a565b90815260200160405180910390206002018054611af690614000565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2290614000565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050612ee8565b600182604051611b89919061403a565b9081526040519081900360200190206000611ba48282613422565b60018201805474ffffffffffffffffffffffffffffffffffffffffff19169055611bd2600283016000613422565b611be0600383016000613422565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820155600601805460ff19169055604051611c2090839061403a565b604051908190038120907f3855d31914452a5e7361730662e60834555d7cb26d380140894d85fd0d13b85490600090a25060015b919050565b6000611c636129dc565b60006001600160a01b0316600184604051611c7e919061403a565b908152604051908190036020019020600101546001600160a01b031603611cba578260405163c0bab25f60e01b81526004016106329190614056565b60008211611d0a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051611d1c919061403a565b90815260405190819003602001902060019081015460ff600160a01b909104169150816002811115611d5057611d50613794565b03611e5a5782600185604051611d66919061403a565b9081526020016040518091039020600501541015611dc65760405162461bcd60e51b815260206004820152601e60248201527f6275726e206173736574206173736574206973206e6f74206c6f636b656400006044820152606401610632565b611dd284600185612a22565b611e1e5760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b82600185604051611e2f919061403a565b90815260200160405180910390206005016000828254611e4f91906141e4565b909155506120579050565b6002816002811115611e6e57611e6e613794565b036108bb576000600185604051611e85919061403a565b90815260200160405180910390206005015411611f0a5760405162461bcd60e51b815260206004820152602360248201527f547279696e6720746f206275726e20616e20756e6163636f756e74656420417360448201527f73657400000000000000000000000000000000000000000000000000000000006064820152608401610632565b600384604051611f1a919061403a565b908152604080519182900360209081019092206000868152925290205460ff161515600114611f8b5760405162461bcd60e51b815260206004820181905260248201527f556e697175652044657363726970746f7220646f6573206e6f742065786973746044820152606401610632565b611f9784600185612a22565b611fe35760405162461bcd60e51b815260206004820152601660248201527f6275726e2061737365742063616c6c206661696c6564000000000000000000006044820152606401610632565b60018085604051611ff4919061403a565b9081526020016040518091039020600501600082825461201491906141e4565b92505081905550600060038560405161202d919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612065919061403a565b604051908190038120848252907fa0237080cf48d9e1fbb9ef1f82e33b11170d047b2b540a73b457d0916d53ee9990602001610917565b6120e060408051610100810182526060808252600060208301819052928201839052808201819052608082015260a0810182905260c081018290529060e082015290565b61092582600061092b565b60006120f56129dc565b60006001600160a01b0316600184604051612110919061403a565b908152604051908190036020019020600101546001600160a01b03160361214c578260405163c0bab25f60e01b81526004016106329190614056565b6000821161219c5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b60006001846040516121ae919061403a565b90815260405190819003602001902060019081015460ff600160a01b9091041691508160028111156121e2576121e2613794565b0361230057826001856040516121f8919061403a565b90815260200160405180910390206005015410156122465783836040517fed579e600000000000000000000000000000000000000000000000000000000081526004016106329291906141f7565b61225284600585612a22565b6122c45760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2066756e6769626c652061737365742063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610632565b826001856040516122d5919061403a565b908152602001604051809103902060050160008282546122f591906141e4565b909155506125239050565b600281600281111561231457612314613794565b036108bb57600384604051612329919061403a565b908152604080519182900360209081019092206000868152925290205460ff16151560011461239a5760405162461bcd60e51b815260206004820152601060248201527f546f6b656e204e6f74204c6f636b6564000000000000000000000000000000006044820152606401610632565b60006001856040516123ac919061403a565b908152602001604051809103902060050154116124315760405162461bcd60e51b815260206004820152603360248201527f547279696e6720746f20556e6c6f636b20616e2061737365742074686174206960448201527f73206e6f74206163636f756e74656420666f72000000000000000000000000006064820152608401610632565b61243d84600585612a22565b6124af5760405162461bcd60e51b815260206004820152602560248201527f556e6c6f636b206e6f6e2066756e6769626c652061737365742063616c6c206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610632565b600180856040516124c0919061403a565b908152602001604051809103902060050160008282546124e091906141e4565b9250508190555060006003856040516124f9919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b83604051612531919061403a565b604051908190038120848252907f7b3c894115251262b174b7aeab24a57e00bc2e8853d1ef2f57a217edaa69c06e90602001610917565b60006125726129dc565b3063433f60ac89898989898960006040519080825280602002602001820160405280156125dc57816020015b6125c96040805160808101909152806000815260606020820181905260408201819052600091015290565b81526020019060019003908161259e5790505b508a6040518963ffffffff1660e01b8152600401612601989796959493929190614219565b6020604051808303816000875af1158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906143ba565b98975050505050505050565b600061265a6129dc565b60006001600160a01b0316600184604051612675919061403a565b908152604051908190036020019020600101546001600160a01b0316036126b1578260405163c0bab25f60e01b81526004016106329190614056565b600082116127015760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206173736574206174747269627574650000000000000000006044820152606401610632565b6000600184604051612713919061403a565b90815260405190819003602001902060019081015460ff600160a01b90910416915081600281111561274757612747613794565b036127e05761275884600485612a22565b6127a45760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b826001856040516127b5919061403a565b908152602001604051809103902060050160008282546127d5919061407f565b909155506129409050565b60028160028111156127f4576127f4613794565b036108bb57600384604051612809919061403a565b90815260408051602092819003830190206000868152925290205460ff16156128745760405162461bcd60e51b815260206004820152601460248201527f546f6b656e20416c7265616479204c6f636b65640000000000000000000000006044820152606401610632565b61288084600485612a22565b6128cc5760405162461bcd60e51b815260206004820152601160248201527f546f6b656e204c6f636b204661696c65640000000000000000000000000000006044820152606401610632565b600180856040516128dd919061403a565b908152602001604051809103902060050160008282546128fd919061407f565b925050819055506001600385604051612916919061403a565b9081526040805160209281900383019020600087815292529020805460ff19169115159190911790555b8360405161294e919061403a565b604051908190038120848252907fc480ef4e831b2ca5eb0b2f95c6564d9a56af5b3fe2383393008e3f1708dc979790602001610917565b61298d6129dc565b6001600160a01b0381166129d0576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610632565b6129d981612e8b565b50565b6000546001600160a01b03163314611a06576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610632565b6000612a318484846000612b6f565b949350505050565b60005b8151811015612b5457818181518110612a5757612a576143d7565b6020026020010151600284604051612a6f919061403a565b90815260200160405180910390206000848481518110612a9157612a916143d7565b6020026020010151600001516006811115612aae57612aae613794565b6006811115612abf57612abf613794565b8152602081019190915260400160002081518154829060ff19166001836006811115612aed57612aed613794565b02179055506020828101518051612b0a926001850192019061345c565b5060408201518051612b269160028401916020909101906134b2565b50606091909101516003909101805460ff191691151591909117905580612b4c816143ed565b915050612a3c565b505050565b6000612b688383600080612b6f565b9392505050565b6000600285604051612b81919061403a565b90815260200160405180910390206000856006811115612ba357612ba3613794565b6006811115612bb457612bb4613794565b815260208101919091526040016000206003015460ff16612bd757506000612a31565b60005b600286604051612bea919061403a565b90815260200160405180910390206000866006811115612c0c57612c0c613794565b6006811115612c1d57612c1d613794565b8152602081019190915260400160002060010154811015612e7f576000600287604051612c4a919061403a565b90815260200160405180910390206000876006811115612c6c57612c6c613794565b6006811115612c7d57612c7d613794565b81526020019081526020016000206001018281548110612c9f57612c9f6143d7565b90600052602060002001604051602001612cb99190614406565b6040516020818303038152906040528051906020012090506000612dd582612dd060028b604051612cea919061403a565b908152602001604051809103902060008b6006811115612d0c57612d0c613794565b6006811115612d1d57612d1d613794565b81526020019081526020016000206002018681548110612d3f57612d3f6143d7565b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015612dc357602002820191906000526020600020906000905b82829054906101000a900460ff166007811115612da157612da1613794565b815260206001928301818104948501949093039092029101808411612d825790505b50505050508b898b613046565b613363565b90506000600189604051612de9919061403a565b908152604051908190036020018120600101546001600160a01b031690612e1190849061403a565b6000604051808303816000865af19150503d8060008114612e4e576040519150601f19603f3d011682016040523d82523d6000602084013e612e53565b606091505b5050905080612e69576000945050505050612a31565b5050508080612e77906143ed565b915050612bda565b50600195945050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60045481101561304257612fa460048281548110612f0b57612f0b6143d7565b906000526020600020018054612f2090614000565b80601f0160208091040260200160405190810160405280929190818152602001828054612f4c90614000565b8015612f995780601f10612f6e57610100808354040283529160200191612f99565b820191906000526020600020905b815481529060010190602001808311612f7c57829003601f168201915b5050505050836133fd565b156130305760048054612fb9906001906141e4565b81548110612fc957612fc96143d7565b9060005260206000200160048281548110612fe657612fe66143d7565b906000526020600020019081612ffc919061447c565b50600480548061300e5761300e614557565b60019003818190600052602060002001600061302a9190613422565b90555050565b8061303a816143ed565b915050612eeb565b5050565b60606000855167ffffffffffffffff8111156130645761306461362f565b60405190808252806020026020018201604052801561309757816020015b60608152602001906001900390816130825790505b50905060005b86518110156133595760058782815181106130ba576130ba6143d7565b602002602001015160078111156130d3576130d3613794565b036131155760408051306020820152015b604051602081830303815290604052828281518110613105576131056143d7565b6020026020010181905250613347565b6002878281518110613129576131296143d7565b6020026020010151600781111561314257613142613794565b0361315857856040516020016130e49190614056565b600487828151811061316c5761316c6143d7565b6020026020010151600781111561318557613185613794565b0361319b576040805160208101869052016130e4565b60038782815181106131af576131af6143d7565b602002602001015160078111156131c8576131c8613794565b03613206576001866040516131dd919061403a565b908152604080519182900360209081018320600401546001600160a01b031690830152016130e4565b600087828151811061321a5761321a6143d7565b6020026020010151600781111561323357613233613794565b0361327157600186604051613248919061403a565b908152604080519182900360209081018320600101546001600160a01b031690830152016130e4565b6006878281518110613285576132856143d7565b6020026020010151600781111561329e5761329e613794565b036132bc57604080516001600160a01b0387166020820152016130e4565b60078782815181106132d0576132d06143d7565b602002602001015160078111156132e9576132e9613794565b036132ff576040805160208101869052016130e4565b60405162461bcd60e51b815260206004820152601660248201527f5661726961626c65206e6f7420737570706f72746564000000000000000000006044820152606401610632565b80613351816143ed565b91505061309d565b5095945050505050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008416602082015281516004818303018152602490910190915260005b825181101561114657818382815181106133c0576133c06143d7565b60200260200101516040516020016133d992919061456d565b604051602081830303815290604052915080806133f5906143ed565b9150506133a4565b600081518351148015612b685750508051602091820120825192909101919091201490565b50805461342e90614000565b6000825580601f1061343e575050565b601f0160209004906000526020600020908101906129d9919061350b565b8280548282559060005260206000209081019282156134a2579160200282015b828111156134a2578251829061349290826140e0565b509160200191906001019061347c565b506134ae929150613520565b5090565b8280548282559060005260206000209081019282156134ff579160200282015b828111156134ff57825180516134ef91849160209091019061353d565b50916020019190600101906134d2565b506134ae9291506135ed565b5b808211156134ae576000815560010161350c565b808211156134ae5760006135348282613422565b50600101613520565b82805482825590600052602060002090601f016020900481019282156135e15791602002820160005b838211156135b257835183826101000a81548160ff0219169083600781111561359157613591613794565b02179055509260200192600101602081600001049283019260010302613566565b80156135df5782816101000a81549060ff02191690556001016020816000010492830192600103026135b2565b505b506134ae92915061350b565b808211156134ae576000613601828261360a565b506001016135ed565b50805460008255601f0160209004906000526020600020908101906129d9919061350b565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156136685761366861362f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156136975761369761362f565b604052919050565b600082601f8301126136b057600080fd5b813567ffffffffffffffff8111156136ca576136ca61362f565b6136dd601f8201601f191660200161366e565b8181528460208386010111156136f257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561372157600080fd5b813567ffffffffffffffff81111561373857600080fd5b612a318482850161369f565b60005b8381101561375f578181015183820152602001613747565b50506000910152565b60008151808452613780816020860160208601613744565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106137ba576137ba613794565b9052565b600481106137ba576137ba613794565b60006101008083526137e28184018c613768565b90506001600160a01b03808b166020850152613801604085018b6137aa565b8382036060850152613813828a613768565b915083820360808501526138278289613768565b925080871660a085015250508360c083015261384660e08301846137be565b9998505050505050505050565b6000806040838503121561386657600080fd5b823567ffffffffffffffff81111561387d57600080fd5b6138898582860161369f565b95602094909401359450505050565b80356001600160a01b0381168114611c5457600080fd5b6000806000806000608086880312156138c757600080fd5b6138d086613898565b94506138de60208701613898565b935060408601359250606086013567ffffffffffffffff8082111561390257600080fd5b818801915088601f83011261391657600080fd5b81358181111561392557600080fd5b89602082850101111561393757600080fd5b9699959850939650602001949392505050565b6020815260008251610100806020850152613969610120850183613768565b9150602085015161398560408601826001600160a01b03169052565b50604085015161399860608601826137aa565b506060850151601f19808685030160808701526139b58483613768565b935060808701519150808685030160a0870152506139d38382613768565b92505060a08501516139f060c08601826001600160a01b03169052565b5060c085015160e085015260e0850151613a0c828601826137be565b5090949350505050565b803560038110611c5457600080fd5b600067ffffffffffffffff821115613a3f57613a3f61362f565b5060051b60200190565b803560078110611c5457600080fd5b600082601f830112613a6957600080fd5b81356020613a7e613a7983613a25565b61366e565b828152600592831b8501820192828201919087851115613a9d57600080fd5b8387015b85811015613b4257803567ffffffffffffffff811115613ac15760008081fd5b8801603f81018a13613ad35760008081fd5b858101356040613ae5613a7983613a25565b82815291851b8301810191888101908d841115613b025760008081fd5b938201935b83851015613b31578435925060088310613b215760008081fd5b8282529389019390890190613b07565b885250505093850193508401613aa1565b5090979650505050505050565b80151581146129d957600080fd5b8035611c5481613b4f565b600082601f830112613b7957600080fd5b613b86613a798335613a25565b82358082526020808301929160051b85010185811115613ba557600080fd5b602085015b81811015613cd65767ffffffffffffffff8082351115613bc957600080fd5b813587016080818a03601f19011215613be157600080fd5b613be9613645565b613bf560208301613a49565b8152604082013583811115613c0957600080fd5b8201603f81018b13613c1a57600080fd5b6020810135613c2b613a7982613a25565b81815260059190911b82016040019060208101908d831115613c4c57600080fd5b604084015b83811015613c85578781351115613c6757600080fd5b613c778f6040833588010161369f565b835260209283019201613c51565b506020850152505050606082013583811115613ca057600080fd5b613caf8b602083860101613a58565b604083015250613cc160808301613b5d565b60608201528652505060209384019301613baa565b509095945050505050565b803560048110611c5457600080fd5b600080600080600080600080610100898b031215613d0d57600080fd5b883567ffffffffffffffff80821115613d2557600080fd5b613d318c838d0161369f565b9950613d3f60208c01613898565b9850613d4d60408c01613a16565b975060608b0135915080821115613d6357600080fd5b613d6f8c838d0161369f565b965060808b0135915080821115613d8557600080fd5b613d918c838d0161369f565b9550613d9f60a08c01613898565b945060c08b0135915080821115613db557600080fd5b50613dc28b828c01613b68565b925050613dd160e08a01613ce1565b90509295985092959890939650565b600080600060608486031215613df557600080fd5b833567ffffffffffffffff811115613e0c57600080fd5b613e188682870161369f565b935050613e2760208501613898565b9150604084013590509250925092565b600081518084526020808501808196508360051b8101915082860160005b85811015613e7f578284038952613e6d848351613768565b98850198935090840190600101613e55565b5091979650505050505050565b602081526000612b686020830184613e37565b600080600080600080600060e0888a031215613eba57600080fd5b873567ffffffffffffffff80821115613ed257600080fd5b613ede8b838c0161369f565b9850613eec60208b01613898565b9750613efa60408b01613a16565b965060608a0135915080821115613f1057600080fd5b613f1c8b838c0161369f565b955060808a0135915080821115613f3257600080fd5b50613f3f8a828b0161369f565b935050613f4e60a08901613898565b9150613f5c60c08901613ce1565b905092959891949750929550565b60008060408385031215613f7d57600080fd5b823567ffffffffffffffff811115613f9457600080fd5b613fa08582860161369f565b925050613faf60208401613a49565b90509250929050565b600781106137ba576137ba613794565b60408101613fd68285613fb8565b82151560208301529392505050565b600060208284031215613ff757600080fd5b612b6882613898565b600181811c9082168061401457607f821691505b60208210810361403457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161404c818460208701613744565b9190910192915050565b602081526000612b686020830184613768565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092557610925614069565b601f821115612b5457600081815260208120601f850160051c810160208610156140b95750805b601f850160051c820191505b818110156140d8578281556001016140c5565b505050505050565b815167ffffffffffffffff8111156140fa576140fa61362f565b61410e816141088454614000565b84614092565b602080601f831160018114614143576000841561412b5750858301515b600019600386901b1c1916600185901b1785556140d8565b600085815260208120601f198616915b8281101561417257888601518255948401946001909101908401614153565b50858210156141905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080815260006141b36080830187613768565b90506001600160a01b0380861660208401526141d260408401866137aa565b80841660608401525095945050505050565b8181038181111561092557610925614069565b60408152600061420a6040830185613768565b90508260208301529392505050565b6101008152600061422e61010083018b613768565b6001600160a01b03808b16602085015261424b604085018b6137aa565b838203606085015261425d828a613768565b915083820360808501526142718289613768565b915080871660a08501525082810360c084015280855180835260208301915060208160051b8401016020880160005b838110156143a457601f198087850301865282516142bf858251613fb8565b6020810151608060208701526142d86080870182613e37565b90506040820151868203604088015281815180845260208401915060208160051b85010160208401935060005b8281101561436d57858203880184528451805180845260209182019184019060005b818110156143555783516008811061434157614341613794565b835260209384019390920191600101614327565b50506020968701969590950194925050600101614305565b506060860151965061438360608b018815159052565b809950505050505050506020820191506020850194506001810190506142a0565b50508094505050505061384660e08301846137be565b6000602082840312156143cc57600080fd5b8151612b6881613b4f565b634e487b7160e01b600052603260045260246000fd5b6000600182016143ff576143ff614069565b5060010190565b600080835461441481614000565b6001828116801561442c576001811461444157614470565b60ff1984168752821515830287019450614470565b8760005260208060002060005b858110156144675781548a82015290840190820161444e565b50505082870194505b50929695505050505050565b818103614487575050565b6144918254614000565b67ffffffffffffffff8111156144a9576144a961362f565b6144b7816141088454614000565b6000601f8211600181146144eb57600083156144d35750848201545b600019600385901b1c1916600184901b178455614550565b600085815260209020601f19841690600086815260209020845b838110156145255782860154825560019586019590910190602001614505565b50858310156145435781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b634e487b7160e01b600052603160045260246000fd5b6000835161457f818460208801613744565b835190830190614593818360208801613744565b0194935050505056fea2646970667358221220cc545097d62ab752192a515a53206f325e79a54a4fe781e2769cb76ecb844be064736f6c6343000814003360806040523480156200001157600080fd5b5060405162001d2b38038062001d2b8339810160408190526200003491620001b1565b6040518060400160405280600b81526020016a29a0aa2827232a37b5b2b760a91b8152506040518060400160405280600781526020016614d0551413919560ca1b815250816001908162000089919062000288565b50600262000098828262000288565b505050620000cd7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e826200010260201b60201c565b50620000fa7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f8262000102565b505062000354565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001a7576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200015e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001ab565b5060005b92915050565b600060208284031215620001c457600080fd5b81516001600160a01b0381168114620001dc57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020e57607f821691505b6020821081036200022f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028357600081815260208120601f850160051c810160208610156200025e5750805b601f850160051c820191505b818110156200027f578281556001016200026a565b5050505b505050565b81516001600160401b03811115620002a457620002a4620001e3565b620002bc81620002b58454620001f9565b8462000235565b602080601f831160018114620002f45760008415620002db5750858301515b600019600386901b1c1916600185901b1785556200027f565b600085815260208120601f198616915b82811015620003255788860151825594840194600190910190840162000304565b5085821015620003445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6119c780620003646000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b5bfddea116100a2578063d547741f11610071578063d547741f146104a5578063e58378bb146104b8578063e985e9c5146104df578063ea1340711461051b57600080fd5b8063b5bfddea14610445578063b88d4fde1461046c578063be7604881461047f578063c87b56dd1461049257600080fd5b806395d89b41116100de57806395d89b411461040f578063a217fddf14610417578063a22cb4651461041f578063a5e99b8e1461043257600080fd5b806370a08231146103b25780637750c9f01461038c5780638d944fd9146103c557806391d14854146103d857600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e1461036657806342966c681461037957806359508f8f1461038c5780636352211e1461039f57600080fd5b80632f2ff15d1461031a57806336568abe1461032d5780633ae9449d1461034057806340c10f191461035357600080fd5b8063150b7a02116101c3578063150b7a021461027357806323b872dd146102c3578063248a9ca3146102d65780632a16cca41461030757600080fd5b806301ffc9a7146101f557806306fdde031461021e578063081812fc14610233578063095ea7b31461025e575b600080fd5b610209610203366004611580565b50600090565b60405190151581526020015b60405180910390f35b61022661052e565b60405161021591906115ed565b610246610241366004611600565b6105c0565b6040516001600160a01b039091168152602001610215565b61027161026c366004611635565b6105eb565b005b61029261028136600461165f565b630a85bd0160e11b95945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b6102716102d13660046116fa565b6105fa565b6102f96102e4366004611600565b60009081526020819052604090206001015490565b604051908152602001610215565b610209610315366004611635565b6106a3565b610271610328366004611736565b61071e565b61027161033b366004611736565b610743565b6102f961034e366004611762565b610794565b610209610361366004611635565b6107a7565b6102716103743660046116fa565b6107e7565b610209610387366004611600565b610802565b61020961039a3660046116fa565b610917565b6102466103ad366004611600565b610924565b6102f96103c0366004611762565b61092f565b6102096103d3366004611635565b610990565b6102096103e6366004611736565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102266109ea565b6102f9600081565b61027161042d36600461177d565b6109f9565b610209610440366004611762565b610a04565b6102f97f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b61027161047a3660046117cf565b610a5a565b61020961048d366004611635565b610a71565b6102266104a0366004611600565b610a8f565b6102716104b3366004611736565b610b03565b6102f97fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b6102096104ed3660046118ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b610209610529366004611762565b610b28565b60606001805461053d906118d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610569906118d5565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b60006105cb82610bad565b506000828152600560205260409020546001600160a01b03165b92915050565b6105f6828233610be6565b5050565b6001600160a01b03821661062957604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610636838333610bf3565b9050836001600160a01b0316816001600160a01b03161461069d576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610620565b50505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6106cf81610cf9565b60006106da846105c0565b9050806001600160a01b0316856001600160a01b03161480610715575061070084610924565b6001600160a01b0316856001600160a01b0316145b95945050505050565b60008281526020819052604090206001015461073981610cf9565b61069d8383610d06565b6001600160a01b0381163314610785576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61078f8282610db0565b505050565b6000806107a08361092f565b9392505050565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6107d381610cf9565b6107dd8484610e33565b5060019392505050565b61078f83838360405180602001604052806000815250610a5a565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f61082e81610cf9565b33600061083a856105c0565b9050806001600160a01b0316826001600160a01b03161480610875575061086085610924565b6001600160a01b0316826001600160a01b0316145b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f43616c6c6572206973206e6f7420617070726f76656420746f206f706572617460448201527f65206f6e207468697320746f6b656e00000000000000000000000000000000006064820152608401610620565b61090a85610e4d565b6001935050505b50919050565b60006107dd8484846107e7565b60006105e582610bad565b60006001600160a01b038216610974576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b506001600160a01b031660009081526004602052604090205490565b60007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f6109bc81610cf9565b6000838152600360205260409020546001600160a01b03166109df818686610e88565b506001949350505050565b60606002805461053d906118d5565b6105f6338383610f05565b60007fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e610a3081610cf9565b6107dd7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f84610d06565b610a658484846105fa565b61069d84848484610fbd565b6000610a86610a7f83610924565b84846107e7565b50600192915050565b6060610a9a82610bad565b506000610ab260408051602081019091526000815290565b90506000815111610ad257604051806020016040528060008152506107a0565b80610adc846110fe565b604051602001610aed929190611909565b6040516020818303038152906040529392505050565b600082815260208190526040902060010154610b1e81610cf9565b61069d8383610db0565b6001600160a01b03811660009081527f7dcd276b72586271b4623598c6b3ecb5f3594881d1da5ce0d28e8f8adbf67787602052604081205460ff1615610b7057506001919050565b6040517f1aee145f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6000818152600360205260408120546001600160a01b0316806105e557604051637e27328960e01b815260048101849052602401610620565b61078f838383600161119e565b6000828152600360205260408120546001600160a01b0390811690831615610c2057610c20818486610e88565b6001600160a01b03811615610c5e57610c3d60008560008061119e565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610c8d576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610d0381336112e9565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610da8576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610d603390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105e5565b5060006105e5565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1615610da8576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105e5565b6105f6828260405180602001604052806000815250611355565b6000610e5c6000836000610bf3565b90506001600160a01b0381166105f657604051637e27328960e01b815260048101839052602401610620565b610e9383838361136c565b61078f576001600160a01b038316610ec157604051637e27328960e01b815260048101829052602401610620565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610620565b6001600160a01b038216610f50576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610620565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069d57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610fff903390889087908790600401611938565b6020604051808303816000875af192505050801561103a575060408051601f3d908101601f1916820190925261103791810190611974565b60015b6110a3573d808015611068576040519150601f19603f3d011682016040523d82523d6000602084013e61106d565b606091505b50805160000361109b57604051633250574960e11b81526001600160a01b0385166004820152602401610620565b805181602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116630a85bd0160e11b146110f757604051633250574960e11b81526001600160a01b0385166004820152602401610620565b5050505050565b6060600061110b836113f2565b600101905060008167ffffffffffffffff81111561112b5761112b6117b9565b6040519080825280601f01601f191660200182016040528015611155576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461115f57509392505050565b80806111b257506001600160a01b03821615155b156112ac5760006111c284610bad565b90506001600160a01b038316158015906111ee5750826001600160a01b0316816001600160a01b031614155b801561122057506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15611262576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610620565b81156112aa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166105f6576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610620565b61135f83836114d4565b61078f6000848484610fbd565b60006001600160a01b038316158015906113ea5750826001600160a01b0316846001600160a01b031614806113c657506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806113ea57506000828152600560205260409020546001600160a01b038481169116145b949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061143b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611467576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061148557662386f26fc10000830492506010015b6305f5e100831061149d576305f5e100830492506008015b61271083106114b157612710830492506004015b606483106114c3576064830492506002015b600a83106105e55760010192915050565b6001600160a01b0382166114fe57604051633250574960e11b815260006004820152602401610620565b600061150c83836000610bf3565b90506001600160a01b0381161561078f576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610620565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0357600080fd5b60006020828403121561159257600080fd5b81356107a081611552565b60005b838110156115b85781810151838201526020016115a0565b50506000910152565b600081518084526115d981602086016020860161159d565b601f01601f19169290920160200192915050565b6020815260006107a060208301846115c1565b60006020828403121561161257600080fd5b5035919050565b80356001600160a01b038116811461163057600080fd5b919050565b6000806040838503121561164857600080fd5b61165183611619565b946020939093013593505050565b60008060008060006080868803121561167757600080fd5b61168086611619565b945061168e60208701611619565b935060408601359250606086013567ffffffffffffffff808211156116b257600080fd5b818801915088601f8301126116c657600080fd5b8135818111156116d557600080fd5b8960208285010111156116e757600080fd5b9699959850939650602001949392505050565b60008060006060848603121561170f57600080fd5b61171884611619565b925061172660208501611619565b9150604084013590509250925092565b6000806040838503121561174957600080fd5b8235915061175960208401611619565b90509250929050565b60006020828403121561177457600080fd5b6107a082611619565b6000806040838503121561179057600080fd5b61179983611619565b9150602083013580151581146117ae57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156117e557600080fd5b6117ee85611619565b93506117fc60208601611619565b925060408501359150606085013567ffffffffffffffff8082111561182057600080fd5b818701915087601f83011261183457600080fd5b813581811115611846576118466117b9565b604051601f8201601f19908116603f0116810190838211818310171561186e5761186e6117b9565b816040528281528a602084870101111561188757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118be57600080fd5b6118c783611619565b915061175960208401611619565b600181811c908216806118e957607f821691505b60208210810361091157634e487b7160e01b600052602260045260246000fd5b6000835161191b81846020880161159d565b83519083019061192f81836020880161159d565b01949350505050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261196a60808301846115c1565b9695505050505050565b60006020828403121561198657600080fd5b81516107a08161155256fea26469706673582212203f5ab80dc6f0b3ee871144587f727bf6705f6dba123b4717d2615eebae48e21064736f6c63430008140033546f6b656e2073686f756c64206e6f74206578697374206265666f7265207772617070696e67a2646970667358221220dee22a316f4323ae8b19012d8fc8ce66ad4ea5c4d06f1bb9da6f0f70f79e970364736f6c63430008140033","sourceMap":"442:7857:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1229:2030;;;:::i;:::-;;2161:134:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3265:148:44;;;:::i;2930:133:23:-;;;:::i;2631:141::-;;;:::i;486:38:44:-;;;;;-1:-1:-1;;;;;486:38:44;;;;;;-1:-1:-1;;;;;1030:55:45;;;1012:74;;1000:2;985:18;486:38:44;866:226:45;7202:279:44;;;:::i;2447:178:23:-;;;:::i;:::-;;;;;;;:::i;3640:481:44:-;;;:::i;2301:140:23:-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;4576:358:44:-;;;:::i;1866:141:23:-;;;:::i;7487:517:44:-;;;:::i;1819:584:17:-;;;:::i;:::-;;;4340:14:45;;4333:22;4315:41;;4303:2;4288:18;1819:584:17;4175:187:45;3419:215:44;;;:::i;6179:589::-;;;:::i;4127:443::-;;;:::i;8010:287::-;;;:::i;4940:648::-;;;:::i;2013:142:23:-;;;:::i;5594:579:44:-;;;:::i;530:66::-;;;;;-1:-1:-1;;;;;530:66:44;;;6774:422;;;:::i;1572:26:17:-;;;;;;;;;1229:2030:44;1313:4;1281:38;;;;;:::i;:::-;-1:-1:-1;;;;;1030:55:45;;;1012:74;;1000:2;985:18;1281:38:44;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1263:15:44;:56;;-1:-1:-1;;1263:56:44;-1:-1:-1;;;;;1263:56:44;;;;;;1365:18;;1341:43;;1365:18;;;1341:43;;;:::i;:::-;-1:-1:-1;;;;;1030:55:45;;;1012:74;;1000:2;985:18;1341:43:44;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1329:9:44;:55;;-1:-1:-1;;1329:55:44;-1:-1:-1;;;;;1329:55:44;;;;;;;;;;1395:16;:54;;-1:-1:-1;1395:54:44;;;;-1:-1:-1;1395:54:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1459:129:44;;;;;;;;;:13;;:129;1479:30;1459:129;;;;1511:31;1459:129;;;;1544:42;1459:129;;;;;;;;;-1:-1:-1;1459:129:44;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1633:79:44;;;;;;;;1654:20;1633:79;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1633:79:44;;;;;;-1:-1:-1;1633:79:44;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1692:13;1633:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1633:79:44;;;-1:-1:-1;1707:4:44;1633:79;;;;;;;1722:10;:21;;;;;;;1633:79;1722:21;;;;;;;;;;;;;;1598:114;;-1:-1:-1;1598:114:44;;1722:21;;;;-1:-1:-1;;1722:21:44;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;1722:21:44;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1722:21:44;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1722:21:44;;;;;;;;;;;;-1:-1:-1;;1722:21:44;;;;;;;;;;1754:18;:58;;-1:-1:-1;1754:58:44;;;;-1:-1:-1;1754:58:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1822:131:44;;;;;;;;;:15;;:131;1844:31;1822:131;;;;1877:30;1822:131;;;;1909:42;1822:131;;;;;;;;;-1:-1:-1;1822:131:44;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2000:85:44;;;;;;;;;1963:34;;2000:85;2021:22;2000:85;;;;2044:18;2000:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2063:15;2000:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2000:85:44;;;-1:-1:-1;2080:4:44;2000:85;;;;;;;2095:10;:23;;;;;;;2000:85;2095:23;;;;;;;;;;;;;;1963:122;;-1:-1:-1;1963:122:44;;2095:23;;;;-1:-1:-1;;2095:23:44;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2095:23:44;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2095:23:44;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2095:23:44;;;;;;;;;;;;-1:-1:-1;;2095:23:44;;;;;;;;;;2129:16;:46;;-1:-1:-1;2129:46:44;;;;-1:-1:-1;2129:46:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2185:97:44;;;;;;;;;2205:31;2185:97;;2238:42;2185:97;;;;:13;:97;;;;;;;-1:-1:-1;2185:97:44;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2327:79:44;;;;;;;;;2292:32;;2327:79;2292:32;2327:79;;;;2369:16;2327:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:13;2327:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2327:79:44;;;-1:-1:-1;2401:4:44;2327:79;;;;;;;2416:10;:21;;;;;;;2327:79;2416:21;;;;;;;;;;;;;;2292:114;;-1:-1:-1;2292:114:44;;2416:21;;;;-1:-1:-1;;2416:21:44;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2416:21:44;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2416:21:44;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2416:21:44;;;;;;;;;;;;-1:-1:-1;;2416:21:44;;;;;;;;;;2448:16;:38;;-1:-1:-1;2448:38:44;;;;-1:-1:-1;2448:38:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2496:64:44;;;;;;;;;2516:42;2496:64;;:13;:64;;;;;;;;-1:-1:-1;2496:64:44;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2605:79:44;;;;;;;;;2570:32;;2605:79;2626:20;2605:79;;;;2647:16;2605:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2664:13;2605:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2605:79:44;;;-1:-1:-1;2679:4:44;2605:79;;;;;;;2694:10;:21;;;;;;;2605:79;2694:21;;;;;;;;;;;;;;2570:114;;-1:-1:-1;2570:114:44;;2694:21;;;;-1:-1:-1;;2694:21:44;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2694:21:44;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2694:21:44;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2694:21:44;;;;;;;;;;;;-1:-1:-1;;2694:21:44;;;;;;;;;;2726:18;:50;;-1:-1:-1;2726:50:44;;;;-1:-1:-1;2726:50:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2786:101:44;;;;;;;;;2808:33;2786:101;;2843:42;2786:101;;;;:15;:101;;;;;;;-1:-1:-1;2786:101:44;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2934:85:44;;;;;;;;;2897:34;;2934:85;2955:22;2934:85;;;;2978:18;2934:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2997:15;2934:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2934:85:44;;;-1:-1:-1;3014:4:44;2934:85;;;;;;;3029:10;:23;;;;;;;2934:85;3029:23;;;;;;;;;;;;;;2897:122;;-1:-1:-1;2897:122:44;;3029:23;;;;-1:-1:-1;;3029:23:44;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;3029:23:44;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3029:23:44;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3029:23:44;;;;;;;;;;;;-1:-1:-1;;3029:23:44;;;;;;;;;;3077:18;;3063:33;;;;;-1:-1:-1;;;;;3077:18:44;;;3063:33;;;1012:74:45;3063:13:44;;;;985:18:45;;3063:33:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3106:9:44;;3140:15;;3106:51;;;;;-1:-1:-1;;;;;3140:15:44;;;3106:51;;;1012:74:45;3106:9:44;;;-1:-1:-1;3106:25:44;;-1:-1:-1;985:18:45;;3106:51:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3178:9:44;;3210:15;;3178:49;;;;;-1:-1:-1;;;;;3210:15:44;;;3178:49;;;1012:74:45;3167:61:44;;3178:9;;;;;:23;;985:18:45;;3178:49:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3167:10;:61::i;:::-;317:28:18;309:37;;-1:-1:-1;;;;;3238:12:44;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:2006;;;;;1229:2030::o;2161:134:23:-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:23;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;3265:148:44:-;3325:9;;:16;;;-1:-1:-1;;;3325:16:44;;;;3316:41;;-1:-1:-1;;;;;3325:9:44;;:14;;:16;;;;;:9;;:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3325:16:44;;;;;;;;;;;;:::i;:::-;3316:41;;;;;;;;;;;;;;;;;:8;:41::i;:::-;3376:9;;:18;;;-1:-1:-1;;;3376:18:44;;;;3367:39;;-1:-1:-1;;;;;3376:9:44;;:16;;:18;;;;;:9;;:18;;;;;;;:9;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3376:18:44;;;;;;;;;;;;:::i;:::-;3367:39;;;;;;;;;;;;;;;;;:8;:39::i;:::-;3265:148::o;2930:133:23:-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:23;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:23;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;7202:279:44:-;7261:15;;7284:9;;:16;;;-1:-1:-1;;;7284:16:44;;;;-1:-1:-1;;;;;7261:15:44;;;;:22;;7284:9;;:14;;:16;;;;;7261:15;;7284:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7284:16:44;;;;;;;;;;;;:::i;:::-;7261:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7261:40:44;;;;;;;;-1:-1:-1;;7261:40:44;;;;;;;;;;;;:::i;:::-;;;7257:218;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7382:37;3265:148::o;7257:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7427:48;3265:148::o;7257:218::-;;;;;;7427:48;3265:148::o;7257:218::-;7341:1;7340:2;7332:32;;;;;;;10352:2:45;7332:32:44;;;10334:21:45;10391:2;10371:18;;;10364:30;10430:19;10410:18;;;10403:47;10467:18;;7332:32:44;;;;;;;2447:178:23;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;3640:481:44:-;3677:15;;3698:9;;:16;;;-1:-1:-1;;;3698:16:44;;;;-1:-1:-1;;;;;3677:15:44;;;;:20;;3698:9;;:14;;:16;;;;;3677:15;;3698:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3698:16:44;;;;;;;;;;;;:::i;:::-;3724:9;;3771:16;;;-1:-1:-1;;;3771:16:44;;;;-1:-1:-1;;;;;3724:9:44;;;;3736:33;;3724:9;;3771:14;;:16;;;;;3724:9;;3771:16;;;;;;;;3724:9;3771:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3771:16:44;;;;;;;;;;;;:::i;:::-;3806:4;;3677:172;;-1:-1:-1;;;;;;3677:172:44;;;;;;;;;;;;;-1:-1:-1;;;;;3806:4:44;;3813:10;;3825:23;;3677:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3888:15:44;;3913:9;;:16;;;-1:-1:-1;;;3913:16:44;;;;3859:26;;-1:-1:-1;;;;;3888:15:44;;;;:24;;3913:9;;;:14;;:16;;;;;3859:26;;3913:16;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3913:16:44;;;;;;;;;;;;:::i;:::-;3888:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3888:42:44;;;;;;;;;;;;:::i;:::-;3859:71;;3940:81;3949:13;:29;;;3988:9;;;;;;;;;-1:-1:-1;;;;;3988:9:44;3940:81;;;;;;;;;;;;;;;;;:8;:81::i;:::-;4040:15;;:33;;;;;;;;4031:83;;-1:-1:-1;;;;;4040:15:44;;:31;;:33;;;;;:15;;:33;;;;;;;:15;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4040:33:44;;;;;;;;;;;;:::i;:::-;4074:1;4040:36;;;;;;;;:::i;:::-;;;;;;;4078:9;;;;;;;;;-1:-1:-1;;;;;4078:9:44;-1:-1:-1;;;;;4078:14:44;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4078:16:44;;;;;;;;;;;;:::i;:::-;4031:83;;;;;;;;;;;;;;;;;:8;:83::i;2301:140:23:-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4576:358:44;4613:15;;4634:9;;:16;;;-1:-1:-1;;;4634:16:44;;;;-1:-1:-1;;;;;4613:15:44;;;;:20;;4634:9;;:14;;:16;;;;;4613:15;;4634:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4634:16:44;;;;;;;;;;;;:::i;:::-;4660:9;;4707:16;;;-1:-1:-1;;;4707:16:44;;;;-1:-1:-1;;;;;4660:9:44;;;;4672:33;;4660:9;;4707:14;;:16;;;;;4660:9;;4707:16;;;;;;;;4660:9;4707:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4707:16:44;;;;;;;;;;;;:::i;:::-;4742:4;;4613:172;;-1:-1:-1;;;;;;4613:172:44;;;;;;;;;;;;;-1:-1:-1;;;;;4742:4:44;;4749:10;;4761:23;;4613:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4795:15:44;;4816:9;;:16;;;-1:-1:-1;;;4816:16:44;;;;-1:-1:-1;;;;;4795:15:44;;;;:20;;4816:9;;:14;;:16;;;;;4795:15;;4816:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4816:16:44;;;;;;;;;;;;:::i;:::-;4834:4;4795:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4858:9:44;;4886:15;;4858:45;;-1:-1:-1;;;4858:45:44;;-1:-1:-1;;;;;4886:15:44;;;4858:45;;;1012:74:45;4849:78:44;;4858:9;;;;;:19;;985:18:45;;4858:45:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4905:1;4849:78;;;;;;;;;;;;;;;;;:8;:78::i;1866:141:23:-;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7487:517:44;7546:15;;7567:9;;:16;;;-1:-1:-1;;;7567:16:44;;;;-1:-1:-1;;;;;7546:15:44;;;;:20;;7567:9;;:14;;:16;;;;;7546:15;;7567:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7567:16:44;;;;;;;;;;;;:::i;:::-;7593:9;;7640:16;;;-1:-1:-1;;;7640:16:44;;;;-1:-1:-1;;;;;7593:9:44;;;;7605:33;;7593:9;;7640:14;;:16;;;;;7593:9;;7640:16;;;;;;;;7593:9;7640:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7640:16:44;;;;;;;;;;;;:::i;:::-;7675:4;;7546:172;;-1:-1:-1;;;;;;7546:172:44;;;;;;;;;;;;;-1:-1:-1;;;;;7675:4:44;;7682:10;;7694:23;;7546:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7727:15:44;;7748:9;;:16;;;-1:-1:-1;;;7748:16:44;;;;-1:-1:-1;;;;;7727:15:44;;;;:20;;7748:9;;:14;;:16;;;;;7727:15;;7748:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7748:16:44;;;;;;;;;;;;:::i;:::-;7766:4;7727:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7784:15:44;;7807:9;;:16;;;-1:-1:-1;;;7807:16:44;;;;-1:-1:-1;;;;;7784:15:44;;;;:22;;7807:9;;:14;;:16;;;;;7784:15;;7807:16;;;;;;;:9;:16;;;;;;;;;;;;;;1819:584:17;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:17;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;31333:74:45;;;-1:-1:-1;;;31423:18:45;;;31416:34;2196:43:17;;;;;;;;;31306:18:45;;;2196:43:17;;;-1:-1:-1;;1671:64:17;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:17;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:17:o;1869:528::-;1819:584;:::o;3419:215:44:-;3488:15;;3513:9;;:18;;;-1:-1:-1;;;3513:18:44;;;;3467;;-1:-1:-1;;;;;3488:15:44;;;;:24;;3513:9;;;:16;;:18;;;;;3467;;3513;;;;;;;;:9;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3513:18:44;;;;;;;;;;;;:::i;:::-;3488:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3488:44:44;;;;;;;;;;;;:::i;:::-;3467:65;;3542:85;3551:5;:21;;;3582:1;3542:85;;;;;;;;;;;;;;;;;:8;:85::i;6179:589::-;6218:15;;6239:9;;:16;;;-1:-1:-1;;;6239:16:44;;;;-1:-1:-1;;;;;6218:15:44;;;;:20;;6239:9;;:14;;:16;;;;;6218:15;;6239:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6239:16:44;;;;;;;;;;;;:::i;:::-;6265:9;;6312:16;;;-1:-1:-1;;;6312:16:44;;;;-1:-1:-1;;;;;6265:9:44;;;;6277:33;;6265:9;;6312:14;;:16;;;;;6265:9;;6312:16;;;;;;;;6265:9;6312:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6312:16:44;;;;;;;;;;;;:::i;:::-;6347:4;;6218:172;;-1:-1:-1;;;;;;6218:172:44;;;;;;;;;;;;;-1:-1:-1;;;;;6347:4:44;;6354:10;;6366:23;;6218:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6417:15:44;;6400:34;;-1:-1:-1;;;6400:34:44;;-1:-1:-1;;;;;6417:15:44;;;6400:34;;;1012:74:45;6400:8:44;;;;985:18:45;;6400:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6444:9:44;;6467:4;;6444:35;;-1:-1:-1;;;6444:35:44;;-1:-1:-1;;;;;6467:4:44;;;6444:35;;;31333:74:45;6474:4:44;31423:18:45;;;31416:34;6444:9:44;;;-1:-1:-1;6444:14:44;;-1:-1:-1;31306:18:45;;6444:35:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6498:4:44;;6489:14;;-1:-1:-1;;;6489:14:44;;-1:-1:-1;;;;;6498:4:44;;;6489:14;;;1012:74:45;6489:8:44;;;;985:18:45;;6489:14:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6513:9:44;;6539:15;;6513:49;;-1:-1:-1;;;6513:49:44;;-1:-1:-1;;;;;6539:15:44;;;6513:49;;;31333:74:45;6557:4:44;31423:18:45;;;31416:34;6513:9:44;;;-1:-1:-1;6513:17:44;;-1:-1:-1;31306:18:45;;6513:49:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6572:15:44;;6593:9;;:16;;;-1:-1:-1;;;6593:16:44;;;;-1:-1:-1;;;;;6572:15:44;;;;-1:-1:-1;6572:20:44;;-1:-1:-1;6593:9:44;;;;;:14;;:16;;;;;6572:15;;6593:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6593:16:44;;;;;;;;;;;;:::i;:::-;6611:4;6572:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6626:15:44;;6649:9;;:16;;;-1:-1:-1;;;6649:16:44;;;;-1:-1:-1;;;;;6626:15:44;;;;:22;;6649:9;;:14;;:16;;;;;6626:15;;6649:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6649:16:44;;;;;;;;;;;;:::i;:::-;6667:4;6626:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6691:9:44;;6719:4;;6691:34;;-1:-1:-1;;;6691:34:44;;-1:-1:-1;;;;;6719:4:44;;;6691:34;;;1012:74:45;6682:79:44;;6691:9;;;;;:19;;985:18:45;;6691:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6727:1;6682:79;;;;;;;;;;;;;;;;;:8;:79::i;4127:443::-;4166:15;;4187:9;;:16;;;-1:-1:-1;;;4187:16:44;;;;-1:-1:-1;;;;;4166:15:44;;;;:20;;4187:9;;:14;;:16;;;;;4166:15;;4187:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4187:16:44;;;;;;;;;;;;:::i;:::-;4213:9;;4260:16;;;-1:-1:-1;;;4260:16:44;;;;-1:-1:-1;;;;;4213:9:44;;;;4225:33;;4213:9;;4260:14;;:16;;;;;4213:9;;4260:16;;;;;;;;4213:9;4260:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4260:16:44;;;;;;;;;;;;:::i;:::-;4295:4;;4166:172;;-1:-1:-1;;;;;;4166:172:44;;;;;;;;;;;;;-1:-1:-1;;;;;4295:4:44;;4302:10;;4314:23;;4166:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4348:15:44;;4371:9;;:16;;;-1:-1:-1;;;4371:16:44;;;;-1:-1:-1;;;;;4348:15:44;;;;:22;;4371:9;;:14;;:16;;;;;4348:15;;4371:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4371:16:44;;;;;;;;;;;;:::i;:::-;4348:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4427:15:44;;4452:9;;:16;;;-1:-1:-1;;;4452:16:44;;;;4398:26;;-1:-1:-1;;;;;4427:15:44;;;;:24;;4452:9;;;:14;;:16;;;;;4398:26;;4452:16;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4452:16:44;;;;;;;;;;;;:::i;:::-;4427:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4427:42:44;;;;;;;;;;;;:::i;:::-;4398:71;;4479:84;4491:13;:29;;;4530:9;;;;;;;;;-1:-1:-1;;;;;4530:9:44;4479:84;;;;;;;;;;;;;;;;;:11;:84::i;8010:287::-;8067:15;;8088:9;;:16;;;-1:-1:-1;;;8088:16:44;;;;-1:-1:-1;;;;;8067:15:44;;;;:20;;8088:9;;:14;;:16;;;;;8067:15;;8088:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8088:16:44;;;;;;;;;;;;:::i;:::-;8106:4;8067:44;;;;;;;;;;;;;;;;:::i;4940:648::-;4977:15;;4998:9;;:16;;;-1:-1:-1;;;4998:16:44;;;;-1:-1:-1;;;;;4977:15:44;;;;:20;;4998:9;;:14;;:16;;;;;4977:15;;4998:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4998:16:44;;;;;;;;;;;;:::i;:::-;5024:9;;5071:16;;;-1:-1:-1;;;5071:16:44;;;;-1:-1:-1;;;;;5024:9:44;;;;5036:33;;5024:9;;5071:14;;:16;;;;;5024:9;;5071:16;;;;;;;;5024:9;5071:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5071:16:44;;;;;;;;;;;;:::i;:::-;5106:4;;4977:172;;-1:-1:-1;;;;;;4977:172:44;;;;;;;;;;;;;-1:-1:-1;;;;;5106:4:44;;5113:10;;5125:23;;4977:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5159:15:44;;5180:9;;:16;;;-1:-1:-1;;;5180:16:44;;;;-1:-1:-1;;;;;5159:15:44;;;;:20;;5180:9;;:14;;:16;;;;;5159:15;;5180:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5180:16:44;;;;;;;;;;;;:::i;:::-;5198:4;5159:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5222:9:44;;5250:15;;5222:45;;-1:-1:-1;;;5222:45:44;;-1:-1:-1;;;;;5250:15:44;;;5222:45;;;1012:74:45;5213:79:44;;5222:9;;;;;:19;;985:18:45;;5222:45:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5269:1;5213:79;;;;;;;;;;;;;;;;;:8;:79::i;:::-;5319:15;;5302:34;;-1:-1:-1;;;5302:34:44;;-1:-1:-1;;;;;5319:15:44;;;5302:34;;;1012:74:45;5302:8:44;;;;985:18:45;;5302:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5346:9:44;;5372:15;;5346:49;;-1:-1:-1;;;5346:49:44;;-1:-1:-1;;;;;5372:15:44;;;5346:49;;;31333:74:45;5390:4:44;31423:18:45;;;31416:34;5346:9:44;;;-1:-1:-1;5346:17:44;;-1:-1:-1;31306:18:45;;5346:49:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5422:15:44;;5405:34;;-1:-1:-1;;;5405:34:44;;-1:-1:-1;;;;;5422:15:44;;;5405:34;;;1012:74:45;5405:8:44;;-1:-1:-1;5405:8:44;;-1:-1:-1;985:18:45;;5405:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5449:15:44;;5470:9;;:16;;;-1:-1:-1;;;5470:16:44;;;;-1:-1:-1;;;;;5449:15:44;;;;-1:-1:-1;5449:20:44;;-1:-1:-1;5470:9:44;;;;;:14;;:16;;;;;5449:15;;5470:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5470:16:44;;;;;;;;;;;;:::i;:::-;5488:4;5449:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5512:9:44;;5540:15;;5512:45;;-1:-1:-1;;;5512:45:44;;-1:-1:-1;;;;;5540:15:44;;;5512:45;;;1012:74:45;5503:78:44;;5512:9;;;;;:19;;985:18:45;;5512:45:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5559:1;5503:78;;;;;;;;;;;;;;;;;:8;:78::i;2013:142:23:-;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:23;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;5594:579:44:-;5631:15;;5652:9;;:16;;;-1:-1:-1;;;5652:16:44;;;;-1:-1:-1;;;;;5631:15:44;;;;:20;;5652:9;;:14;;:16;;;;;5631:15;;5652:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5652:16:44;;;;;;;;;;;;:::i;:::-;5678:9;;5725:16;;;-1:-1:-1;;;5725:16:44;;;;-1:-1:-1;;;;;5678:9:44;;;;5690:33;;5678:9;;5725:14;;:16;;;;;5678:9;;5725:16;;;;;;;;5678:9;5725:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5725:16:44;;;;;;;;;;;;:::i;:::-;5760:4;;5631:172;;-1:-1:-1;;;;;;5631:172:44;;;;;;;;;;;;;-1:-1:-1;;;;;5760:4:44;;5767:10;;5779:23;;5631:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5830:15:44;;5813:34;;-1:-1:-1;;;5813:34:44;;-1:-1:-1;;;;;5830:15:44;;;5813:34;;;1012:74:45;5813:8:44;;;;985:18:45;;5813:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5857:9:44;;5880:4;;5857:35;;-1:-1:-1;;;5857:35:44;;-1:-1:-1;;;;;5880:4:44;;;5857:35;;;31333:74:45;5887:4:44;31423:18:45;;;31416:34;5857:9:44;;;-1:-1:-1;5857:14:44;;-1:-1:-1;31306:18:45;;5857:35:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5911:4:44;;5902:14;;-1:-1:-1;;;5902:14:44;;-1:-1:-1;;;;;5911:4:44;;;5902:14;;;1012:74:45;5902:8:44;;;;985:18:45;;5902:14:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5926:9:44;;5952:15;;5926:49;;-1:-1:-1;;;5926:49:44;;-1:-1:-1;;;;;5952:15:44;;;5926:49;;;31333:74:45;5970:4:44;31423:18:45;;;31416:34;5926:9:44;;;-1:-1:-1;5926:17:44;;-1:-1:-1;31306:18:45;;5926:49:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5985:15:44;;6006:9;;:16;;;-1:-1:-1;;;6006:16:44;;;;-1:-1:-1;;;;;5985:15:44;;;;-1:-1:-1;5985:20:44;;-1:-1:-1;6006:9:44;;;;;:14;;:16;;;;;5985:15;;6006:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6006:16:44;;;;;;;;;;;;:::i;:::-;6024:4;5985:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6060:15:44;;6085:9;;:16;;;-1:-1:-1;;;6085:16:44;;;;6039:18;;-1:-1:-1;;;;;6060:15:44;;;;:24;;6085:9;;;:14;;:16;;;;;6039:18;;6085:16;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6085:16:44;;;;;;;;;;;;:::i;:::-;6103:4;6060:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6060:48:44;;;;;;;;;;;;:::i;:::-;6039:69;;6118:48;6127:5;:12;;;6141:4;6118:48;;;;;;;;;;;;;;;;;:8;:48::i;6774:422::-;6813:15;;6834:9;;:16;;;-1:-1:-1;;;6834:16:44;;;;-1:-1:-1;;;;;6813:15:44;;;;:20;;6834:9;;:14;;:16;;;;;6813:15;;6834:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6834:16:44;;;;;;;;;;;;:::i;:::-;6860:9;;6907:16;;;-1:-1:-1;;;6907:16:44;;;;-1:-1:-1;;;;;6860:9:44;;;;6872:33;;6860:9;;6907:14;;:16;;;;;6860:9;;6907:16;;;;;;;;6860:9;6907:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6907:16:44;;;;;;;;;;;;:::i;:::-;6942:4;;6813:172;;-1:-1:-1;;;;;;6813:172:44;;;;;;;;;;;;;-1:-1:-1;;;;;6942:4:44;;6949:10;;6961:23;;6813:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6995:15:44;;7016:9;;:16;;;-1:-1:-1;;;7016:16:44;;;;-1:-1:-1;;;;;6995:15:44;;;;:20;;7016:9;;:14;;:16;;;;;6995:15;;7016:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7016:16:44;;;;;;;;;;;;:::i;:::-;7034:4;6995:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7049:15:44;;7072:9;;:16;;;-1:-1:-1;;;7072:16:44;;;;-1:-1:-1;;;;;7049:15:44;;;;:22;;7072:9;;:14;;:16;;;;;7049:15;;7072:16;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7072:16:44;;;;;;;;;;;;:::i;:::-;7098:4;;7049:61;;-1:-1:-1;;;;;;7049:61:44;;;;;;;;;;-1:-1:-1;;;;;7098:4:44;;7105;;7049:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7129:9:44;;7157:4;;7129:34;;-1:-1:-1;;;7129:34:44;;-1:-1:-1;;;;;7157:4:44;;;7129:34;;;1012:74:45;7120:69:44;;7129:9;;;;;:19;;985:18:45;;7129:34:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7165:1;7120:69;;;;;;;;;;;;;;;;;:8;:69::i;3262:157:17:-;3322:9;3317:96;;3352:30;;;;;33437:2:45;33419:21;;;33476:2;33456:18;;;33449:30;33515:25;33510:2;33495:18;;33488:53;33573:2;33558:18;;33235:347;3352:30:17;;;;;;;;3396:6;:4;:6::i;17902:344::-;18038:1;18021:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18011:30;;;;;;18004:1;17987:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;17977:30;;;;;;:64;17973:267;;18062:43;;;;;34083:2:45;34065:21;;;34122:2;34102:18;;;34095:30;34161:34;34156:2;34141:18;;34134:62;34232:6;34227:2;34212:18;;34205:34;34271:3;34256:19;;33881:400;18062:43:17;;;;;;;;18124:33;18155:1;18124:33;;;;;;:::i;:::-;;;;;;;;18176;18207:1;18176:33;;;;;;:::i;:::-;;;;;;;;18223:6;:4;:6::i;3904:185::-;3991:1;-1:-1:-1;;;;;3986:6:17;:1;-1:-1:-1;;;;;3986:6:17;;3982:101;;4013:31;4040:3;4013:31;;;;;;:::i;:::-;;;;;;;;4058:14;4067:1;4070;4058:8;:14::i;:::-;3904:185;;;:::o;18251:254::-;18406:1;18389:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18379:30;;;;;;18372:1;18355:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;18345:30;;;;;;:64;18341:158;;18430:30;18456:3;18430:30;;;;;;:::i;:::-;;;;;;;;18474:14;18483:1;18486;18474:8;:14::i;5476:178::-;5557:1;5552;:6;5548:100;;5579:30;5605:3;5579:30;;;;;;:::i;:::-;;;;;;;;5623:14;5632:1;5635;5623:8;:14::i;7048:191::-;7138:1;-1:-1:-1;;;;;7133:6:17;:1;-1:-1:-1;;;;;7133:6:17;;7129:104;;7160:31;7187:3;7160:31;;;;;;:::i;:::-;;;;;;;;7205:17;7217:1;7220;7205:11;:17::i;2409:432::-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;36157:74:45;;;-1:-1:-1;;;36247:18:45;;;36240:34;;;;2712:4:17;36290:18:45;;;36283:34;2489:11:17;;1671:64;2586:43;;36130:18:45;;2652:67:17;;;-1:-1:-1;;2652:67:17;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:17;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:17;2820:7;:14;;-1:-1:-1;;2820:14:17;;;;;2409:432::o;3622:277::-;3690:1;-1:-1:-1;;;;;3685:6:17;:1;-1:-1:-1;;;;;3685:6:17;;3681:212;;3712:44;;;;;36530:2:45;36512:21;;;36569:2;36549:18;;;36542:30;36608:34;36603:2;36588:18;;36581:62;-1:-1:-1;;;36674:2:45;36659:18;;36652:35;36719:3;36704:19;;36328:401;3712:44:17;;;;;;;;3775:34;3807:1;3775:34;;;;;;:::i;:::-;;;;;;;;3828;3860:1;3828:34;;;;;;:::i;5209:262::-;5271:1;5266;:6;5262:203;;5293:41;;;;;37740:2:45;37722:21;;;37779:2;37759:18;;;37752:30;37818:34;37813:2;37798:18;;37791:62;37889:4;37884:2;37869:18;;37862:32;37926:3;37911:19;;37538:398;5293:41:17;;;;;;;;5353:31;5382:1;5353:31;;;;;;:::i;:::-;;;;;;;;5403;5432:1;5403:31;;;;;;:::i;6763:280::-;6834:1;-1:-1:-1;;;;;6829:6:17;:1;-1:-1:-1;;;;;6829:6:17;;6825:212;;6856:44;;;;;38849:2:45;38831:21;;;38888:2;38868:18;;;38861:30;38927:34;38922:2;38907:18;;38900:62;-1:-1:-1;;;38993:2:45;38978:18;;38971:35;39038:3;39023:19;;38647:401;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;180:681:45:-;351:2;403:21;;;473:13;;376:18;;;495:22;;;322:4;;351:2;574:15;;;;548:2;533:18;;;322:4;617:218;631:6;628:1;625:13;617:218;;;696:13;;-1:-1:-1;;;;;692:62:45;680:75;;810:15;;;;775:12;;;;653:1;646:9;617:218;;;-1:-1:-1;852:3:45;;180:681;-1:-1:-1;;;;;;180:681:45:o;1097:1638::-;1301:4;1330:2;1370;1359:9;1355:18;1400:2;1389:9;1382:21;1423:6;1458;1452:13;1489:6;1481;1474:22;1515:2;1505:12;;1548:2;1537:9;1533:18;1526:25;;1610:2;1600:6;1597:1;1593:14;1582:9;1578:30;1574:39;1648:2;1640:6;1636:15;1669:1;1690;1700:1006;1716:6;1711:3;1708:15;1700:1006;;;1785:22;;;-1:-1:-1;;1781:36:45;1769:49;;1841:13;;1928:9;;-1:-1:-1;;;;;1924:58:45;1909:74;;2022:11;;2016:18;2054:15;;;2047:27;;;2135:19;;1881:15;;;2167:24;;;2257:21;;;;2302:1;;2225:2;2213:15;;;2316:282;2332:8;2327:3;2324:17;2316:282;;;2413:15;;-1:-1:-1;;;;;;2409:88:45;2395:103;;2567:17;;;;2360:1;2351:11;;;;;2524:14;;;;2316:282;;;-1:-1:-1;2684:12:45;;;;2621:5;-1:-1:-1;;;2649:15:45;;;;1742:1;1733:11;1700:1006;;;-1:-1:-1;2723:6:45;;1097:1638;-1:-1:-1;;;;;;;;;1097:1638:45:o;2740:250::-;2825:1;2835:113;2849:6;2846:1;2843:13;2835:113;;;2925:11;;;2919:18;2906:11;;;2899:39;2871:2;2864:10;2835:113;;;-1:-1:-1;;2982:1:45;2964:16;;2957:27;2740:250::o;2995:271::-;3037:3;3075:5;3069:12;3102:6;3097:3;3090:19;3118:76;3187:6;3180:4;3175:3;3171:14;3164:4;3157:5;3153:16;3118:76;:::i;:::-;3248:2;3227:15;-1:-1:-1;;3223:29:45;3214:39;;;;3255:4;3210:50;;2995:271;-1:-1:-1;;2995:271:45:o;3271:803::-;3433:4;3462:2;3502;3491:9;3487:18;3532:2;3521:9;3514:21;3555:6;3590;3584:13;3621:6;3613;3606:22;3659:2;3648:9;3644:18;3637:25;;3721:2;3711:6;3708:1;3704:14;3693:9;3689:30;3685:39;3671:53;;3759:2;3751:6;3747:15;3780:1;3790:255;3804:6;3801:1;3798:13;3790:255;;;3897:2;3893:7;3881:9;3873:6;3869:22;3865:36;3860:3;3853:49;3925:40;3958:6;3949;3943:13;3925:40;:::i;:::-;3915:50;-1:-1:-1;4023:12:45;;;;3988:15;;;;3826:1;3819:9;3790:255;;;-1:-1:-1;4062:6:45;;3271:803;-1:-1:-1;;;;;;;3271:803:45:o;4367:184::-;-1:-1:-1;;;4416:1:45;4409:88;4516:4;4513:1;4506:15;4540:4;4537:1;4530:15;4556:437;4635:1;4631:12;;;;4678;;;4699:61;;4753:4;4745:6;4741:17;4731:27;;4699:61;4806:2;4798:6;4795:14;4775:18;4772:38;4769:218;;-1:-1:-1;;;4840:1:45;4833:88;4944:4;4941:1;4934:15;4972:4;4969:1;4962:15;4769:218;;4556:437;;;:::o;5124:545::-;5226:2;5221:3;5218:11;5215:448;;;5262:1;5287:5;5283:2;5276:17;5332:4;5328:2;5318:19;5402:2;5390:10;5386:19;5383:1;5379:27;5373:4;5369:38;5438:4;5426:10;5423:20;5420:47;;;-1:-1:-1;5461:4:45;5420:47;5516:2;5511:3;5507:12;5504:1;5500:20;5494:4;5490:31;5480:41;;5571:82;5589:2;5582:5;5579:13;5571:82;;;5634:17;;;5615:1;5604:13;5571:82;;;5575:3;;;5124:545;;;:::o;5845:1352::-;5971:3;5965:10;5998:18;5990:6;5987:30;5984:56;;;6020:18;;:::i;:::-;6049:97;6139:6;6099:38;6131:4;6125:11;6099:38;:::i;:::-;6093:4;6049:97;:::i;:::-;6201:4;;6265:2;6254:14;;6282:1;6277:663;;;;6984:1;7001:6;6998:89;;;-1:-1:-1;7053:19:45;;;7047:26;6998:89;-1:-1:-1;;5802:1:45;5798:11;;;5794:24;5790:29;5780:40;5826:1;5822:11;;;5777:57;7100:81;;6247:944;;6277:663;5071:1;5064:14;;;5108:4;5095:18;;-1:-1:-1;;6313:20:45;;;6431:236;6445:7;6442:1;6439:14;6431:236;;;6534:19;;;6528:26;6513:42;;6626:27;;;;6594:1;6582:14;;;;6461:19;;6431:236;;;6435:3;6695:6;6686:7;6683:19;6680:201;;;6756:19;;;6750:26;-1:-1:-1;;6839:1:45;6835:14;;;6851:3;6831:24;6827:37;6823:42;6808:58;6793:74;;6680:201;-1:-1:-1;;;;;6927:1:45;6911:14;;;6907:22;6894:36;;-1:-1:-1;5845:1352:45:o;7202:184::-;-1:-1:-1;;;7251:1:45;7244:88;7351:4;7348:1;7341:15;7375:4;7372:1;7365:15;7391:277;7458:6;7511:2;7499:9;7490:7;7486:23;7482:32;7479:52;;;7527:1;7524;7517:12;7479:52;7559:9;7553:16;7612:5;7605:13;7598:21;7591:5;7588:32;7578:60;;7634:1;7631;7624:12;7578:60;7657:5;7391:277;-1:-1:-1;;;7391:277:45:o;7673:249::-;7783:2;7764:13;;-1:-1:-1;;7760:27:45;7748:40;;7818:18;7803:34;;7839:22;;;7800:62;7797:88;;;7865:18;;:::i;:::-;7901:2;7894:22;-1:-1:-1;;7673:249:45:o;7927:250::-;7994:2;7988:9;8036:6;8024:19;;8073:18;8058:34;;8094:22;;;8055:62;8052:88;;;8120:18;;:::i;:::-;8156:2;8149:22;7927:250;:::o;8182:536::-;8236:5;8289:3;8282:4;8274:6;8270:17;8266:27;8256:55;;8307:1;8304;8297:12;8256:55;8336:6;8330:13;8362:18;8358:2;8355:26;8352:52;;;8384:18;;:::i;:::-;8433:2;8427:9;8445:67;8500:2;8481:13;;-1:-1:-1;;8477:27:45;8506:4;8473:38;8427:9;8445:67;:::i;:::-;8536:2;8528:6;8521:18;8582:3;8575:4;8570:2;8562:6;8558:15;8554:26;8551:35;8548:55;;;8599:1;8596;8589:12;8548:55;8612:76;8685:2;8678:4;8670:6;8666:17;8659:4;8651:6;8647:17;8612:76;:::i;:::-;8706:6;8182:536;-1:-1:-1;;;;8182:536:45:o;8723:337::-;8803:6;8856:2;8844:9;8835:7;8831:23;8827:32;8824:52;;;8872:1;8869;8862:12;8824:52;8905:9;8899:16;8938:18;8930:6;8927:30;8924:50;;;8970:1;8967;8960:12;8924:50;8993:61;9046:7;9037:6;9026:9;9022:22;8993:61;:::i;9065:220::-;9214:2;9203:9;9196:21;9177:4;9234:45;9275:2;9264:9;9260:18;9252:6;9234:45;:::i;9290:179::-;9325:3;9367:1;9349:16;9346:23;9343:120;;;9413:1;9410;9407;9392:23;-1:-1:-1;9450:1:45;9444:8;9439:3;9435:18;9290:179;:::o;9474:671::-;9513:3;9555:4;9537:16;9534:26;9531:39;;;9474:671;:::o;9531:39::-;9597:2;9591:9;-1:-1:-1;;9662:16:45;9658:25;;9655:1;9591:9;9634:50;9713:4;9707:11;9737:16;9772:18;9843:2;9836:4;9828:6;9824:17;9821:25;9816:2;9808:6;9805:14;9802:45;9799:58;;;9850:5;;;;;9474:671;:::o;9799:58::-;9887:6;9881:4;9877:17;9866:28;;9923:3;9917:10;9950:2;9942:6;9939:14;9936:27;;;9956:5;;;;;;9474:671;:::o;9936:27::-;10040:2;10021:16;10015:4;10011:27;10007:36;10000:4;9991:6;9986:3;9982:16;9978:27;9975:69;9972:82;;;10047:5;;;;;;9474:671;:::o;9972:82::-;10063:57;10114:4;10105:6;10097;10093:19;10089:30;10083:4;10063:57;:::i;:::-;-1:-1:-1;10136:3:45;;9474:671;-1:-1:-1;;;;;9474:671:45:o;10637:155::-;10733:1;10726:5;10723:12;10713:46;;10739:18;;:::i;:::-;10768;;10637:155::o;10797:12530::-;10890:3;10928:5;10922:12;10955:6;10950:3;10943:19;10981:4;11022:2;11017:3;11013:12;11047:11;11074;11067:18;;11124:6;11121:1;11117:14;11110:5;11106:26;11094:38;;11151:5;11148:1;11141:16;11193:2;11190:1;11180:16;11214:1;11224:12077;11238:6;11235:1;11232:13;11224:12077;;;11299:16;;;11287:29;;11375:13;;112:19;;;5071:1;5064:14;;;164:4;5095:18;;;155:14;;;;11375:13;11584:3559;11629:8;11624:2;11611:11;11607:20;11604:34;11584:3559;;;11767:8;11761:15;11803:4;11824:62;11880:5;11875:2;11869:4;11865:13;11824:62;:::i;:::-;11903:79;11978:2;11971:5;11967:14;11962:2;11955:4;11952:1;11948:12;11944:21;11903:79;:::i;:::-;11999:80;12075:2;12068:5;12064:14;12059:2;12052:4;12048:2;12044:13;12040:22;11999:80;:::i;:::-;12096;12172:2;12165:5;12161:14;12156:2;12149:4;12145:2;12141:13;12137:22;12096:80;:::i;:::-;12203:3;12223:80;12299:2;12292:5;12288:14;12283:2;12276:4;12272:2;12268:13;12264:22;12223:80;:::i;:::-;12330:3;12350:80;12426:2;12419:5;12415:14;12410:2;12403:4;12399:2;12395:13;12391:22;12350:80;:::i;:::-;12457:3;12477:80;12553:2;12546:5;12542:14;12537:2;12530:4;12526:2;12522:13;12518:22;12477:80;:::i;:::-;12584:3;12604:80;12680:2;12673:5;12669:14;12664:2;12657:4;12653:2;12649:13;12645:22;12604:80;:::i;:::-;12701:81;12777:3;12770:5;12766:15;12761:2;12754:4;12750:2;12746:13;12742:22;12701:81;:::i;:::-;12799;12875:3;12868:5;12864:15;12859:2;12852:4;12848:2;12844:13;12840:22;12799:81;:::i;:::-;12897;12973:3;12966:5;12962:15;12957:2;12950:4;12946:2;12942:13;12938:22;12897:81;:::i;:::-;12995;13071:3;13064:5;13060:15;13055:2;13048:4;13044:2;13040:13;13036:22;12995:81;:::i;:::-;13093;13169:3;13162:5;13158:15;13153:2;13146:4;13142:2;13138:13;13134:22;13093:81;:::i;:::-;13191:82;13268:3;13261:5;13257:15;13252:2;13245:4;13240:3;13236:14;13232:23;13191:82;:::i;:::-;13290;13367:3;13360:5;13356:15;13351:2;13344:4;13339:3;13335:14;13331:23;13290:82;:::i;:::-;13389;13466:3;13459:5;13455:15;13450:2;13443:4;13438:3;13434:14;13430:23;13389:82;:::i;:::-;13488:81;13564:3;13557:5;13553:15;13548:2;13541:4;13537:2;13533:13;13529:22;13488:81;:::i;:::-;13586:82;13663:3;13656:5;13652:15;13647:2;13640:4;13635:3;13631:14;13627:23;13586:82;:::i;:::-;13685;13762:3;13755:5;13751:15;13746:2;13739:4;13734:3;13730:14;13726:23;13685:82;:::i;:::-;13784;13861:3;13854:5;13850:15;13845:2;13838:4;13833:3;13829:14;13825:23;13784:82;:::i;:::-;13883:81;13959:3;13952:5;13948:15;13943:2;13936:4;13932:2;13928:13;13924:22;13883:81;:::i;:::-;13981:82;14058:3;14051:5;14047:15;14042:2;14035:4;14030:3;14026:14;14022:23;13981:82;:::i;:::-;14080;14157:3;14150:5;14146:15;14141:2;14134:4;14129:3;14125:14;14121:23;14080:82;:::i;:::-;14179;14256:3;14249:5;14245:15;14240:2;14233:4;14228:3;14224:14;14220:23;14179:82;:::i;:::-;14278:81;14354:3;14347:5;14343:15;14338:2;14331:4;14327:2;14323:13;14319:22;14278:81;:::i;:::-;14376:82;14453:3;14446:5;14442:15;14437:2;14430:4;14425:3;14421:14;14417:23;14376:82;:::i;:::-;14475;14552:3;14545:5;14541:15;14536:2;14529:4;14524:3;14520:14;14516:23;14475:82;:::i;:::-;14574;14651:3;14644:5;14640:15;14635:2;14628:4;14623:3;14619:14;14615:23;14574:82;:::i;:::-;14673:81;14749:3;14742:5;14738:15;14733:2;14726:4;14722:2;14718:13;14714:22;14673:81;:::i;:::-;;;;;14771:82;14848:3;14841:5;14837:15;14832:2;14825:4;14820:3;14816:14;14812:23;14771:82;:::i;:::-;14870;14947:3;14940:5;14936:15;14931:2;14924:4;14919:3;14915:14;14911:23;14870:82;:::i;:::-;;14969:73;15037:3;15030:5;15026:15;15019:4;15014:3;15010:14;14969:73;:::i;:::-;-1:-1:-1;15079:4:45;15068:16;;;;;15127:1;15113:16;;;;;11684:20;;11584:3559;;;15170:15;;;15201:25;;;15198:230;;;15257:66;15317:5;15310:4;15302:6;15298:17;15257:66;:::i;:::-;15349:14;;;;15412:1;15395:19;15198:230;15460:8;15447:11;15444:25;15441:238;;;15500:74;15568:5;15561:4;15552:6;15549:1;15545:14;15541:25;15500:74;:::i;:::-;15600:14;;;;15663:1;15646:19;15441:238;15711:8;15698:11;15695:25;15692:239;;;15751:75;15820:5;15813:4;15804:6;15800:2;15796:15;15792:26;15751:75;:::i;:::-;15852:14;;;;15915:1;15898:19;15692:239;15963:8;15950:11;15947:25;15944:239;;;16003:75;16072:5;16065:4;16056:6;16052:2;16048:15;16044:26;16003:75;:::i;:::-;16104:14;;;;16167:1;16150:19;15944:239;16215:8;16202:11;16199:25;16196:239;;;16255:75;16324:5;16317:4;16308:6;16304:2;16300:15;16296:26;16255:75;:::i;:::-;16356:14;;;;16419:1;16402:19;16196:239;16467:8;16454:11;16451:25;16448:239;;;16507:75;16576:5;16569:4;16560:6;16556:2;16552:15;16548:26;16507:75;:::i;:::-;16608:14;;;;16671:1;16654:19;16448:239;16719:8;16706:11;16703:25;16700:239;;;16759:75;16828:5;16821:4;16812:6;16808:2;16804:15;16800:26;16759:75;:::i;:::-;16860:14;;;;16923:1;16906:19;16700:239;16971:8;16958:11;16955:25;16952:239;;;17011:75;17080:5;17073:4;17064:6;17060:2;17056:15;17052:26;17011:75;:::i;:::-;17112:14;;;;17175:1;17158:19;16952:239;17223:8;17210:11;17207:25;17204:239;;;17263:75;17332:5;17325:4;17316:6;17312:2;17308:15;17304:26;17263:75;:::i;:::-;17364:14;;;;17427:1;17410:19;17204:239;17475:8;17462:11;17459:25;17456:239;;;17515:75;17584:5;17577:4;17568:6;17564:2;17560:15;17556:26;17515:75;:::i;:::-;17616:14;;;;17679:1;17662:19;17456:239;17727:8;17714:11;17711:25;17708:239;;;17767:75;17836:5;17829:4;17820:6;17816:2;17812:15;17808:26;17767:75;:::i;:::-;17868:14;;;;17931:1;17914:19;17708:239;17979:8;17966:11;17963:25;17960:239;;;18019:75;18088:5;18081:4;18072:6;18068:2;18064:15;18060:26;18019:75;:::i;:::-;18120:14;;;;18183:1;18166:19;17960:239;18231:8;18218:11;18215:25;18212:239;;;18271:75;18340:5;18333:4;18324:6;18320:2;18316:15;18312:26;18271:75;:::i;:::-;18372:14;;;;18435:1;18418:19;18212:239;18483:8;18470:11;18467:25;18464:240;;;18523:76;18593:5;18586:4;18577:6;18572:3;18568:16;18564:27;18523:76;:::i;:::-;18625:14;;;;18688:1;18671:19;18464:240;18736:8;18723:11;18720:25;18717:240;;;18776:76;18846:5;18839:4;18830:6;18825:3;18821:16;18817:27;18776:76;:::i;:::-;18878:14;;;;18941:1;18924:19;18717:240;18989:8;18976:11;18973:25;18970:240;;;19029:76;19099:5;19092:4;19083:6;19078:3;19074:16;19070:27;19029:76;:::i;:::-;19131:14;;;;19194:1;19177:19;18970:240;19242:8;19229:11;19226:25;19223:240;;;19282:76;19352:5;19345:4;19336:6;19331:3;19327:16;19323:27;19282:76;:::i;:::-;19384:14;;;;19447:1;19430:19;19223:240;19495:8;19482:11;19479:25;19476:240;;;19535:76;19605:5;19598:4;19589:6;19584:3;19580:16;19576:27;19535:76;:::i;:::-;19637:14;;;;19700:1;19683:19;19476:240;19748:8;19735:11;19732:25;19729:240;;;19788:76;19858:5;19851:4;19842:6;19837:3;19833:16;19829:27;19788:76;:::i;:::-;19890:14;;;;19953:1;19936:19;19729:240;20001:8;19988:11;19985:25;19982:240;;;20041:76;20111:5;20104:4;20095:6;20090:3;20086:16;20082:27;20041:76;:::i;:::-;20143:14;;;;20206:1;20189:19;19982:240;20254:8;20241:11;20238:25;20235:240;;;20294:76;20364:5;20357:4;20348:6;20343:3;20339:16;20335:27;20294:76;:::i;:::-;20396:14;;;;20459:1;20442:19;20235:240;20507:8;20494:11;20491:25;20488:240;;;20547:76;20617:5;20610:4;20601:6;20596:3;20592:16;20588:27;20547:76;:::i;:::-;20649:14;;;;20712:1;20695:19;20488:240;20760:8;20747:11;20744:25;20741:240;;;20800:76;20870:5;20863:4;20854:6;20849:3;20845:16;20841:27;20800:76;:::i;:::-;20902:14;;;;20965:1;20948:19;20741:240;21013:8;21000:11;20997:25;20994:240;;;21053:76;21123:5;21116:4;21107:6;21102:3;21098:16;21094:27;21053:76;:::i;:::-;21155:14;;;;21218:1;21201:19;20994:240;21266:8;21253:11;21250:25;21247:240;;;21306:76;21376:5;21369:4;21360:6;21355:3;21351:16;21347:27;21306:76;:::i;:::-;21408:14;;;;21471:1;21454:19;21247:240;21519:8;21506:11;21503:25;21500:240;;;21559:76;21629:5;21622:4;21613:6;21608:3;21604:16;21600:27;21559:76;:::i;:::-;21661:14;;;;21724:1;21707:19;21500:240;21772:8;21759:11;21756:25;21753:240;;;21812:76;21882:5;21875:4;21866:6;21861:3;21857:16;21853:27;21812:76;:::i;:::-;21914:14;;;;21977:1;21960:19;21753:240;22025:8;22012:11;22009:25;22006:240;;;22065:76;22135:5;22128:4;22119:6;22114:3;22110:16;22106:27;22065:76;:::i;:::-;22167:14;;;;22230:1;22213:19;22006:240;22278:8;22265:11;22262:25;22259:240;;;22318:76;22388:5;22381:4;22372:6;22367:3;22363:16;22359:27;22318:76;:::i;:::-;22420:14;;;;22483:1;22466:19;22259:240;22531:8;22518:11;22515:25;22512:240;;;22571:76;22641:5;22634:4;22625:6;22620:3;22616:16;22612:27;22571:76;:::i;:::-;22673:14;;;;22736:1;22719:19;22512:240;22784:8;22771:11;22768:25;22765:240;;;22824:76;22894:5;22887:4;22878:6;22873:3;22869:16;22865:27;22824:76;:::i;:::-;22926:14;;;;22989:1;22972:19;22765:240;23037:8;23024:11;23021:25;23018:178;;;23077:65;23136:5;23127:6;23122:3;23118:16;23077:65;:::i;:::-;23168:14;;;;23018:178;-1:-1:-1;;;23279:12:45;;;;23217:5;-1:-1:-1;23257:1:45;23245:14;;;;11253:9;11224:12077;;;-1:-1:-1;23317:4:45;;10797:12530;-1:-1:-1;;;;;;;10797:12530:45:o;23332:147::-;23420:1;23413:5;23410:12;23400:46;;23426:18;;:::i;23484:3889::-;24077:3;24066:9;24059:22;24040:4;24104:46;24145:3;24134:9;24130:19;24122:6;24104:46;:::i;:::-;-1:-1:-1;;;;;24190:6:45;24186:55;24181:2;24170:9;24166:18;24159:83;24272:1;24264:6;24261:13;24251:47;;24278:18;;:::i;:::-;24334:6;24329:2;24318:9;24314:18;24307:34;24389:9;24381:6;24377:22;24372:2;24361:9;24357:18;24350:50;24423:33;24449:6;24441;24423:33;:::i;:::-;24409:47;;24505:9;24497:6;24493:22;24487:3;24476:9;24472:19;24465:51;24540:1;24532:6;24525:17;24575:7;24570:2;24562:6;24558:15;24551:32;-1:-1:-1;;;;;24624:6:45;24620:55;24614:3;24603:9;24599:19;24592:84;24741:2;24729:9;24721:6;24717:22;24713:31;24707:3;24696:9;24692:19;24685:60;24777:2;24769:6;24765:15;24809:6;24803:13;24837:6;24832:3;24825:19;24872:2;24864:6;24860:15;24853:22;;24931:2;24921:6;24918:1;24914:14;24906:6;24902:27;24898:36;24953:6;24950:1;24943:17;24996:2;24993:1;24983:16;25017:1;25027:2247;25041:6;25038:1;25035:13;25027:2247;;;25106:19;;;-1:-1:-1;;25102:33:45;25090:46;;25166:13;;25181:4;25162:24;25219:1;25209:12;;25199:46;;25225:18;;:::i;:::-;25273:5;25265:6;25258:21;;25316:3;25311:2;25303:6;25299:15;25292:28;25358:3;25350:6;25346:16;25409:1;25401:6;25397:14;25391:21;25439:8;25432:5;25425:23;25482:3;25474:6;25470:16;25461:25;;25548:3;25536:8;25533:1;25529:16;25521:6;25517:29;25513:39;25587:1;25579:6;25575:14;25572:1;25565:25;25632:2;25629:1;25619:16;25659:1;25673:1141;25689:8;25684:3;25681:17;25673:1141;;;25795:3;25791:8;25782:6;25774;25770:19;25766:34;25759:5;25752:49;25829:1;25870:8;25864:15;25912:36;25938:9;25912:36;:::i;:::-;25965:24;;;26028:1;26013:17;;26047:178;;;;26247:1;26242:443;;;;26006:679;;26047:178;26119:3;26115:8;26104:9;26100:24;26095:2;26087:6;26083:15;26076:49;26204:2;26190:8;26183:16;26176:24;26173:1;26169:32;26161:6;26157:45;26153:54;26146:61;;26047:178;;26242:443;26281:8;26278:1;26271:19;26339:2;26336:1;26326:16;26374:1;26396:218;26412:8;26407:3;26404:17;26396:218;;;26532:7;26526:14;26521:2;26515:3;26507:6;26503:16;26499:25;26492:49;26590:1;26581:7;26577:15;26566:26;;26440:2;26435:3;26431:12;26424:19;;26396:218;;;26646:16;;26664:2;26642:25;;-1:-1:-1;;26006:679:45;-1:-1:-1;;;26797:2:45;26786:14;;;;;26712:3;-1:-1:-1;26758:1:45;26744:16;;;;25708:11;25673:1141;;;25677:3;;26863:6;26855;26851:19;26846:2;26838:6;26834:15;26827:44;26898:95;26986:6;26979:4;26971:6;26967:17;26898:95;:::i;:::-;26884:109;;;;27026:78;27100:1;27092:6;27088:14;27082:21;10621:4;10605:21;;10496:136;27026:78;4149:13;;4142:21;27159:2;27147:15;;4130:34;-1:-1:-1;27261:2:45;27252:12;;;;;27186:6;-1:-1:-1;27227:4:45;27215:17;;;;;25063:1;25056:9;25027:2247;;;25031:3;;27291:6;27283:14;;;;;;27306:61;27362:3;27351:9;27347:19;27339:6;27306:61;:::i;:::-;23484:3889;;;;;;;;;;:::o;27378:200::-;27457:13;;-1:-1:-1;;;;;27499:54:45;;27489:65;;27479:93;;27568:1;27565;27558:12;27583:154;27669:13;;27711:1;27701:12;;27691:40;;27727:1;27724;27717:12;27742:161;27835:13;;27877:1;27867:12;;27857:40;;27893:1;27890;27883:12;27908:1347;28002:6;28055:2;28043:9;28034:7;28030:23;28026:32;28023:52;;;28071:1;28068;28061:12;28023:52;28104:9;28098:16;28133:18;28174:2;28166:6;28163:14;28160:34;;;28190:1;28187;28180:12;28160:34;28213:22;;;;28269:6;28251:16;;;28247:29;28244:49;;;28289:1;28286;28279:12;28244:49;28315:17;;:::i;:::-;28363:2;28357:9;28391:2;28381:8;28378:16;28375:36;;;28407:1;28404;28397:12;28375:36;28434:56;28482:7;28471:8;28467:2;28463:17;28434:56;:::i;:::-;28427:5;28420:71;;28523:42;28561:2;28557;28553:11;28523:42;:::i;:::-;28518:2;28511:5;28507:14;28500:66;28598:49;28643:2;28639;28635:11;28598:49;:::i;:::-;28593:2;28586:5;28582:14;28575:73;28687:2;28683;28679:11;28673:18;28716:2;28706:8;28703:16;28700:36;;;28732:1;28729;28722:12;28700:36;28768:56;28816:7;28805:8;28801:2;28797:17;28768:56;:::i;:::-;28763:2;28756:5;28752:14;28745:80;;28864:3;28860:2;28856:12;28850:19;28894:2;28884:8;28881:16;28878:36;;;28910:1;28907;28900:12;28878:36;28947:56;28995:7;28984:8;28980:2;28976:17;28947:56;:::i;:::-;28941:3;28934:5;28930:15;28923:81;;29037:43;29075:3;29071:2;29067:12;29037:43;:::i;:::-;29031:3;29024:5;29020:15;29013:68;29128:3;29124:2;29120:12;29114:19;29108:3;29101:5;29097:15;29090:44;29167:57;29219:3;29215:2;29211:12;29167:57;:::i;:::-;29161:3;29150:15;;29143:82;29154:5;27908:1347;-1:-1:-1;;;;;27908:1347:45:o;29260:1209::-;29365:6;29396:2;29439;29427:9;29418:7;29414:23;29410:32;29407:52;;;29455:1;29452;29445:12;29407:52;29488:9;29482:16;29517:18;29558:2;29550:6;29547:14;29544:34;;;29574:1;29571;29564:12;29544:34;29612:6;29601:9;29597:22;29587:32;;29657:7;29650:4;29646:2;29642:13;29638:27;29628:55;;29679:1;29676;29669:12;29628:55;29708:2;29702:9;29730:2;29726;29723:10;29720:36;;;29736:18;;:::i;:::-;29782:2;29779:1;29775:10;29814:2;29808:9;29826:40;29862:2;29858;29854:11;29846:6;29826:40;:::i;:::-;29901:18;;;29977:11;;;29973:20;;;29935:15;;;30005:19;;;30002:39;;;30037:1;30034;30027:12;30002:39;30069:2;30065;30061:11;30050:22;;30081:357;30097:6;30092:3;30089:15;30081:357;;;30176:3;30170:10;30212:2;30199:11;30196:19;30193:109;;;30256:1;30285:2;30281;30274:14;30193:109;30327:68;30387:7;30382:2;30368:11;30364:2;30360:20;30356:29;30327:68;:::i;:::-;30315:81;;-1:-1:-1;30114:12:45;;;;30416;;30081:357;;;-1:-1:-1;30457:6:45;29260:1209;-1:-1:-1;;;;;;;;29260:1209:45:o;30474:184::-;-1:-1:-1;;;30523:1:45;30516:88;30623:4;30620:1;30613:15;30647:4;30644:1;30637:15;30663:302;30851:2;30840:9;30833:21;30814:4;30871:45;30912:2;30901:9;30897:18;30889:6;30871:45;:::i;:::-;30863:53;;30952:6;30947:2;30936:9;30932:18;30925:34;30663:302;;;;;:::o;30970:184::-;31040:6;31093:2;31081:9;31072:7;31068:23;31064:32;31061:52;;;31109:1;31106;31099:12;31061:52;-1:-1:-1;31132:16:45;;30970:184;-1:-1:-1;30970:184:45:o;31461:430::-;-1:-1:-1;;;;;;31650:6:45;31646:79;31641:3;31634:92;31616:3;31755:6;31749:13;31771:74;31838:6;31834:1;31829:3;31825:11;31818:4;31810:6;31806:17;31771:74;:::i;:::-;31865:16;;;;31883:1;31861:24;;31461:430;-1:-1:-1;;;31461:430:45:o;31896:287::-;32025:3;32063:6;32057:13;32079:66;32138:6;32133:3;32126:4;32118:6;32114:17;32079:66;:::i;:::-;32161:16;;;;;31896:287;-1:-1:-1;;31896:287:45:o;32808:422::-;33024:2;33013:9;33006:21;32987:4;33044:45;33085:2;33074:9;33070:18;33062:6;33044:45;:::i;:::-;-1:-1:-1;;;;;33125:55:45;;;;33120:2;33105:18;;33098:83;-1:-1:-1;33212:2:45;33197:18;33190:34;33036:53;32808:422;-1:-1:-1;32808:422:45:o;34450:440::-;34700:2;34689:9;34682:21;34663:4;34726:49;34771:2;34760:9;34756:18;34363:2;34351:15;;-1:-1:-1;;;34391:4:45;34382:14;;34375:36;34436:2;34427:12;;34286:159;34726:49;34823:9;34815:6;34811:22;34806:2;34795:9;34791:18;34784:50;34851:33;34877:6;34869;34851:33;:::i;35059:440::-;35309:2;35298:9;35291:21;35272:4;35335:49;35380:2;35369:9;35365:18;34972:2;34960:15;;-1:-1:-1;;;35000:4:45;34991:14;;34984:36;35045:2;35036:12;;34895:159;35504:446;35754:2;35743:9;35736:21;35793:1;35788:2;35777:9;35773:18;35766:29;35831:7;35826:2;35815:9;35811:18;35804:35;35877:3;35870:4;35859:9;35855:20;35848:33;35717:4;35898:46;35939:3;35928:9;35924:19;35916:6;35898:46;:::i;36734:397::-;36964:2;36953:9;36946:21;36927:4;36984:49;37029:2;37018:9;37014:18;34363:2;34351:15;;-1:-1:-1;;;34391:4:45;34382:14;;34375:36;34436:2;34427:12;;34286:159;36984:49;36976:57;;-1:-1:-1;;;;;37073:6:45;37069:55;37064:2;37053:9;37049:18;37042:83;36734:397;;;;:::o;37136:::-;37366:2;37355:9;37348:21;37329:4;37386:49;37431:2;37420:9;37416:18;34972:2;34960:15;;-1:-1:-1;;;35000:4:45;34991:14;;34984:36;35045:2;35036:12;;34895:159;37941:348;38171:2;38160:9;38153:21;38134:4;38191:49;38236:2;38225:9;38221:18;34363:2;34351:15;;-1:-1:-1;;;34391:4:45;34382:14;;34375:36;34436:2;34427:12;;34286:159;38191:49;38183:57;;38276:6;38271:2;38260:9;38256:18;38249:34;37941:348;;;;:::o;38294:::-;38524:2;38513:9;38506:21;38487:4;38544:49;38589:2;38578:9;38574:18;34972:2;34960:15;;-1:-1:-1;;;35000:4:45;34991:14;;34984:36;35045:2;35036:12;;34895:159","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testAssign()":"f4eaeb4e","testBurn()":"e13aba48","testGetAllAssetsIDs()":"c0ef0264","testLock()":"e96d88e0","testMint()":"9642ddaf","testMintATokenNotWrapped()":"cb1f5f2b","testTokenNameAndSymbol()":"218e00ff","testUnlock()":"c2745ada","testUnwrap()":"c43484d6","testUnwrapATokenNotWrapped()":"5266885a","testUnwrapATokenWithValueLocked()":"b74cda56","testWrap()":"8312289b","tokenContractOwner()":"ec31250f","user()":"4f8632ba"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAssign\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetAllAssetsIDs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMintATokenNotWrapped\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTokenNameAndSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrapATokenNotWrapped\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnwrapATokenWithValueLocked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenContractOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/solidity/tests/SATPWrapperTestNonFungible.sol\":\"SATPWrapperTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/main/solidity/contracts/SATPWrapperContract.sol\":{\"keccak256\":\"0x65cab15235cdf814b1de5400eeda71323237bb9fa112ce3b86e3467d77164e02\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e7572319e4fa727319a25afcb940b38c43ab327fc17ec07121f96b8b2eaa7663\",\"dweb:/ipfs/QmSydVQUZKR6LLGzt9Q3K5QHiV5Be8QL8JXBRVxEReeqJZ\"]},\"src/test/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]},\"src/test/solidity/contracts/SATPNFTokenContract.sol\":{\"keccak256\":\"0x4ff4461689b2efb6431a3e47fa8be0bf16071e14fe76fb27652959fd20d1f6d2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3e7342af17c3ae08f4690c9ec86878651b68e95d44717438b4cda06720c31bcc\",\"dweb:/ipfs/QmcNgbY7qAm3K2YHu1Q5cYDryUGGFo5hUrEoEaGQ3AmFaC\"]},\"src/test/solidity/tests/SATPWrapperTestNonFungible.sol\":{\"keccak256\":\"0xb62567dd2bcc2316ccf83d7f82a5f7bdc806aed3a77bd6b48acbd2e1035af870\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8b04ba397bc242d309372935dc8e17e2341d80b7e56fff437278ff27eab51809\",\"dweb:/ipfs/QmZ6qy1r7mxXABiXAxQzH4NU9tJKgQy4tEoFbf7K1imb2f\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAssign"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testBurn"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetAllAssetsIDs"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testLock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMintATokenNotWrapped"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTokenNameAndSymbol"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrap"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrapATokenNotWrapped"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnwrapATokenWithValueLocked"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWrap"},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenContractOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"user","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/solidity/tests/SATPWrapperTestNonFungible.sol":"SATPWrapperTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784","urls":["bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd","dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/main/solidity/contracts/SATPWrapperContract.sol":{"keccak256":"0x65cab15235cdf814b1de5400eeda71323237bb9fa112ce3b86e3467d77164e02","urls":["bzz-raw://e7572319e4fa727319a25afcb940b38c43ab327fc17ec07121f96b8b2eaa7663","dweb:/ipfs/QmSydVQUZKR6LLGzt9Q3K5QHiV5Be8QL8JXBRVxEReeqJZ"],"license":"GPL-3.0"},"src/test/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"},"src/test/solidity/contracts/SATPNFTokenContract.sol":{"keccak256":"0x4ff4461689b2efb6431a3e47fa8be0bf16071e14fe76fb27652959fd20d1f6d2","urls":["bzz-raw://3e7342af17c3ae08f4690c9ec86878651b68e95d44717438b4cda06720c31bcc","dweb:/ipfs/QmcNgbY7qAm3K2YHu1Q5cYDryUGGFo5hUrEoEaGQ3AmFaC"],"license":"GPL-3.0"},"src/test/solidity/tests/SATPWrapperTestNonFungible.sol":{"keccak256":"0xb62567dd2bcc2316ccf83d7f82a5f7bdc806aed3a77bd6b48acbd2e1035af870","urls":["bzz-raw://8b04ba397bc242d309372935dc8e17e2341d80b7e56fff437278ff27eab51809","dweb:/ipfs/QmZ6qy1r7mxXABiXAxQzH4NU9tJKgQy4tEoFbf7K1imb2f"],"license":"GPL-3.0"}},"version":1},"id":44} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SignedMath.sol/SignedMath.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SignedMath.sol/SignedMath.json index 8a796a80a0..da8d978831 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SignedMath.sol/SignedMath.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/SignedMath.sol/SignedMath.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4de6fb2d533bb06e56d3510eb05927f430373f7243a2a33a8335c56c79e03364736f6c63430008140033","sourceMap":"216:1047:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:11;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4de6fb2d533bb06e56d3510eb05927f430373f7243a2a33a8335c56c79e03364736f6c63430008140033","sourceMap":"216:1047:11:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":"SignedMath"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":11} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4de6fb2d533bb06e56d3510eb05927f430373f7243a2a33a8335c56c79e03364736f6c63430008140033","sourceMap":"216:1047:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:15;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c4de6fb2d533bb06e56d3510eb05927f430373f7243a2a33a8335c56c79e03364736f6c63430008140033","sourceMap":"216:1047:15:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":"SignedMath"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":15} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdAssertions.sol/StdAssertions.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdAssertions.sol/StdAssertions.json index 2fcc3bc478..a5aba72406 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdAssertions.sol/StdAssertions.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdAssertions.sol/StdAssertions.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdAssertions.sol\":\"StdAssertions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdAssertions.sol":"StdAssertions"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":15} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdAssertions.sol\":\"StdAssertions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdAssertions.sol":"StdAssertions"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdChains.sol/StdChains.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdChains.sol/StdChains.json index 998865bccd..189eb26237 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdChains.sol/StdChains.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdChains.sol/StdChains.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve the RPC URL for `mainnet`: - If you have specified data with `setChain`, it will return that. - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it is valid (e.g. a URL is specified, or an environment variable is given and exists). - If neither of the above conditions is met, the default data is returned. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":16} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve the RPC URL for `mainnet`: - If you have specified data with `setChain`, it will return that. - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it is valid (e.g. a URL is specified, or an environment variable is given and exists). - If neither of the above conditions is met, the default data is returned. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdCheats.sol/StdCheats.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdCheats.sol/StdCheats.json index 35b58aef70..608023e4ca 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdCheats.sol/StdCheats.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdCheats.sol/StdCheats.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdCheats.sol/StdCheatsSafe.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdCheats.sol/StdCheatsSafe.json index f5c1a78f20..19a0d30d3b 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdCheats.sol/StdCheatsSafe.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdCheats.sol/StdCheatsSafe.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdError.sol/stdError.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdError.sol/stdError.json index ee3250c1e3..f5ccaedc95 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdError.sol/stdError.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdError.sol/stdError.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"arithmeticError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"assertionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"divisionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"encodeStorageError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"enumConversionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"indexOOBError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"memOverflowError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"popError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"zeroVarError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x61028d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610209565b60405180910390f35b6100ba610179565b6100ba61018b565b6100ba61019d565b6100ba6101af565b6100ba6101c1565b6100ba6101d3565b6100ba6101e5565b6100ba6101f7565b604051603260248201526044015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b818110156102365785810183015185820160400152820161021a565b506000604082860101526040601f19601f830116850101925050509291505056fea264697066735822122076ed256f3379a5260c3b0cc58765decec110893db549a8deaaeef2a1bc37bbd764736f6c63430008140033","sourceMap":"162:850:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;162:850:18;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610209565b60405180910390f35b6100ba610179565b6100ba61018b565b6100ba61019d565b6100ba6101af565b6100ba6101c1565b6100ba6101d3565b6100ba6101e5565b6100ba6101f7565b604051603260248201526044015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b818110156102365785810183015185820160400152820161021a565b506000604082860101526040601f19601f830116850101925050509291505056fea264697066735822122076ed256f3379a5260c3b0cc58765decec110893db549a8deaaeef2a1bc37bbd764736f6c63430008140033","sourceMap":"162:850:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;185:86;;;:::i;461:91::-;;;:::i;277:87::-;;;:::i;831:88::-;;;:::i;654:80::-;;;:::i;925:84::-;;;:::i;558:90::-;;;:::i;370:85::-;;;:::i;740:::-;778:47;;820:4;778:47;;;726:36:37;699:18;;778:47:18;;;;-1:-1:-1;;778:47:18;;;;;;;;;;;;;;;;;;;;740:85;:::o;185:86::-;224:47;;266:4;224:47;;;726:36:37;699:18;;224:47:18;573:195:37;461:91:18;505:47;;547:4;505:47;;;726:36:37;699:18;;505:47:18;573:195:37;277:87:18;317:47;;359:4;317:47;;;726:36:37;699:18;;317:47:18;573:195:37;831:88:18;872:47;;914:4;872:47;;;726:36:37;699:18;;872:47:18;573:195:37;654:80:18;687:47;;729:4;687:47;;;726:36:37;699:18;;687:47:18;573:195:37;925:84:18;962:47;;1004:4;962:47;;;726:36:37;699:18;;962:47:18;573:195:37;558:90:18;601:47;;643:4;601:47;;;726:36:37;699:18;;601:47:18;573:195:37;370:85:18;408:47;;450:4;408:47;;;726:36:37;699:18;;408:47:18;573:195:37;14:554;132:4;161:2;190;179:9;172:21;222:6;216:13;265:6;260:2;249:9;245:18;238:34;290:1;300:140;314:6;311:1;308:13;300:140;;;409:14;;;405:23;;399:30;375:17;;;394:2;371:26;364:66;329:10;;300:140;;;304:3;489:1;484:2;475:6;464:9;460:22;456:31;449:42;559:2;552;548:7;543:2;535:6;531:15;527:29;516:9;512:45;508:54;500:62;;;;14:554;;;;:::o","linkReferences":{}},"methodIdentifiers":{"arithmeticError()":"8995290f","assertionError()":"10332977","divisionError()":"fa784a44","encodeStorageError()":"d160e4de","enumConversionError()":"1de45560","indexOOBError()":"05ee8612","memOverflowError()":"986c5f68","popError()":"b22dc54d","zeroVarError()":"b67689da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"arithmeticError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"divisionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"encodeStorageError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enumConversionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexOOBError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memOverflowError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"popError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeroVarError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdError.sol\":\"stdError\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"arithmeticError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"assertionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"divisionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"encodeStorageError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"enumConversionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexOOBError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"memOverflowError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"popError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zeroVarError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdError.sol":"stdError"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file +{"abi":[{"type":"function","name":"arithmeticError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"assertionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"divisionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"encodeStorageError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"enumConversionError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"indexOOBError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"memOverflowError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"popError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"zeroVarError","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"}],"bytecode":{"object":"0x61028d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610209565b60405180910390f35b6100ba610179565b6100ba61018b565b6100ba61019d565b6100ba6101af565b6100ba6101c1565b6100ba6101d3565b6100ba6101e5565b6100ba6101f7565b604051603260248201526044015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b818110156102365785810183015185820160400152820161021a565b506000604082860101526040601f19601f830116850101925050509291505056fea264697066735822122076ed256f3379a5260c3b0cc58765decec110893db549a8deaaeef2a1bc37bbd764736f6c63430008140033","sourceMap":"162:850:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;162:850:22;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610209565b60405180910390f35b6100ba610179565b6100ba61018b565b6100ba61019d565b6100ba6101af565b6100ba6101c1565b6100ba6101d3565b6100ba6101e5565b6100ba6101f7565b604051603260248201526044015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b818110156102365785810183015185820160400152820161021a565b506000604082860101526040601f19601f830116850101925050509291505056fea264697066735822122076ed256f3379a5260c3b0cc58765decec110893db549a8deaaeef2a1bc37bbd764736f6c63430008140033","sourceMap":"162:850:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;185:86;;;:::i;461:91::-;;;:::i;277:87::-;;;:::i;831:88::-;;;:::i;654:80::-;;;:::i;925:84::-;;;:::i;558:90::-;;;:::i;370:85::-;;;:::i;740:::-;778:47;;820:4;778:47;;;726:36:45;699:18;;778:47:22;;;;-1:-1:-1;;778:47:22;;;;;;;;;;;;;;;;;;;;740:85;:::o;185:86::-;224:47;;266:4;224:47;;;726:36:45;699:18;;224:47:22;573:195:45;461:91:22;505:47;;547:4;505:47;;;726:36:45;699:18;;505:47:22;573:195:45;277:87:22;317:47;;359:4;317:47;;;726:36:45;699:18;;317:47:22;573:195:45;831:88:22;872:47;;914:4;872:47;;;726:36:45;699:18;;872:47:22;573:195:45;654:80:22;687:47;;729:4;687:47;;;726:36:45;699:18;;687:47:22;573:195:45;925:84:22;962:47;;1004:4;962:47;;;726:36:45;699:18;;962:47:22;573:195:45;558:90:22;601:47;;643:4;601:47;;;726:36:45;699:18;;601:47:22;573:195:45;370:85:22;408:47;;450:4;408:47;;;726:36:45;699:18;;408:47:22;573:195:45;14:554;132:4;161:2;190;179:9;172:21;222:6;216:13;265:6;260:2;249:9;245:18;238:34;290:1;300:140;314:6;311:1;308:13;300:140;;;409:14;;;405:23;;399:30;375:17;;;394:2;371:26;364:66;329:10;;300:140;;;304:3;489:1;484:2;475:6;464:9;460:22;456:31;449:42;559:2;552;548:7;543:2;535:6;531:15;527:29;516:9;512:45;508:54;500:62;;;;14:554;;;;:::o","linkReferences":{}},"methodIdentifiers":{"arithmeticError()":"8995290f","assertionError()":"10332977","divisionError()":"fa784a44","encodeStorageError()":"d160e4de","enumConversionError()":"1de45560","indexOOBError()":"05ee8612","memOverflowError()":"986c5f68","popError()":"b22dc54d","zeroVarError()":"b67689da"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"arithmeticError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assertionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"divisionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"encodeStorageError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enumConversionError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"indexOOBError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"memOverflowError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"popError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeroVarError\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdError.sol\":\"stdError\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"arithmeticError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"assertionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"divisionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"encodeStorageError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"enumConversionError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"indexOOBError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"memOverflowError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"popError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zeroVarError","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdError.sol":"stdError"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"}},"version":1},"id":22} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdInvariant.sol/StdInvariant.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdInvariant.sol/StdInvariant.json index d20dd07812..7eb35ecef4 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdInvariant.sol/StdInvariant.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdInvariant.sol/StdInvariant.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610851806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806385226c811161005b57806385226c81146100d0578063916a17c6146100e5578063b5508aa9146100ed578063e20c9f71146100f557600080fd5b80631ed7831c1461008d5780633e5e3c23146100ab5780633f7286f4146100b357806366d9a9a0146100bb575b600080fd5b6100956100fd565b6040516100a2919061061e565b60405180910390f35b61009561015f565b6100956101bf565b6100c361021f565b6040516100a2919061066b565b6100d8610323565b6040516100a29190610736565b6100c36103f3565b6100d86104ee565b6100956105be565b6060600180548060200260200160405190810160405280929190818152602001828054801561015557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610137575b5050505050905090565b60606003805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606002805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b8282101561031a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561030257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116102af5790505b50505050508152505081526020019060010190610243565b50505050905090565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561031a578382906000526020600020018054610366906107c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610392906107c8565b80156103df5780601f106103b4576101008083540402835291602001916103df565b820191906000526020600020905b8154815290600101906020018083116103c257829003601f168201915b505050505081526020019060010190610347565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561031a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104835790505b50505050508152505081526020019060010190610417565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561031a578382906000526020600020018054610531906107c8565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906107c8565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081526020019060010190610512565b60606000805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101561065f5783516001600160a01b03168352928401929184019160010161063a565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561072757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156107125783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906106d0565b50978a01979550505091870191600101610693565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b838110156107ba57888603603f1901855282518051808852835b81811015610793578281018a01518982018b01528901610778565b508781018901849052601f01601f191690960187019550938601939186019160010161075e565b509398975050505050505050565b600181811c908216806107dc57607f821691505b602082108103610815577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220f7f844bb21a67fba8d32085e7751c494e2be08ed68cf922ef52f90305d861c5a64736f6c63430008140033","sourceMap":"100:2965:19:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c806385226c811161005b57806385226c81146100d0578063916a17c6146100e5578063b5508aa9146100ed578063e20c9f71146100f557600080fd5b80631ed7831c1461008d5780633e5e3c23146100ab5780633f7286f4146100b357806366d9a9a0146100bb575b600080fd5b6100956100fd565b6040516100a2919061061e565b60405180910390f35b61009561015f565b6100956101bf565b6100c361021f565b6040516100a2919061066b565b6100d8610323565b6040516100a29190610736565b6100c36103f3565b6100d86104ee565b6100956105be565b6060600180548060200260200160405190810160405280929190818152602001828054801561015557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610137575b5050505050905090565b60606003805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606002805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b8282101561031a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561030257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116102af5790505b50505050508152505081526020019060010190610243565b50505050905090565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561031a578382906000526020600020018054610366906107c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610392906107c8565b80156103df5780601f106103b4576101008083540402835291602001916103df565b820191906000526020600020905b8154815290600101906020018083116103c257829003601f168201915b505050505081526020019060010190610347565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561031a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104835790505b50505050508152505081526020019060010190610417565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561031a578382906000526020600020018054610531906107c8565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906107c8565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081526020019060010190610512565b60606000805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101561065f5783516001600160a01b03168352928401929184019160010161063a565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561072757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156107125783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906106d0565b50978a01979550505091870191600101610693565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b838110156107ba57888603603f1901855282518051808852835b81811015610793578281018a01518982018b01528901610778565b508781018901849052601f01601f191690960187019550938601939186019160010161075e565b509398975050505050505050565b600181811c908216806107dc57607f821691505b602082108103610815577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220f7f844bb21a67fba8d32085e7751c494e2be08ed68cf922ef52f90305d861c5a64736f6c63430008140033","sourceMap":"100:2965:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:134;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;2013:142::-;;;:::i;2161:134::-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:19;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:19;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:19;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2013:142;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:19;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;14:681:37:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:37;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:37;;14:681;-1:-1:-1;;;;;;14:681:37:o;700:1636::-;902:4;931:2;971;960:9;956:18;1001:2;990:9;983:21;1024:6;1059;1053:13;1090:6;1082;1075:22;1116:2;1106:12;;1149:2;1138:9;1134:18;1127:25;;1211:2;1201:6;1198:1;1194:14;1183:9;1179:30;1175:39;1249:2;1241:6;1237:15;1270:1;1291;1301:1006;1317:6;1312:3;1309:15;1301:1006;;;1386:22;;;-1:-1:-1;;1382:36:37;1370:49;;1442:13;;1529:9;;-1:-1:-1;;;;;1525:58:37;1510:74;;1623:11;;1617:18;1655:15;;;1648:27;;;1736:19;;1482:15;;;1768:24;;;1858:21;;;;1903:1;;1826:2;1814:15;;;1917:282;1933:8;1928:3;1925:17;1917:282;;;2014:15;;2031:66;2010:88;1996:103;;2168:17;;;;1961:1;1952:11;;;;;2125:14;;;;1917:282;;;-1:-1:-1;2285:12:37;;;;2222:5;-1:-1:-1;;;2250:15:37;;;;1343:1;1334:11;1301:1006;;;-1:-1:-1;2324:6:37;;700:1636;-1:-1:-1;;;;;;;;;700:1636:37:o;2341:1203::-;2503:4;2532:2;2572;2561:9;2557:18;2602:2;2591:9;2584:21;2625:6;2660;2654:13;2691:6;2683;2676:22;2729:2;2718:9;2714:18;2707:25;;2791:2;2781:6;2778:1;2774:14;2763:9;2759:30;2755:39;2741:53;;2829:2;2821:6;2817:15;2850:1;2871;2881:634;2897:6;2892:3;2889:15;2881:634;;;2966:22;;;-1:-1:-1;;2962:36:37;2950:49;;3022:13;;3064:9;;3086:24;;;3134:1;3148:157;3164:8;3159:3;3156:17;3148:157;;;3272:12;;;3268:21;;3262:28;3239:16;;;3235:25;;3228:63;3183:12;;3148:157;;;-1:-1:-1;3329:21:37;;;3325:30;;3318:41;;;3425:2;3402:17;-1:-1:-1;;3398:31:37;3386:44;;;3382:53;;;-1:-1:-1;3493:12:37;;;;3458:15;;;;2923:1;2914:11;2881:634;;;-1:-1:-1;3532:6:37;;2341:1203;-1:-1:-1;;;;;;;;2341:1203:37:o;3549:437::-;3628:1;3624:12;;;;3671;;;3692:61;;3746:4;3738:6;3734:17;3724:27;;3692:61;3799:2;3791:6;3788:14;3768:18;3765:38;3762:218;;3836:77;3833:1;3826:88;3937:4;3934:1;3927:15;3965:4;3962:1;3955:15;3762:218;;3549:437;;;:::o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdInvariant.sol\":\"StdInvariant\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdInvariant.sol":"StdInvariant"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file +{"abi":[{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50610851806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806385226c811161005b57806385226c81146100d0578063916a17c6146100e5578063b5508aa9146100ed578063e20c9f71146100f557600080fd5b80631ed7831c1461008d5780633e5e3c23146100ab5780633f7286f4146100b357806366d9a9a0146100bb575b600080fd5b6100956100fd565b6040516100a2919061061e565b60405180910390f35b61009561015f565b6100956101bf565b6100c361021f565b6040516100a2919061066b565b6100d8610323565b6040516100a29190610736565b6100c36103f3565b6100d86104ee565b6100956105be565b6060600180548060200260200160405190810160405280929190818152602001828054801561015557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610137575b5050505050905090565b60606003805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606002805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b8282101561031a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561030257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116102af5790505b50505050508152505081526020019060010190610243565b50505050905090565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561031a578382906000526020600020018054610366906107c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610392906107c8565b80156103df5780601f106103b4576101008083540402835291602001916103df565b820191906000526020600020905b8154815290600101906020018083116103c257829003601f168201915b505050505081526020019060010190610347565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561031a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104835790505b50505050508152505081526020019060010190610417565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561031a578382906000526020600020018054610531906107c8565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906107c8565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081526020019060010190610512565b60606000805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101561065f5783516001600160a01b03168352928401929184019160010161063a565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561072757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156107125783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906106d0565b50978a01979550505091870191600101610693565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b838110156107ba57888603603f1901855282518051808852835b81811015610793578281018a01518982018b01528901610778565b508781018901849052601f01601f191690960187019550938601939186019160010161075e565b509398975050505050505050565b600181811c908216806107dc57607f821691505b602082108103610815577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220f7f844bb21a67fba8d32085e7751c494e2be08ed68cf922ef52f90305d861c5a64736f6c63430008140033","sourceMap":"100:2965:23:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c806385226c811161005b57806385226c81146100d0578063916a17c6146100e5578063b5508aa9146100ed578063e20c9f71146100f557600080fd5b80631ed7831c1461008d5780633e5e3c23146100ab5780633f7286f4146100b357806366d9a9a0146100bb575b600080fd5b6100956100fd565b6040516100a2919061061e565b60405180910390f35b61009561015f565b6100956101bf565b6100c361021f565b6040516100a2919061066b565b6100d8610323565b6040516100a29190610736565b6100c36103f3565b6100d86104ee565b6100956105be565b6060600180548060200260200160405190810160405280929190818152602001828054801561015557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610137575b5050505050905090565b60606003805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606002805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b8282101561031a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561030257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116102af5790505b50505050508152505081526020019060010190610243565b50505050905090565b60606005805480602002602001604051908101604052809291908181526020016000905b8282101561031a578382906000526020600020018054610366906107c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610392906107c8565b80156103df5780601f106103b4576101008083540402835291602001916103df565b820191906000526020600020905b8154815290600101906020018083116103c257829003601f168201915b505050505081526020019060010190610347565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561031a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156104d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104835790505b50505050508152505081526020019060010190610417565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561031a578382906000526020600020018054610531906107c8565b80601f016020809104026020016040519081016040528092919081815260200182805461055d906107c8565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b505050505081526020019060010190610512565b60606000805480602002602001604051908101604052809291908181526020018280548015610155576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610137575050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101561065f5783516001600160a01b03168352928401929184019160010161063a565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101561072757898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b808310156107125783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b01906106d0565b50978a01979550505091870191600101610693565b50919998505050505050505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b838110156107ba57888603603f1901855282518051808852835b81811015610793578281018a01518982018b01528901610778565b508781018901849052601f01601f191690960187019550938601939186019160010161075e565b509398975050505050505050565b600181811c908216806107dc57607f821691505b602082108103610815577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220f7f844bb21a67fba8d32085e7751c494e2be08ed68cf922ef52f90305d861c5a64736f6c63430008140033","sourceMap":"100:2965:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:134;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2930:133;;;:::i;2631:141::-;;;:::i;2447:178::-;;;:::i;:::-;;;;;;;:::i;2301:140::-;;;:::i;:::-;;;;;;;:::i;2778:146::-;;;:::i;1866:141::-;;;:::i;2013:142::-;;;:::i;2161:134::-;2208:33;2272:16;2253:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2253:35:23;;;;;;;;;;;;;;;;;;;;;;;2161:134;:::o;2930:133::-;2976:33;3040:16;3021:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3021:35:23;;;;;;;;;;;;;;;;;;;;;;2930:133;:::o;2631:141::-;2679:35;2747:18;2726:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2726:39:23;;;;;;;;;;;;;;;;;;;;;;2631:141;:::o;2447:178::-;2503:48;2592:26;2563:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2563:55:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:178;:::o;2301:140::-;2349:34;2416:18;2395:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:146;2826:40;2899:18;2878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2878:39:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1866:141;1915:34;1982:18;1961:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2013:142;2062:35;2130:18;2109:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2109:39:23;;;;;;;;;;;;;;;;;;;;;;2013:142;:::o;14:681:45:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:45;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:45;;14:681;-1:-1:-1;;;;;;14:681:45:o;700:1638::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1006;1319:6;1314:3;1311:15;1303:1006;;;1388:22;;;-1:-1:-1;;1384:36:45;1372:49;;1444:13;;1531:9;;-1:-1:-1;;;;;1527:58:45;1512:74;;1625:11;;1619:18;1657:15;;;1650:27;;;1738:19;;1484:15;;;1770:24;;;1860:21;;;;1905:1;;1828:2;1816:15;;;1919:282;1935:8;1930:3;1927:17;1919:282;;;2016:15;;2033:66;2012:88;1998:103;;2170:17;;;;1963:1;1954:11;;;;;2127:14;;;;1919:282;;;-1:-1:-1;2287:12:45;;;;2224:5;-1:-1:-1;;;2252:15:45;;;;1345:1;1336:11;1303:1006;;;-1:-1:-1;2326:6:45;;700:1638;-1:-1:-1;;;;;;;;;700:1638:45:o;2343:1203::-;2505:4;2534:2;2574;2563:9;2559:18;2604:2;2593:9;2586:21;2627:6;2662;2656:13;2693:6;2685;2678:22;2731:2;2720:9;2716:18;2709:25;;2793:2;2783:6;2780:1;2776:14;2765:9;2761:30;2757:39;2743:53;;2831:2;2823:6;2819:15;2852:1;2873;2883:634;2899:6;2894:3;2891:15;2883:634;;;2968:22;;;-1:-1:-1;;2964:36:45;2952:49;;3024:13;;3066:9;;3088:24;;;3136:1;3150:157;3166:8;3161:3;3158:17;3150:157;;;3274:12;;;3270:21;;3264:28;3241:16;;;3237:25;;3230:63;3185:12;;3150:157;;;-1:-1:-1;3331:21:45;;;3327:30;;3320:41;;;3427:2;3404:17;-1:-1:-1;;3400:31:45;3388:44;;;3384:53;;;-1:-1:-1;3495:12:45;;;;3460:15;;;;2925:1;2916:11;2883:634;;;-1:-1:-1;3534:6:45;;2343:1203;-1:-1:-1;;;;;;;;2343:1203:45:o;3551:437::-;3630:1;3626:12;;;;3673;;;3694:61;;3748:4;3740:6;3736:17;3726:27;;3694:61;3801:2;3793:6;3790:14;3770:18;3767:38;3764:218;;3838:77;3835:1;3828:88;3939:4;3936:1;3929:15;3967:4;3964:1;3957:15;3764:218;;3551:437;;;:::o","linkReferences":{}},"methodIdentifiers":{"excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdInvariant.sol\":\"StdInvariant\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdInvariant.sol":"StdInvariant"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdJson.sol/stdJson.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdJson.sol/stdJson.json index 16ea3d8b18..95e932b525 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdJson.sol/stdJson.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdJson.sol/stdJson.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201651e706c65eed8317cbde9264e748d96e39be2170456bd5f6d215f6a00a457664736f6c63430008140033","sourceMap":"830:5374:20:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;830:5374:20;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201651e706c65eed8317cbde9264e748d96e39be2170456bd5f6d215f6a00a457664736f6c63430008140033","sourceMap":"830:5374:20:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201651e706c65eed8317cbde9264e748d96e39be2170456bd5f6d215f6a00a457664736f6c63430008140033","sourceMap":"830:5374:24:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;830:5374:24;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201651e706c65eed8317cbde9264e748d96e39be2170456bd5f6d215f6a00a457664736f6c63430008140033","sourceMap":"830:5374:24:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdMath.sol/stdMath.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdMath.sol/stdMath.json index 8cecc8a7b5..0a80f8d725 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdMath.sol/stdMath.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdMath.sol/stdMath.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d21f3ce59acd85e325d366a0120d693ca347645fd641864fe5c9a75af0f30b0464736f6c63430008140033","sourceMap":"65:1294:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:1294:21;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d21f3ce59acd85e325d366a0120d693ca347645fd641864fe5c9a75af0f30b0464736f6c63430008140033","sourceMap":"65:1294:21:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d21f3ce59acd85e325d366a0120d693ca347645fd641864fe5c9a75af0f30b0464736f6c63430008140033","sourceMap":"65:1294:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;65:1294:25;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d21f3ce59acd85e325d366a0120d693ca347645fd641864fe5c9a75af0f30b0464736f6c63430008140033","sourceMap":"65:1294:25:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":25} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStorage.sol/stdStorage.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStorage.sol/stdStorage.json index 3c0f33af7b..8d2c544399 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStorage.sol/stdStorage.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStorage.sol/stdStorage.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3c59b1870b35b2766bd134c44512396bcbc90d006218ad47bc00403c71921cb64736f6c63430008140033","sourceMap":"7339:4527:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;7339:4527:22;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3c59b1870b35b2766bd134c44512396bcbc90d006218ad47bc00403c71921cb64736f6c63430008140033","sourceMap":"7339:4527:22:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":22} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3c59b1870b35b2766bd134c44512396bcbc90d006218ad47bc00403c71921cb64736f6c63430008140033","sourceMap":"7339:4527:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;7339:4527:26;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3c59b1870b35b2766bd134c44512396bcbc90d006218ad47bc00403c71921cb64736f6c63430008140033","sourceMap":"7339:4527:26:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStorage.sol/stdStorageSafe.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStorage.sol/stdStorageSafe.json index 52362bd02f..d26551c4d9 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStorage.sol/stdStorageSafe.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStorage.sol/stdStorageSafe.json @@ -1 +1 @@ -{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202000aad6912dff6988f5eda7db6ef17ac1408fa10a08ec5b1bf7d67e3544398b64736f6c63430008140033","sourceMap":"368:6969:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;368:6969:22;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202000aad6912dff6988f5eda7db6ef17ac1408fa10a08ec5b1bf7d67e3544398b64736f6c63430008140033","sourceMap":"368:6969:22:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":22} \ No newline at end of file +{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202000aad6912dff6988f5eda7db6ef17ac1408fa10a08ec5b1bf7d67e3544398b64736f6c63430008140033","sourceMap":"368:6969:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;368:6969:26;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202000aad6912dff6988f5eda7db6ef17ac1408fa10a08ec5b1bf7d67e3544398b64736f6c63430008140033","sourceMap":"368:6969:26:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStyle.sol/StdStyle.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStyle.sol/StdStyle.json index b6543f7f44..b64f622843 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStyle.sol/StdStyle.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdStyle.sol/StdStyle.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220506a5e932c04f8c238b56c443a4d881b6498e96e8149837165c8744980ede2b564736f6c63430008140033","sourceMap":"96:10353:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;96:10353:23;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220506a5e932c04f8c238b56c443a4d881b6498e96e8149837165c8744980ede2b564736f6c63430008140033","sourceMap":"96:10353:23:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220506a5e932c04f8c238b56c443a4d881b6498e96e8149837165c8744980ede2b564736f6c63430008140033","sourceMap":"96:10353:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;96:10353:27;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220506a5e932c04f8c238b56c443a4d881b6498e96e8149837165c8744980ede2b564736f6c63430008140033","sourceMap":"96:10353:27:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdUtils.sol/StdUtils.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdUtils.sol/StdUtils.json index 04fa797968..7851a92fbd 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdUtils.sol/StdUtils.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/StdUtils.sol/StdUtils.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Strings.sol/Strings.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Strings.sol/Strings.json index 75746288ff..edf2abcf29 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Strings.sol/Strings.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Strings.sol/Strings.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d300ad7478d98c336b12b3ca7d9bd882faab0ed2b012ecb3c9f348272036eccb64736f6c63430008140033","sourceMap":"251:2847:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:7;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d300ad7478d98c336b12b3ca7d9bd882faab0ed2b012ecb3c9f348272036eccb64736f6c63430008140033","sourceMap":"251:2847:7:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/Strings.sol":"Strings"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":7} \ No newline at end of file +{"abi":[{"type":"error","name":"StringsInsufficientHexLength","inputs":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"length","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d300ad7478d98c336b12b3ca7d9bd882faab0ed2b012ecb3c9f348272036eccb64736f6c63430008140033","sourceMap":"251:2847:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:11;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d300ad7478d98c336b12b3ca7d9bd882faab0ed2b012ecb3c9f348272036eccb64736f6c63430008140033","sourceMap":"251:2847:11:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"StringsInsufficientHexLength"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/Strings.sol":"Strings"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@openzeppelin/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"}},"version":1},"id":11} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Test.sol/Test.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Test.sol/Test.json index 43d3c84346..a954c8f209 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Test.sol/Test.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Test.sol/Test.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Test.sol\":\"Test\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Test.sol":"Test"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":25} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Test.sol\":\"Test\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7\",\"dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b\",\"dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477\",\"dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5\",\"dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985\",\"dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d\",\"dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf\",\"dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Test.sol":"Test"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x9100bd38453711d5f5ae32d16b4aacef8d4e26abb3061fcc9920cd30cdb49315","urls":["bzz-raw://114654e304083d3403510edd13d7df2223747337150ecf51dd36b441e50498f7","dweb:/ipfs/QmQy6uvcVHyHzU2RbuvEo1hKiV7k81z21gR6DSj4DkCP8D"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x269d3bdb845553fd0caa4590f2c5d2ad174e59f914793ada8ccd14092a10356e","urls":["bzz-raw://7e69a27463928203c8bfc3cd5abb11f5506a427eec05c94e39ad48bc842f4e3b","dweb:/ipfs/QmZxtKBUVtBfAFjJm4RNBRGDhn7T28eUHVHyiPVmZESwDf"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xd855e1fea6247f1bef118e2bee9f0039832988b7173fd17766bba4014ae26a3c","urls":["bzz-raw://c58c0f0b66852dfd3c76fb7958d8b023489d7a874c7cb1ad4f2021f9ec8ab477","dweb:/ipfs/Qmd3MX9HAkNUhPddL29ekwhqgRnjAobZ35UzchaJZNACCN"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0xd1517df281f973dba8b7ba52c02d3df552b60d91b8f47e4669049da648778673","urls":["bzz-raw://52e43264f58a5dcfd985f3c99aa81064805aa8f1c2b4c6521fd63d45cdbba8d5","dweb:/ipfs/QmUMTF6cRjt5tCQrrgQDXVRmHQLjevNsTvLFdaA1m9TBj9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x2882555b0f58e48144e46e9aa5118a506b31ad7485327d54e8f681e8b414c337","urls":["bzz-raw://2850bcb1322de9d9dd87ded42debbe0e8fc4048173788d4c00c98b50e5f76985","dweb:/ipfs/QmUiPKnj7GZLLQbJGY7bVDu79Q9jGEYNjR5ZBgwFy8mH97"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x18ac6dcce9cdfe3bc754ce910b4b97e56963c49a92e50f57d055adb562416b86","urls":["bzz-raw://d6b29b4a814dc26c3722e994a792f4cc1be86e6b8c2b2adc352ed54fb326593d","dweb:/ipfs/Qma8a7XELNmUepiitaLyxJXW66urnXsvCwx1bMLmRw2Fpn"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xddf16afce2bb7bbb69ed868d4c7ee8b4ea4ffbf8929427fe799682f107534945","urls":["bzz-raw://52f6ebde2a4cb9d08aea5fb3d62b2f15961bb9a29d6d9e30dd0859d0d631cabf","dweb:/ipfs/QmeJ9Dp1GYUggzjGiwTZkxCfB15NfyfgcyrNZL5tyWZbVZ"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Vm.sol/Vm.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Vm.sol/Vm.json index 484d7aeb61..e1939198c6 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Vm.sol/Vm.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Vm.sol/Vm.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemory","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemoryCall","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"label","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonString","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readCallers","inputs":[],"outputs":[{"name":"callerMode","type":"uint8","internalType":"enum VmSafe.CallerMode"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonceUnsafe","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"txGasPrice","inputs":[{"name":"newGasPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","createDir(string,bool)":"168b64d3","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","deal(address,uint256)":"c88a5e6d","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,uint32)":"6229498b","difficulty(uint256)":"46cc92d9","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","expectCall(address,bytes)":"bd6af434","expectCall(address,bytes,uint64)":"c1adbbff","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,bytes,uint64)":"a2b1a1ae","expectCall(address,uint256,uint64,bytes)":"23361207","expectCall(address,uint256,uint64,bytes,uint64)":"65b7b7cc","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectCallMinGas(address,uint256,uint64,bytes,uint64)":"e13a1834","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectRevert()":"f4844814","expectRevert(bytes)":"f28dceb3","expectRevert(bytes4)":"c31eb0e0","expectSafeMemory(uint64,uint64)":"6d016688","expectSafeMemoryCall(uint64,uint64)":"05838bf4","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","isPersistent(address)":"d92d8efd","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","mockCallRevert(address,bytes,bytes)":"dbaad147","mockCallRevert(address,uint256,bytes,bytes)":"d23cd037","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","prevrandao(bytes32)":"3b925549","projectRoot()":"d930a0e6","readCallers()":"4ad0bac9","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","resetNonce(address)":"1c72346d","resumeGasMetering()":"2bcd50e0","revertTo(uint256)":"44d7f0a4","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","setNonceUnsafe(address,uint64)":"9b67b21c","sign(uint256,bytes32)":"e341eaa4","snapshot()":"9711715a","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","stopBroadcast()":"76eadd36","stopPrank()":"90c5013b","store(address,bytes32,bytes32)":"70ca10bb","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","txGasPrice(uint256)":"48f50c0f","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemoryCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPrevrandao\",\"type\":\"bytes32\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readCallers\",\"outputs\":[{\"internalType\":\"enum VmSafe.CallerMode\",\"name\":\"callerMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"resetNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonceUnsafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newGasPrice\",\"type\":\"uint256\"}],\"name\":\"txGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemory"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemoryCall"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"label","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"bytes32","name":"newPrevrandao","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"readCallers","outputs":[{"internalType":"enum VmSafe.CallerMode","name":"callerMode","type":"uint8"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"resetNonce"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonceUnsafe"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"uint256","name":"newGasPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"txGasPrice"},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Vm.sol":"Vm"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemory","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemoryCall","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"label","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonString","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readCallers","inputs":[],"outputs":[{"name":"callerMode","type":"uint8","internalType":"enum VmSafe.CallerMode"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonceUnsafe","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"txGasPrice","inputs":[{"name":"newGasPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","createDir(string,bool)":"168b64d3","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","deal(address,uint256)":"c88a5e6d","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,uint32)":"6229498b","difficulty(uint256)":"46cc92d9","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","expectCall(address,bytes)":"bd6af434","expectCall(address,bytes,uint64)":"c1adbbff","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,bytes,uint64)":"a2b1a1ae","expectCall(address,uint256,uint64,bytes)":"23361207","expectCall(address,uint256,uint64,bytes,uint64)":"65b7b7cc","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectCallMinGas(address,uint256,uint64,bytes,uint64)":"e13a1834","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectRevert()":"f4844814","expectRevert(bytes)":"f28dceb3","expectRevert(bytes4)":"c31eb0e0","expectSafeMemory(uint64,uint64)":"6d016688","expectSafeMemoryCall(uint64,uint64)":"05838bf4","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","isPersistent(address)":"d92d8efd","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","mockCallRevert(address,bytes,bytes)":"dbaad147","mockCallRevert(address,uint256,bytes,bytes)":"d23cd037","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","prevrandao(bytes32)":"3b925549","projectRoot()":"d930a0e6","readCallers()":"4ad0bac9","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","resetNonce(address)":"1c72346d","resumeGasMetering()":"2bcd50e0","revertTo(uint256)":"44d7f0a4","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","setNonceUnsafe(address,uint64)":"9b67b21c","sign(uint256,bytes32)":"e341eaa4","snapshot()":"9711715a","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","stopBroadcast()":"76eadd36","stopPrank()":"90c5013b","store(address,bytes32,bytes32)":"70ca10bb","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","txGasPrice(uint256)":"48f50c0f","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemoryCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPrevrandao\",\"type\":\"bytes32\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readCallers\",\"outputs\":[{\"internalType\":\"enum VmSafe.CallerMode\",\"name\":\"callerMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"resetNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonceUnsafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newGasPrice\",\"type\":\"uint256\"}],\"name\":\"txGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemory"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemoryCall"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"label","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"bytes32","name":"newPrevrandao","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"readCallers","outputs":[{"internalType":"enum VmSafe.CallerMode","name":"callerMode","type":"uint8"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"resetNonce"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonceUnsafe"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"uint256","name":"newGasPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"txGasPrice"},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Vm.sol":"Vm"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Vm.sol/VmSafe.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Vm.sol/VmSafe.json index 693a5066af..6e97e678de 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Vm.sol/VmSafe.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/Vm.sol/VmSafe.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"label","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonString","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","closeFile(string)":"48c3241f","createDir(string,bool)":"168b64d3","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,uint32)":"6229498b","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","projectRoot()":"d930a0e6","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","resumeGasMetering()":"2bcd50e0","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","sign(uint256,bytes32)":"e341eaa4","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","stopBroadcast()":"76eadd36","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"label","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"label","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonString","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assume(bool)":"4c63e562","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","closeFile(string)":"48c3241f","createDir(string,bool)":"168b64d3","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,uint32)":"6229498b","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getLabel(address)":"28a249b0","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","label(address,string)":"c657c718","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","projectRoot()":"d930a0e6","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","resumeGasMetering()":"2bcd50e0","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","setEnv(string,string)":"3d5923ee","sign(uint256,bytes32)":"e341eaa4","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","stopBroadcast()":"76eadd36","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6\",\"dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"label","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xbaa13ca9f0afd927b6795c84ad7060e9ff003778e8b00069fbccac05bee92442","urls":["bzz-raw://b43fc3600bf532071a13fd2e766bccd5bf493b51b7a1684df855e642f0bcc0f6","dweb:/ipfs/QmVFNikFXSum4crSKLKZeR1VJNNq7kr6HnHMPyeKDSKPXH"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/console.sol/console.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/console.sol/console.json index b292de7aa7..92724f0c37 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/console.sol/console.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/console.sol/console.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663c512e8f3f833ea6e4c189060383e3a78aec0c96e63c9414d0d4afb57170e664736f6c63430008140033","sourceMap":"66:66622:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;66:66622:27;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663c512e8f3f833ea6e4c189060383e3a78aec0c96e63c9414d0d4afb57170e664736f6c63430008140033","sourceMap":"66:66622:27:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/console.sol":"console"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663c512e8f3f833ea6e4c189060383e3a78aec0c96e63c9414d0d4afb57170e664736f6c63430008140033","sourceMap":"66:66622:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;66:66622:16;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663c512e8f3f833ea6e4c189060383e3a78aec0c96e63c9414d0d4afb57170e664736f6c63430008140033","sourceMap":"66:66622:16:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/console.sol":"console"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"}},"version":1},"id":16} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/console2.sol/console2.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/console2.sol/console2.json index 1d212c7fe7..cc6de54bd0 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/console2.sol/console2.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/console2.sol/console2.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abeaed0621a898787dcc57cd3fc99ef12c8d5b86d1f371ecd2b7a82ef2be8c7e64736f6c63430008140033","sourceMap":"525:69152:28:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;525:69152:28;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abeaed0621a898787dcc57cd3fc99ef12c8d5b86d1f371ecd2b7a82ef2be8c7e64736f6c63430008140033","sourceMap":"525:69152:28:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The original console.sol uses `int` and `uint` for computing function selectors, but it should use `int256` and `uint256`. This modified version fixes that. This version is recommended over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. Reference: https://github.com/NomicFoundation/hardhat/issues/2178\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/console2.sol\":\"console2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/console2.sol":"console2"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abeaed0621a898787dcc57cd3fc99ef12c8d5b86d1f371ecd2b7a82ef2be8c7e64736f6c63430008140033","sourceMap":"525:69152:32:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;525:69152:32;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abeaed0621a898787dcc57cd3fc99ef12c8d5b86d1f371ecd2b7a82ef2be8c7e64736f6c63430008140033","sourceMap":"525:69152:32:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The original console.sol uses `int` and `uint` for computing function selectors, but it should use `int256` and `uint256`. This modified version fixes that. This version is recommended over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. Reference: https://github.com/NomicFoundation/hardhat/issues/2178\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/forge-std/src/console2.sol\":\"console2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/forge-std/src/console2.sol":"console2"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"}},"version":1},"id":32} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/contracts/ITraceableContract.sol/ITraceableContract.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/contracts/ITraceableContract.sol/ITraceableContract.json index 1e0bef6db5..4217847e42 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/contracts/ITraceableContract.sol/ITraceableContract.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/contracts/ITraceableContract.sol/ITraceableContract.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAllAssetsIDs()":"5137b8a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/main/solidity/contracts/ITraceableContract.sol\":\"ITraceableContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/main/solidity/contracts/ITraceableContract.sol":"ITraceableContract"},"evmVersion":"paris","libraries":{}},"sources":{"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"}},"version":1},"id":30} \ No newline at end of file +{"abi":[{"type":"function","name":"getAllAssetsIDs","inputs":[],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"event","name":"Changed","inputs":[{"name":"id","type":"string","indexed":true,"internalType":"string"},{"name":"value","type":"bytes[]","indexed":false,"internalType":"bytes[]"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAllAssetsIDs()":"5137b8a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"name\":\"Changed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllAssetsIDs\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/main/solidity/contracts/ITraceableContract.sol\":\"ITraceableContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"src/main/solidity/contracts/ITraceableContract.sol\":{\"keccak256\":\"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612\",\"license\":\"UNKNOWN\",\"urls\":[\"bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1\",\"dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"id","type":"string","indexed":true},{"internalType":"bytes[]","name":"value","type":"bytes[]","indexed":false}],"type":"event","name":"Changed","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllAssetsIDs","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/main/solidity/contracts/ITraceableContract.sol":"ITraceableContract"},"evmVersion":"paris","libraries":{}},"sources":{"src/main/solidity/contracts/ITraceableContract.sol":{"keccak256":"0x95d8bedf23010b6a40e6a8f5d55a7d5f67866619de9efcab7fa49eb3d2488612","urls":["bzz-raw://003806e9e19c67b79cf4ec156b31b8515f5a27dad6d73a9d8c3878b1373935c1","dweb:/ipfs/QmYPFBS2C6a1RwLTSEYhNVNUzxkDu4oh7eSs75gAcZ8KA4"],"license":"UNKNOWN"}},"version":1},"id":34} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/test.sol/DSTest.json b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/test.sol/DSTest.json index 43eccb7b76..00abba0caf 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/test.sol/DSTest.json +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/generated/test.sol/DSTest.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040526000805460ff1916600117905534801561001d57600080fd5b5061027d8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101d6565b60408051601f198184030181529082905261014391610212565b6000604051808303816000865af19150503d8060008114610180576040519150601f19603f3d011682016040523d82523d6000602084013e610185565b606091505b509150508080602001905181019061019d9190610225565b9150505b919050565b6000815160005b818110156101c757602081850181015186830152016101ad565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061020a60048301846101a6565b949350505050565b600061021e82846101a6565b9392505050565b60006020828403121561023757600080fd5b8151801515811461021e57600080fdfea2646970667358221220fa06953cc2582d6eaa443789a0a837f8600de7a747a3def5133516e87bd9ba5864736f6c63430008140033","sourceMap":"715:19781:13:-:0;;;1572:26;;;-1:-1:-1;;1572:26:13;1594:4;1572:26;;;715:19781;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101d6565b60408051601f198184030181529082905261014391610212565b6000604051808303816000865af19150503d8060008114610180576040519150601f19603f3d011682016040523d82523d6000602084013e610185565b606091505b509150508080602001905181019061019d9190610225565b9150505b919050565b6000815160005b818110156101c757602081850181015186830152016101ad565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061020a60048301846101a6565b949350505050565b600061021e82846101a6565b9392505050565b60006020828403121561023757600080fd5b8151801515811461021e57600080fdfea2646970667358221220fa06953cc2582d6eaa443789a0a837f8600de7a747a3def5133516e87bd9ba5864736f6c63430008140033","sourceMap":"715:19781:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584;;;:::i;:::-;;;179:14:37;;172:22;154:41;;142:2;127:18;1819:584:13;;;;;;;1572:26;;;;;;;;;1819:584;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:13;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;380:74:37;;;2221:17:13;470:18:37;;;463:34;2196:43:13;;;;;;;;;353:18:37;;;2196:43:13;;;-1:-1:-1;;1671:64:13;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:13;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:13:o;508:322:37:-;549:3;587:5;581:12;611:1;621:128;635:6;632:1;629:13;621:128;;;732:4;717:13;;;713:24;;707:31;694:11;;;687:52;650:12;621:128;;;-1:-1:-1;804:1:37;768:16;;793:13;;;-1:-1:-1;768:16:37;;508:322;-1:-1:-1;508:322:37:o;835:324::-;1032:66;1024:6;1020:79;1015:3;1008:92;990:3;1116:37;1150:1;1145:3;1141:11;1133:6;1116:37;:::i;:::-;1109:44;835:324;-1:-1:-1;;;;835:324:37:o;1164:189::-;1293:3;1318:29;1343:3;1335:6;1318:29;:::i;:::-;1311:36;1164:189;-1:-1:-1;;;1164:189:37:o;1358:277::-;1425:6;1478:2;1466:9;1457:7;1453:23;1449:32;1446:52;;;1494:1;1491;1484:12;1446:52;1526:9;1520:16;1579:5;1572:13;1565:21;1558:5;1555:32;1545:60;;1601:1;1598;1591:12","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/ds-test/src/test.sol":"DSTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"}},"version":1},"id":13} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040526000805460ff1916600117905534801561001d57600080fd5b5061027d8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101d6565b60408051601f198184030181529082905261014391610212565b6000604051808303816000865af19150503d8060008114610180576040519150601f19603f3d011682016040523d82523d6000602084013e610185565b606091505b509150508080602001905181019061019d9190610225565b9150505b919050565b6000815160005b818110156101c757602081850181015186830152016101ad565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061020a60048301846101a6565b949350505050565b600061021e82846101a6565b9392505050565b60006020828403121561023757600080fd5b8151801515811461021e57600080fdfea2646970667358221220fa06953cc2582d6eaa443789a0a837f8600de7a747a3def5133516e87bd9ba5864736f6c63430008140033","sourceMap":"715:19781:17:-:0;;;1572:26;;;-1:-1:-1;;1572:26:17;1594:4;1572:26;;;715:19781;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063ba414fa61461003b578063fa7626d414610057575b600080fd5b610043610064565b604051901515815260200160405180910390f35b6000546100439060ff1681565b60008054610100900460ff16156100845750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a15760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610129917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc4916080016101d6565b60408051601f198184030181529082905261014391610212565b6000604051808303816000865af19150503d8060008114610180576040519150601f19603f3d011682016040523d82523d6000602084013e610185565b606091505b509150508080602001905181019061019d9190610225565b9150505b919050565b6000815160005b818110156101c757602081850181015186830152016101ad565b50600093019283525090919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600061020a60048301846101a6565b949350505050565b600061021e82846101a6565b9392505050565b60006020828403121561023757600080fd5b8151801515811461021e57600080fdfea2646970667358221220fa06953cc2582d6eaa443789a0a837f8600de7a747a3def5133516e87bd9ba5864736f6c63430008140033","sourceMap":"715:19781:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584;;;:::i;:::-;;;179:14:45;;172:22;154:41;;142:2;127:18;1819:584:17;;;;;;;1572:26;;;;;;;;;1819:584;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:17;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;380:74:45;;;2221:17:17;470:18:45;;;463:34;2196:43:17;;;;;;;;;353:18:45;;;2196:43:17;;;-1:-1:-1;;1671:64:17;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:17;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:17:o;508:322:45:-;549:3;587:5;581:12;611:1;621:128;635:6;632:1;629:13;621:128;;;732:4;717:13;;;713:24;;707:31;694:11;;;687:52;650:12;621:128;;;-1:-1:-1;804:1:45;768:16;;793:13;;;-1:-1:-1;768:16:45;;508:322;-1:-1:-1;508:322:45:o;835:324::-;1032:66;1024:6;1020:79;1015:3;1008:92;990:3;1116:37;1150:1;1145:3;1141:11;1133:6;1116:37;:::i;:::-;1109:44;835:324;-1:-1:-1;;;;835:324:45:o;1164:189::-;1293:3;1318:29;1343:3;1335:6;1318:29;:::i;:::-;1311:36;1164:189;-1:-1:-1;;;1164:189:45:o;1358:277::-;1425:6;1478:2;1466:9;1457:7;1453:23;1449:32;1446:52;;;1494:1;1491;1484:12;1446:52;1526:9;1520:16;1579:5;1572:13;1565:21;1558:5;1555:32;1545:60;;1601:1;1598;1591:12","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","failed()":"ba414fa6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/ds-test/src/test.sol\":\"DSTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\"]},\"sources\":{\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-solidity/=node_modules/openzeppelin-solidity/"],"optimizer":{"enabled":true,"runs":1000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/ds-test/src/test.sol":"DSTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"}},"version":1},"id":17} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPNFTokenContractTest.sol b/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPNFTokenContractTest.sol new file mode 100644 index 0000000000..8086c311b3 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPNFTokenContractTest.sol @@ -0,0 +1,108 @@ +// SPDX-License-Identifier: GPL-3.0 + +pragma solidity ^0.8.20; + +import { SATPNFTokenContract } from "../contracts/SATPNFTokenContract.sol"; +import "forge-std/Test.sol"; +import { console } from "forge-std/console.sol"; + +contract SATPNFTokenContractTest is Test { + SATPNFTokenContract satpContract; + + address public owner = makeAddr("owner"); + address public bridge = makeAddr("bridge"); + address public user = makeAddr("user"); + + function setUp() public { + vm.prank(owner); + satpContract = new SATPNFTokenContract(owner); + + vm.startPrank(owner); + satpContract.grantBridgeRole(bridge); + assertTrue(satpContract.hasBridgeRole(bridge)); + vm.stopPrank(); + } + + function mintToUser(uint256 tokenId) internal { + vm.prank(bridge); + satpContract.mint(user, tokenId); + } + + function approveAddressToToken(address to, uint256 tokenId) internal { + vm.prank(user); + satpContract.approve(to, tokenId); + } + + function testTokenNameAndSymbol() public { + assertEq(satpContract.name(), "SATPNFToken"); + assertEq(satpContract.symbol(), "SATPNFT"); + } + + function testMintAndCheckBalance() public { + uint256 tokenId = 1001; + + vm.prank(bridge); + satpContract.mint(user, tokenId); + + assertEq(satpContract.balanceOf(user), 1); + assertEq(satpContract.ownerOf(tokenId), user); + } + + function testApprove() public { + uint256 tokenId = 1001; + mintToUser(tokenId); + + vm.prank(user); + satpContract.approve(bridge, tokenId); + + vm.prank(bridge); + address approvedAddress = satpContract.getApproved(tokenId); + assertEq(approvedAddress, bridge, "Approval address mismatch"); + + vm.prank(bridge); + address tokenOwner = satpContract.ownerOf(tokenId); + assertEq(tokenOwner, user, "Owner address mismatch"); + } + + function testLock() public { + uint256 tokenId = 1001; + mintToUser(tokenId); + + approveAddressToToken(bridge, tokenId); + + vm.prank(bridge); + satpContract.lock(user, bridge, 1001); + + assertEq(satpContract.balanceOf(user), 0); + assertEq(satpContract.balanceOf(bridge), 1); + } + + function testUnlock() public { + uint256 tokenId = 1001; + mintToUser(tokenId); + + approveAddressToToken(bridge, tokenId); + + vm.startPrank(bridge); + satpContract.lock(user, bridge, tokenId); + satpContract.unlock(bridge, user, tokenId); + vm.stopPrank(); + + assertEq(satpContract.balanceOf(user), 1); + assertEq(satpContract.balanceOf(bridge), 0); + } + + function testBurn() public { + uint256 tokenId = 1001; + uint256 tokenId2 = 1002; + mintToUser(tokenId); + mintToUser(tokenId2); + assertEq(satpContract.balanceOf(user), 2); + + approveAddressToToken(bridge, tokenId); + vm.prank(bridge); + satpContract.burn(tokenId); + + assertEq(satpContract.balanceOf(user), 1); + } +} \ No newline at end of file diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTest.sol b/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTestFungible.sol similarity index 58% rename from packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTest.sol rename to packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTestFungible.sol index 0906deac40..1a0baee13d 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTest.sol +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTestFungible.sol @@ -15,18 +15,21 @@ contract SATPWrapperTest is Test{ SATPWrapperContract wrapperContract; + address public user = makeAddr("user"); + address public user2 = makeAddr("user2"); + string[] lockInteractions; - VarType[][] lockVariables; + AssetParameterIdentifier[][] lockVariables; string[] unlockInteractions; - VarType[][] unlockVariables; + AssetParameterIdentifier[][] unlockVariables; string[] mintInteractions; - VarType[][] mintVariables; + AssetParameterIdentifier[][] mintVariables; string[] burnInteractions; - VarType[][] burnVariables; + AssetParameterIdentifier[][] burnVariables; string[] assignInteractions; - VarType[][] assignVariables; + AssetParameterIdentifier[][] assignVariables; string[] checkPermissionInteractions; - VarType[][] checkPermissionVariables; + AssetParameterIdentifier[][] checkPermissionVariables; function setUp() public { // Remix does not offer a set of methods that can change the msg.sender so every contract owner is the same @@ -35,45 +38,43 @@ contract SATPWrapperTest is Test{ contract1 = new SATPTokenContract(address(wrapperContract)); - lockInteractions.push("transfer(address,address,uint256)"); - - lockVariables.push([VarType.OWNER, VarType.BRIDGE, VarType.AMOUNT]); + lockInteractions.push("bridgeTransferFrom(address,address,uint256)"); + + lockVariables.push([AssetParameterIdentifier.OWNER, AssetParameterIdentifier.BRIDGE, AssetParameterIdentifier.AMOUNT]); InteractionSignature memory lock = InteractionSignature(InteractionType.LOCK,lockInteractions,lockVariables, true); signatures.push(lock); - unlockInteractions.push("approve(address,uint256)"); - unlockInteractions.push("transfer(address,address,uint256)"); - - unlockVariables.push([VarType.BRIDGE, VarType.AMOUNT]); - unlockVariables.push([VarType.BRIDGE, VarType.OWNER, VarType.AMOUNT]); - InteractionSignature memory unlock = InteractionSignature(InteractionType.UNLOCK,unlockInteractions,lockVariables, true); + unlockInteractions.push("lock(address,address,uint256)"); + + unlockVariables.push([AssetParameterIdentifier.BRIDGE, AssetParameterIdentifier.OWNER, AssetParameterIdentifier.AMOUNT]); + InteractionSignature memory unlock = InteractionSignature(InteractionType.UNLOCK,unlockInteractions,unlockVariables, true); signatures.push(unlock); mintInteractions.push("mint(address,uint256)"); - - mintVariables.push([VarType.BRIDGE, VarType.AMOUNT]); - InteractionSignature memory mint = InteractionSignature(InteractionType.MINT,mintInteractions,lockVariables, true); + + mintVariables.push([AssetParameterIdentifier.BRIDGE, AssetParameterIdentifier.AMOUNT]); + InteractionSignature memory mint = InteractionSignature(InteractionType.MINT,mintInteractions,mintVariables, true); signatures.push(mint); burnInteractions.push("burn(address,uint256)"); - burnVariables.push([VarType.BRIDGE, VarType.AMOUNT]); - InteractionSignature memory burn = InteractionSignature(InteractionType.BURN,burnInteractions,lockVariables, true); + burnVariables.push([AssetParameterIdentifier.BRIDGE, AssetParameterIdentifier.AMOUNT]); + InteractionSignature memory burn = InteractionSignature(InteractionType.BURN,burnInteractions,burnVariables, true); signatures.push(burn); assignInteractions.push("assign(address,address,uint256)"); - - assignVariables.push([VarType.BRIDGE, VarType.RECEIVER, VarType.AMOUNT]); - InteractionSignature memory assign = InteractionSignature(InteractionType.ASSIGN,assignInteractions,lockVariables, true); + + assignVariables.push([AssetParameterIdentifier.BRIDGE, AssetParameterIdentifier.RECEIVER, AssetParameterIdentifier.AMOUNT]); + InteractionSignature memory assign = InteractionSignature(InteractionType.ASSIGN,assignInteractions,assignVariables, true); signatures.push(assign); checkPermissionInteractions.push("hasPermission(address)"); - - checkPermissionVariables.push([VarType.BRIDGE]); - InteractionSignature memory checkPermition = InteractionSignature(InteractionType.CHECKPERMITION,checkPermissionInteractions,lockVariables, true); + + checkPermissionVariables.push([AssetParameterIdentifier.BRIDGE]); + InteractionSignature memory checkPermition = InteractionSignature(InteractionType.CHECKPERMITION,checkPermissionInteractions,checkPermissionVariables, true); signatures.push(checkPermition); } @@ -83,7 +84,7 @@ contract SATPWrapperTest is Test{ } function testWrap() public { - wrapperContract.wrap(contract1.name(), address(contract1), TokenType.OTHER, contract1.name(), "refID", address(this), signatures); + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_FUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC20); Token memory tokenReceived = wrapperContract.getToken(contract1.name()); @@ -94,9 +95,9 @@ contract SATPWrapperTest is Test{ function testWrapTokenAlreadyWrapped() public { - wrapperContract.wrap(contract1.name(), address(contract1), TokenType.OTHER, contract1.name(), "refID", address(this), signatures); + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_FUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC20); - try wrapperContract.wrap(contract1.name(), address(contract1), TokenType.OTHER, contract1.name(), "refID", address(this), signatures) returns (bool s) { + try wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_FUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC20) returns (bool s) { require(!s, "Expected an error"); } catch Error(string memory) { @@ -106,7 +107,7 @@ contract SATPWrapperTest is Test{ } function testUnwrap() public { - wrapperContract.wrap(contract1.name(), address(contract1), TokenType.OTHER, contract1.name(), "refID", address(this), signatures); + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_FUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC20); wrapperContract.unwrap(contract1.name()); @@ -115,16 +116,24 @@ contract SATPWrapperTest is Test{ assertNotEq(tokenReceived.contractAddress, address(contract1), "Tokens don't match"); } - // function testUnwrapATokenNotWrapped() public { - // vm.expectRevert(); - // wrapperContract.unwrap(contract1.name()); - // } - - function testUnwrapATokenWithValueLocked() public { - wrapperContract.wrap(contract1.name(), address(contract1), TokenType.OTHER, contract1.name(), "refID", address(this), signatures); - + function testMint() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_FUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC20); wrapperContract.mint(contract1.name(), 10); + + assertEq(contract1.balanceOf(address(wrapperContract)), 10, "Token not minted"); + } + function testMintATokenNotWrapped() public { + try wrapperContract.mint(contract1.name(), 10) returns (bool s) { + require(!s, "Expected an error"); + } + catch Error(string memory) { + } + catch (bytes memory /*lowLevelData*/) { + } + } + + function testUnwrapATokenNotWrapped() public { try wrapperContract.unwrap(contract1.name()) returns (bool s) { require(!s, "Expected an error"); } @@ -134,16 +143,12 @@ contract SATPWrapperTest is Test{ } } - // function testMint() public { - // wrapperContract.wrap(contract1.name(), address(contract1), TokenType.OTHER, contract1.name(), "refID", address(this), signatures); + function testUnwrapATokenWithValueLocked() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_FUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC20); - // wrapperContract.mint(contract1.name(), 10); - - // assertEq(contract1.balanceOf(address(wrapperContract)), 10, "Token not minted"); - // } + wrapperContract.mint(contract1.name(), 10); - function testMintATokenNotWrapped() public { - try wrapperContract.mint(contract1.name(), 10) returns (bool s) { + try wrapperContract.unwrap(contract1.name()) returns (bool s) { require(!s, "Expected an error"); } catch Error(string memory) { diff --git a/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTestNonFungible.sol b/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTestNonFungible.sol new file mode 100644 index 0000000000..6307a29055 --- /dev/null +++ b/packages/cactus-plugin-satp-hermes/src/test/solidity/tests/SATPWrapperTestNonFungible.sol @@ -0,0 +1,170 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity ^0.8.20; + +import "../../../main/solidity/contracts/SATPWrapperContract.sol"; +import { SATPNFTokenContract } from "../contracts/SATPNFTokenContract.sol"; +import "forge-std/Test.sol"; +import { console } from "forge-std/console.sol"; +import { InteractionSignature, InteractionType, AssetParameterIdentifier, TokenType, Token } from "../../../main/solidity/contracts/SATPWrapperContract.sol"; + +contract SATPWrapperTest is Test{ + + + address public user = makeAddr("user"); + address public tokenContractOwner = makeAddr("tokenContractOwner"); + + InteractionSignature[] signatures; + + SATPWrapperContract wrapperContract; + SATPNFTokenContract contract1; + + string[] lockInteractions; + AssetParameterIdentifier[][] lockVariables; + string[] unlockInteractions; + AssetParameterIdentifier[][] unlockVariables; + string[] mintInteractions; + AssetParameterIdentifier[][] mintVariables; + string[] burnInteractions; + AssetParameterIdentifier[][] burnVariables; + string[] assignInteractions; + AssetParameterIdentifier[][] assignVariables; + string[] checkPermissionInteractions; + AssetParameterIdentifier[][] checkPermissionVariables; + + function setUp() public { + wrapperContract = new SATPWrapperContract(address(this)); + contract1 = new SATPNFTokenContract(tokenContractOwner); + + lockInteractions.push("lock(address,address,uint256)"); + lockVariables.push([AssetParameterIdentifier.OWNER, AssetParameterIdentifier.BRIDGE, AssetParameterIdentifier.UNIQUE_DESCRIPTOR]); + InteractionSignature memory lock = InteractionSignature(InteractionType.LOCK,lockInteractions,lockVariables, true); + signatures.push(lock); + + unlockInteractions.push("unlock(address,address,uint256)"); + unlockVariables.push([AssetParameterIdentifier.BRIDGE, AssetParameterIdentifier.OWNER, AssetParameterIdentifier.UNIQUE_DESCRIPTOR]); + InteractionSignature memory unlock = InteractionSignature(InteractionType.UNLOCK,unlockInteractions,unlockVariables, true); + signatures.push(unlock); + + mintInteractions.push("mint(address,uint256)"); + mintVariables.push([AssetParameterIdentifier.BRIDGE, AssetParameterIdentifier.UNIQUE_DESCRIPTOR]); + InteractionSignature memory mint = InteractionSignature(InteractionType.MINT,mintInteractions,mintVariables, true); + signatures.push(mint); + + burnInteractions.push("burn(uint256)"); + burnVariables.push([AssetParameterIdentifier.UNIQUE_DESCRIPTOR]); + InteractionSignature memory burn = InteractionSignature(InteractionType.BURN,burnInteractions,burnVariables, true); + signatures.push(burn); + + assignInteractions.push("assign(address,uint256)"); + assignVariables.push([AssetParameterIdentifier.RECEIVER, AssetParameterIdentifier.UNIQUE_DESCRIPTOR]); + InteractionSignature memory assign = InteractionSignature(InteractionType.ASSIGN,assignInteractions,assignVariables, true); + signatures.push(assign); + + vm.startPrank(tokenContractOwner); + contract1.grantBridgeRole(address(wrapperContract)); + assertTrue(contract1.hasBridgeRole(address(wrapperContract))); + vm.stopPrank(); + } + + function testTokenNameAndSymbol() public { + assertEq(contract1.name(), "SATPNFToken"); + assertEq(contract1.symbol(), "SATPNFT"); + } + + function testGetAllAssetsIDs() public { + Token memory token = wrapperContract.getToken(contract1.symbol()); + assertEq(token.contractAddress, address(0), "Token should not exist before wrapping"); + } + + function testWrap() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_NONFUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC721); + Token memory tokenReceived = wrapperContract.getToken(contract1.name()); + assertEq(tokenReceived.contractAddress, address(contract1), "Tokens don't match"); + assertEq(wrapperContract.getAllAssetsIDs()[0], contract1.name(), "Ids don't match"); + } + + function testUnwrap() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_NONFUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC721); + wrapperContract.unwrap(contract1.name()); + Token memory tokenReceived = wrapperContract.getToken(contract1.name()); + assertNotEq(tokenReceived.contractAddress, address(contract1), "Tokens don't match"); + } + + function testMint() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_NONFUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC721); + wrapperContract.mint(contract1.name(), 1001); + assertEq(contract1.balanceOf(address(wrapperContract)), 1, "Token not minted"); + } + + function testBurn() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_NONFUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC721); + wrapperContract.mint(contract1.name(), 1001); + assertEq(contract1.balanceOf(address(wrapperContract)), 1, "Tokens not minted"); + vm.prank(address(wrapperContract)); + contract1.approve(address(wrapperContract), 1001); + vm.prank(address(wrapperContract)); + wrapperContract.burn(contract1.name(), 1001); + assertEq(contract1.balanceOf(address(wrapperContract)), 0, "Token not burned"); + } + + function testLock() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_NONFUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC721); + vm.prank(address(wrapperContract)); + contract1.mint(address(user), 1001); + vm.prank(user); + contract1.approve(address(wrapperContract), 1001); + wrapperContract.lock(contract1.name(), 1001); + Token memory token = wrapperContract.getToken(contract1.name(), 1001); + assertEq(token.amount, 1001, "Token not locked"); + } + + function testUnlock() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_NONFUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC721); + vm.prank(address(wrapperContract)); + contract1.mint(address(user), 1001); + vm.prank(user); + contract1.approve(address(wrapperContract), 1001); + wrapperContract.lock(contract1.name(), 1001); + wrapperContract.unlock(contract1.name(), 1001); + assertEq(contract1.balanceOf(address(user)), 1, "Token not returned on unlock"); + } + + function testAssign() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_NONFUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC721); + wrapperContract.mint(contract1.name(), 1002); + wrapperContract.assign(contract1.name(), address(user), 1002); + assertEq(contract1.balanceOf(address(user)), 1, "Token not assigned"); + } + + function testUnwrapATokenNotWrapped() public { + try wrapperContract.unwrap(contract1.name()) returns (bool s) { + require(!s, "Expected an error"); + } + catch Error(string memory) { + } + catch (bytes memory /*lowLevelData*/) { + } + } + + function testUnwrapATokenWithValueLocked() public { + wrapperContract.wrap(contract1.name(), address(contract1), TokenType.NONSTANDARD_NONFUNGIBLE, contract1.name(), "refID", address(user), signatures, ERCTokenStandard.ERC721); + wrapperContract.mint(contract1.name(), 1001); + try wrapperContract.unwrap(contract1.name()) returns (bool s) { + require(!s, "Expected an error"); + } + catch Error(string memory) { + } + catch (bytes memory /*lowLevelData*/) { + } + } + + function testMintATokenNotWrapped() public { + try wrapperContract.mint(contract1.name(), 1001) returns (bool s) { + require(!s, "Expected an error"); + } + catch Error(string memory) { + } + catch (bytes memory /*lowLevelData*/) { + } + } +} diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/besu-test-environment.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/besu-test-environment.ts index 8a8bb5d2c0..7138ea3422 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/besu-test-environment.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/besu-test-environment.ts @@ -1,7 +1,7 @@ import { - LogLevelDesc, - LoggerProvider, Logger, + LoggerProvider, + LogLevelDesc, } from "@hyperledger/cactus-common"; import { BesuTestLedger } from "@hyperledger/cactus-test-tooling"; import { @@ -14,29 +14,52 @@ import { Web3SigningCredentialType as Web3SigningCredentialTypeBesu, } from "@hyperledger/cactus-plugin-ledger-connector-besu"; import SATPTokenContract from "../../solidity/generated/SATPTokenContract.sol/SATPTokenContract.json"; +import SATPNFTokenContract from "../../solidity/generated/SATPNFTokenContract.sol/SATPNFTokenContract.json"; import Web3 from "web3"; import { PluginKeychainMemory } from "@hyperledger/cactus-plugin-keychain-memory"; import { PluginRegistry } from "@hyperledger/cactus-core"; import { randomUUID as uuidv4 } from "node:crypto"; import { expect } from "@jest/globals"; import { ClaimFormat } from "../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; -import { Asset, AssetTokenTypeEnum, NetworkId } from "../../../main/typescript"; +import { + Asset, + AssetTokenTypeEnum, + NetworkId, + AssetErcTokenStandardEnum, +} from "../../../main/typescript"; import { LedgerType } from "@hyperledger/cactus-core-api"; import { IBesuLeafNeworkOptions, IBesuLeafOptions, } from "../../../main/typescript/cross-chain-mechanisms/bridge/leafs/besu-leaf"; -import ExampleOntology from "../../ontologies/ontology-satp-erc20-interact-besu.json"; +import { OntologyManager } from "../../../main/typescript/cross-chain-mechanisms/bridge/ontology/ontology-manager"; +import ExampleOntologyERC20 from "../../ontologies/ontology-satp-erc20-interact-besu.json"; +import ExampleOntologyERC721 from "../../ontologies/ontology-satp-erc721-interact-besu.json"; import { INetworkOptions } from "../../../main/typescript/cross-chain-mechanisms/bridge/bridge-types"; import Docker from "dockerode"; +import { TokenType } from "../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; export interface IBesuTestEnvironment { - contractName: string; logLevel: LogLevelDesc; network?: string; } +export enum SupportedContractTypes { + FUNGIBLE = "FUNGIBLE", + NONFUNGIBLE = "NONFUNGIBLE", + WRAPPER = "WRAPPER", + ORACLE = "ORACLE", +} +export interface tokenContractName { + assetType: SupportedContractTypes; + contractName: string; +} export class BesuTestEnvironment { public static readonly BESU_ASSET_ID: string = "BesuExampleAsset"; - public static readonly BESU_REFERENCE_ID: string = ExampleOntology.id; + public static readonly BESU_ASSET_ID2: string = "BesuExampleAsset2"; + public static readonly BESU_REFERENCE_ID: Record = { + [TokenType.NONSTANDARD_FUNGIBLE]: ExampleOntologyERC20.id, + [TokenType.NONSTANDARD_NONFUNGIBLE]: ExampleOntologyERC721.id, + [TokenType.UNSPECIFIED]: "", + }; public static readonly BESU_NETWORK_ID: string = "BesuLedgerTestNetwork"; public readonly network: NetworkId = { id: BesuTestEnvironment.BESU_NETWORK_ID, @@ -45,8 +68,11 @@ export class BesuTestEnvironment { public ledger!: BesuTestLedger; public connector!: PluginLedgerConnectorBesu; public connectorOptions!: IPluginLedgerConnectorBesuOptions; - public keychainPlugin1!: PluginKeychainMemory; - public keychainPlugin2!: PluginKeychainMemory; + + public keychainPluginWrapper!: PluginKeychainMemory; + public keychainPluginFungible!: PluginKeychainMemory; + public keychainPluginNonFungible!: PluginKeychainMemory; + public besuKeyPair!: { privateKey: string }; public keychainEntryKey!: string; public keychainEntryValue!: string; @@ -54,8 +80,20 @@ export class BesuTestEnvironment { public firstHighNetWorthAccount!: string; public bridgeEthAccount!: { address: string; privateKey: string }; public assigneeEthAccount?: { address: string; privateKey: string }; - public erc20TokenContract!: string; - public assetContractAddress?: string; + + public tokenContracts: Map = new Map< + SupportedContractTypes, + string + >(); + public tokenContractCodes: Map = new Map< + SupportedContractTypes, + any + >(); + public assetContractAddresses: Map = new Map< + SupportedContractTypes, + string + >(); + public besuConfig!: IBesuLeafNeworkOptions; public gas: number = 999999999; // Default gas limit for transactions @@ -64,24 +102,21 @@ export class BesuTestEnvironment { private readonly log: Logger; - private constructor( - erc20TokenContract: string, - logLevel: LogLevelDesc, - network?: string, - ) { + private constructor(logLevel: LogLevelDesc, network?: string) { if (network) { this.dockerNetwork = network; } - this.erc20TokenContract = erc20TokenContract; - const level = logLevel || "INFO"; const label = "BesuTestEnvironment"; this.log = LoggerProvider.getOrCreate({ level, label }); } // Initializes the Besu ledger, accounts, and connector for testing - public async init(logLevel: LogLevelDesc): Promise { + public async init( + logLevel: LogLevelDesc, + tokenType: tokenContractName[], + ): Promise { this.ledger = new BesuTestLedger({ emitContainerLogs: true, envVars: ["BESU_NETWORK=dev"], @@ -119,30 +154,64 @@ export class BesuTestEnvironment { this.keychainEntryValue = this.besuKeyPair.privateKey; this.keychainEntryKey = uuidv4(); + tokenType.forEach((element) => { + this.tokenContracts.set(element.assetType, element.contractName); + this.log.info( + `Listing contract for type ${element.assetType} on Besu Test Environment`, + ); + }); + // Keychain Plugins setup - this.keychainPlugin1 = new PluginKeychainMemory({ + this.keychainPluginWrapper = new PluginKeychainMemory({ instanceId: uuidv4(), keychainId: uuidv4(), backend: new Map([[this.keychainEntryKey, this.keychainEntryValue]]), logLevel, }); - this.keychainPlugin2 = new PluginKeychainMemory({ + this.keychainPluginFungible = new PluginKeychainMemory({ instanceId: uuidv4(), keychainId: uuidv4(), backend: new Map([[this.keychainEntryKey, this.keychainEntryValue]]), logLevel, }); - // Smart Contract Configuration - this.keychainPlugin1.set( - this.erc20TokenContract, - JSON.stringify(SATPTokenContract), - ); + this.keychainPluginNonFungible = new PluginKeychainMemory({ + instanceId: uuidv4(), + keychainId: uuidv4(), + backend: new Map([[this.keychainEntryKey, this.keychainEntryValue]]), + logLevel, + }); + + if (this.tokenContracts.has(SupportedContractTypes.FUNGIBLE)) { + this.keychainPluginFungible.set( + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? "", + JSON.stringify(SATPTokenContract), + ); + this.tokenContractCodes.set( + SupportedContractTypes.FUNGIBLE, + SATPTokenContract, + ); + } + + if (this.tokenContracts.has(SupportedContractTypes.NONFUNGIBLE)) { + this.keychainPluginNonFungible.set( + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? "", + JSON.stringify(SATPNFTokenContract), + ); + this.tokenContractCodes.set( + SupportedContractTypes.NONFUNGIBLE, + SATPNFTokenContract, + ); + } // Plugin Registry setup const pluginRegistry = new PluginRegistry({ - plugins: [this.keychainPlugin1, this.keychainPlugin2], + plugins: [ + this.keychainPluginFungible, + this.keychainPluginNonFungible, + this.keychainPluginWrapper, + ], }); // Besu Connector setup @@ -188,13 +257,10 @@ export class BesuTestEnvironment { public static async setupTestEnvironment( config: IBesuTestEnvironment, + tokenContracts: tokenContractName[], ): Promise { - const instance = new BesuTestEnvironment( - config.contractName, - config.logLevel, - config.network, - ); - await instance.init(config.logLevel); + const instance = new BesuTestEnvironment(config.logLevel, config.network); + await instance.init(config.logLevel, tokenContracts); return instance; } @@ -223,15 +289,18 @@ export class BesuTestEnvironment { wrapperContractAddress: this.besuConfig.wrapperContractAddress, gas: this.besuConfig.gas, connectorOptions: { - rpcApiHttpHost: await this.ledger.getRpcApiHttpHost(false), - rpcApiWsHost: await this.ledger.getRpcApiWsHost(false), + rpcApiHttpHost: await this.ledger.getRpcApiHttpHost(), + rpcApiWsHost: await this.ledger.getRpcApiWsHost(), }, claimFormats: this.besuConfig.claimFormats, } as INetworkOptions; } // this creates the same config as the bridge manager does - public createBesuLeafConfig(logLevel?: LogLevelDesc): IBesuLeafOptions { + public createBesuLeafConfig( + ontologyManager: OntologyManager, + logLevel?: LogLevelDesc, + ): IBesuLeafOptions { return { networkIdentification: this.besuConfig.networkIdentification, signingCredential: this.besuConfig.signingCredential, @@ -258,19 +327,38 @@ export class BesuTestEnvironment { return this.network.ledgerType; } - // Deploys smart contracts and sets up configurations for testing - public async deployAndSetupContracts(claimFormat: ClaimFormat) { + public async deployAndSetupContract(assetType: SupportedContractTypes) { + let contractKeyChainId: string; + let contractCode: any; + + switch (assetType) { + case SupportedContractTypes.FUNGIBLE: + contractKeyChainId = this.keychainPluginFungible.getKeychainId(); + contractCode = this.tokenContractCodes.get( + SupportedContractTypes.FUNGIBLE, + ); + break; + case SupportedContractTypes.NONFUNGIBLE: + contractKeyChainId = this.keychainPluginNonFungible.getKeychainId(); + contractCode = this.tokenContractCodes.get( + SupportedContractTypes.NONFUNGIBLE, + ); + break; + default: + throw new Error(`Unsupported asset type: ${assetType}`); + } + const deployOutSATPTokenContract = await this.connector.deployContract({ - keychainId: this.keychainPlugin1.getKeychainId(), - contractName: this.erc20TokenContract, - contractAbi: SATPTokenContract.abi, + keychainId: contractKeyChainId, + contractName: this.tokenContracts.get(assetType) ?? "", + contractAbi: contractCode.abi, constructorArgs: [this.firstHighNetWorthAccount], web3SigningCredential: { ethAccount: this.firstHighNetWorthAccount, secret: this.besuKeyPair.privateKey, type: Web3SigningCredentialTypeBesu.PrivateKeyHex, }, - bytecode: SATPTokenContract.bytecode.object, + bytecode: contractCode.bytecode.object, gas: this.gas, }); expect(deployOutSATPTokenContract).toBeTruthy(); @@ -279,10 +367,23 @@ export class BesuTestEnvironment { deployOutSATPTokenContract.transactionReceipt.contractAddress, ).toBeTruthy(); - this.assetContractAddress = - deployOutSATPTokenContract.transactionReceipt.contractAddress ?? ""; + this.assetContractAddresses.set( + assetType, + deployOutSATPTokenContract.transactionReceipt.contractAddress ?? "", + ); + if (this.assetContractAddresses.get(assetType) != "") { + this.log.info(`SATPTokenContract${assetType} Deployed successfully`); + } + } - this.log.info("SATPTokenContract Deployed successfully"); + // Deploys smart contracts and sets up configurations for testing + public async deployAndSetupContracts(claimFormat: ClaimFormat) { + if (this.tokenContracts.has(SupportedContractTypes.FUNGIBLE)) { + await this.deployAndSetupContract(SupportedContractTypes.FUNGIBLE); + } + if (this.tokenContracts.has(SupportedContractTypes.NONFUNGIBLE)) { + await this.deployAndSetupContract(SupportedContractTypes.NONFUNGIBLE); + } this.besuConfig = { networkIdentification: this.network, @@ -304,8 +405,19 @@ export class BesuTestEnvironment { contract_name: string, contract: { abi: any; bytecode: { object: string } }, ): Promise { + if (this.tokenContracts.has(SupportedContractTypes.ORACLE)) { + this.keychainPluginFungible.set( + this.tokenContracts.get(SupportedContractTypes.ORACLE) ?? "", + JSON.stringify(SATPTokenContract), + ); + this.tokenContractCodes.set( + SupportedContractTypes.ORACLE, + SATPTokenContract, + ); + } + const blOracleContract = await this.connector.deployContract({ - keychainId: this.keychainPlugin1.getKeychainId(), + keychainId: this.keychainPluginFungible.getKeychainId(), contractName: contract_name, contractAbi: contract.abi, constructorArgs: [], @@ -321,8 +433,10 @@ export class BesuTestEnvironment { expect(blOracleContract.transactionReceipt).toBeTruthy(); expect(blOracleContract.transactionReceipt.contractAddress).toBeTruthy(); - this.assetContractAddress = - blOracleContract.transactionReceipt.contractAddress ?? ""; + this.assetContractAddresses.set( + SupportedContractTypes.FUNGIBLE, + blOracleContract.transactionReceipt.contractAddress ?? "", + ); this.log.info("this.businessLogicContract Deployed successfully"); @@ -342,13 +456,36 @@ export class BesuTestEnvironment { return blOracleContract.transactionReceipt.contractAddress!; } - public async mintTokens(amount: string): Promise { + public async mintTokens( + assetAttribute: string, + newTokenType: TokenType, + ): Promise { + let inUseContractName: string; + let inUseTokenAttribute: string; + let inUseContractKeyChainId: string; + switch (newTokenType) { + case TokenType.NONSTANDARD_FUNGIBLE: + inUseContractName = + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? ""; + inUseTokenAttribute = "amount"; + inUseContractKeyChainId = this.keychainPluginFungible.getKeychainId(); + break; + case TokenType.NONSTANDARD_NONFUNGIBLE: + inUseContractName = + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? ""; + inUseTokenAttribute = "tokenId"; + inUseContractKeyChainId = + this.keychainPluginNonFungible.getKeychainId(); + break; + default: + throw new Error(`Unsupported token type for minting: ${newTokenType}`); + } const responseMint = await this.connector.invokeContract({ - contractName: this.erc20TokenContract, - keychainId: this.keychainPlugin1.getKeychainId(), + contractName: inUseContractName, + keychainId: inUseContractKeyChainId, invocationType: BesuContractInvocationType.Send, methodName: "mint", - params: [this.firstHighNetWorthAccount, amount], + params: [this.firstHighNetWorthAccount, assetAttribute], signingCredential: { ethAccount: this.firstHighNetWorthAccount, secret: this.besuKeyPair.privateKey, @@ -358,39 +495,91 @@ export class BesuTestEnvironment { }); expect(responseMint).toBeTruthy(); expect(responseMint.success).toBeTruthy(); - this.log.info("Minted 100 tokens to firstHighNetWorthAccount"); + this.log.info( + `Minted ${inUseTokenAttribute} ${assetAttribute} to firstHighNetWorthAccount`, + ); } public async giveRoleToBridge(wrapperAddress: string): Promise { - const giveRoleRes = await this.connector.invokeContract({ - contractName: this.erc20TokenContract, - keychainId: this.keychainPlugin1.getKeychainId(), - invocationType: BesuContractInvocationType.Send, - methodName: "grantBridgeRole", - params: [wrapperAddress], - signingCredential: { - ethAccount: this.firstHighNetWorthAccount, - secret: this.besuKeyPair.privateKey, - type: Web3SigningCredentialTypeBesu.PrivateKeyHex, - }, - gas: 1000000, - }); + if (this.tokenContracts.has(SupportedContractTypes.FUNGIBLE)) { + const giveRoleRes = await this.connector.invokeContract({ + contractName: + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? "", + keychainId: this.keychainPluginFungible.getKeychainId(), + invocationType: BesuContractInvocationType.Send, + methodName: "grantBridgeRole", + params: [wrapperAddress], + signingCredential: { + ethAccount: this.firstHighNetWorthAccount, + secret: this.besuKeyPair.privateKey, + type: Web3SigningCredentialTypeBesu.PrivateKeyHex, + }, + gas: 1000000, + }); - expect(giveRoleRes).toBeTruthy(); - expect(giveRoleRes.success).toBeTruthy(); - this.log.info("BRIDGE_ROLE given to SATPWrapperContract successfully"); + expect(giveRoleRes).toBeTruthy(); + expect(giveRoleRes.success).toBeTruthy(); + this.log.info( + "BRIDGE_ROLE given over Fungible Token to SATPWrapperContract successfully", + ); + } + if (this.tokenContracts.has(SupportedContractTypes.NONFUNGIBLE)) { + const giveRoleRes = await this.connector.invokeContract({ + contractName: + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? "", + keychainId: this.keychainPluginNonFungible.getKeychainId(), + invocationType: BesuContractInvocationType.Send, + methodName: "grantBridgeRole", + params: [wrapperAddress], + signingCredential: { + ethAccount: this.firstHighNetWorthAccount, + secret: this.besuKeyPair.privateKey, + type: Web3SigningCredentialTypeBesu.PrivateKeyHex, + }, + gas: 1000000, + }); + + expect(giveRoleRes).toBeTruthy(); + expect(giveRoleRes.success).toBeTruthy(); + this.log.info( + "BRIDGE_ROLE given over Non Fungible Token to SATPWrapperContract successfully", + ); + } } - public async approveAmount( + public async approveAssets( wrapperAddress: string, - amount: string, + assetAttribute: string, + inUseTokenType: TokenType, ): Promise { + let inUseContractKeyChainId: string; + let inUseContractName: string; + let inUseTokenAttribute: string; + switch (inUseTokenType) { + case TokenType.NONSTANDARD_FUNGIBLE: + inUseContractKeyChainId = this.keychainPluginFungible.getKeychainId(); + inUseContractName = + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? ""; + inUseTokenAttribute = "amount"; + break; + case TokenType.NONSTANDARD_NONFUNGIBLE: + inUseContractKeyChainId = + this.keychainPluginNonFungible.getKeychainId(); + inUseContractName = + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? ""; + inUseTokenAttribute = "tokenId"; + break; + default: + throw new Error( + `Unsupported token type for approval: ${inUseTokenType}`, + ); + } const responseApprove = await this.connector.invokeContract({ - contractName: this.erc20TokenContract, - keychainId: this.keychainPlugin1.getKeychainId(), + contractName: inUseContractName, + keychainId: inUseContractKeyChainId, invocationType: BesuContractInvocationType.Send, methodName: "approve", - params: [wrapperAddress, amount], + params: [wrapperAddress, Number(assetAttribute)], signingCredential: { ethAccount: this.firstHighNetWorthAccount, secret: this.besuKeyPair.privateKey, @@ -400,19 +589,37 @@ export class BesuTestEnvironment { }); expect(responseApprove).toBeTruthy(); expect(responseApprove.success).toBeTruthy(); - this.log.info("Approved 100 tokens to SATPWrapperContract"); + this.log.info( + `Approved ${inUseTokenAttribute} ${assetAttribute} to SATPWrapperContract`, + ); } - public getTestContractName(): string { - return this.erc20TokenContract; + public getTestFungibleContractName(): string { + return this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? ""; + } + public getTestNonFungibleContractName(): string { + return this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? ""; + } + public getTestOracleContractName(): string { + return this.tokenContracts.get(SupportedContractTypes.ORACLE) ?? ""; } - public getTestContractAddress(): string { - return this.assetContractAddress ?? ""; + public getTestFungibleContractAddress(): string { + return ( + this.assetContractAddresses.get(SupportedContractTypes.FUNGIBLE) ?? "" + ); + } + public getTestNonFungibleContractAddress(): string { + return ( + this.assetContractAddresses.get(SupportedContractTypes.NONFUNGIBLE) ?? "" + ); } - public getTestContractAbi(): any { - return SATPTokenContract.abi; + public getTestFungibleContractAbi(): any { + return this.tokenContractCodes.get(SupportedContractTypes.FUNGIBLE).abi; + } + public getTestNonFungibleContractAbi(): any { + return this.tokenContractCodes.get(SupportedContractTypes.NONFUNGIBLE).abi; } public getTestOwnerAccount(): string { @@ -462,16 +669,39 @@ export class BesuTestEnvironment { expect(responseBalanceBridge.success).toBeTruthy(); expect(responseBalanceBridge.callOutput).toBe(amount); } + // Gets the default asset configuration for testing public get defaultAsset(): Asset { return { id: BesuTestEnvironment.BESU_ASSET_ID, - referenceId: BesuTestEnvironment.BESU_REFERENCE_ID, + referenceId: + BesuTestEnvironment.BESU_REFERENCE_ID[TokenType.NONSTANDARD_FUNGIBLE], + owner: this.firstHighNetWorthAccount, + contractName: + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? "", + contractAddress: + this.assetContractAddresses.get(SupportedContractTypes.FUNGIBLE) ?? "", + networkId: this.network, + tokenType: AssetTokenTypeEnum.Fungible, + ercTokenStandard: AssetErcTokenStandardEnum.Erc20, + }; + } + public get nonFungibleDefaultAsset(): Asset { + return { + id: BesuTestEnvironment.BESU_ASSET_ID2, + referenceId: + BesuTestEnvironment.BESU_REFERENCE_ID[ + TokenType.NONSTANDARD_NONFUNGIBLE + ], owner: this.firstHighNetWorthAccount, - contractName: this.erc20TokenContract, - contractAddress: this.assetContractAddress, + contractName: + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? "", + contractAddress: + this.assetContractAddresses.get(SupportedContractTypes.NONFUNGIBLE) ?? + "", networkId: this.network, - tokenType: AssetTokenTypeEnum.NonstandardFungible, + tokenType: AssetTokenTypeEnum.Nonfungible, + ercTokenStandard: AssetErcTokenStandardEnum.Erc721, }; } diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/ethereum-test-environment.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/ethereum-test-environment.ts index 50e2d739c9..5557067ae7 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/ethereum-test-environment.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/ethereum-test-environment.ts @@ -1,9 +1,10 @@ import { - LogLevelDesc, Logger, LoggerProvider, + LogLevelDesc, } from "@hyperledger/cactus-common"; import SATPTokenContract from "../../solidity/generated/SATPTokenContract.sol/SATPTokenContract.json"; +import SATPNFTokenContract from "../../solidity/generated/SATPNFTokenContract.sol/SATPNFTokenContract.json"; import SATPWrapperContract from "../../../main/solidity/generated/SATPWrapperContract.sol/SATPWrapperContract.json"; import { PluginKeychainMemory } from "@hyperledger/cactus-plugin-keychain-memory"; import { PluginRegistry } from "@hyperledger/cactus-core"; @@ -24,24 +25,45 @@ import { WHALE_ACCOUNT_ADDRESS, } from "@hyperledger/cactus-test-geth-ledger"; import { ClaimFormat } from "../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; -import { Asset, AssetTokenTypeEnum, NetworkId } from "../../../main/typescript"; +import { + Asset, + AssetErcTokenStandardEnum, + AssetTokenTypeEnum, + NetworkId, +} from "../../../main/typescript"; import { LedgerType } from "@hyperledger/cactus-core-api"; import { IEthereumLeafNeworkOptions, IEthereumLeafOptions, } from "../../../main/typescript/cross-chain-mechanisms/bridge/leafs/ethereum-leaf"; -import ExampleOntology from "../../ontologies/ontology-satp-erc20-interact-ethereum.json"; +import { OntologyManager } from "../../../main/typescript/cross-chain-mechanisms/bridge/ontology/ontology-manager"; +import ExampleOntologyERC20 from "../../ontologies/ontology-satp-erc20-interact-ethereum.json"; +import ExampleOntologyERC721 from "../../ontologies/ontology-satp-erc721-interact-ethereum.json"; import { INetworkOptions } from "../../../main/typescript/cross-chain-mechanisms/bridge/bridge-types"; - +import { TokenType } from "../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; export interface IEthereumTestEnvironment { - contractName: string; logLevel: LogLevelDesc; network?: string; } +export enum SupportedContractTypes { + FUNGIBLE = "FUNGIBLE", + NONFUNGIBLE = "NONFUNGIBLE", + WRAPPER = "WRAPPER", + ORACLE = "ORACLE", +} +export interface tokenContractName { + assetType: SupportedContractTypes; + contractName: string; +} // Test environment for Ethereum ledger operations export class EthereumTestEnvironment { public static readonly ETH_ASSET_ID: string = "EthereumExampleAsset"; - public static readonly ETHREFERENCE_ID: string = ExampleOntology.id; + public static readonly ETH_NFT_ASSET_ID: string = "EthereumExampleNFT"; + public static readonly ETHREFERENCE_ID: Record = { + [TokenType.NONSTANDARD_FUNGIBLE]: ExampleOntologyERC20.id, + [TokenType.NONSTANDARD_NONFUNGIBLE]: ExampleOntologyERC721.id, + [TokenType.UNSPECIFIED]: "", + }; public static readonly ETH_NETWORK_ID: string = "EthereumLedgerTestNetwork"; public readonly network: NetworkId = { id: EthereumTestEnvironment.ETH_NETWORK_ID, @@ -51,15 +73,26 @@ export class EthereumTestEnvironment { public connector!: PluginLedgerConnectorEthereum; public connectorOptions!: IPluginLedgerConnectorEthereumOptions; public bungeeOptions!: IPluginBungeeHermesOptions; - public keychainPlugin1!: PluginKeychainMemory; - public keychainPlugin2!: PluginKeychainMemory; + public keychainPluginFungible!: PluginKeychainMemory; + public keychainPluginNonFungible!: PluginKeychainMemory; + public keychainPluginWrapper!: PluginKeychainMemory; + public keychainEntryKey!: string; public keychainEntryValue!: string; public bridgeEthAccount!: string; - public erc20TokenContract!: string; + + public tokenContracts: Map = new Map< + SupportedContractTypes, + string + >(); public contractNameWrapper!: string; - public assetContractAddress!: string; + + public assetContractAddresses: Map = new Map< + SupportedContractTypes, + string + >(); public wrapperContractAddress!: string; + public ethereumConfig!: IEthereumLeafNeworkOptions; public gasConfig: GasTransactionConfig | undefined = { gas: "6721975", @@ -71,17 +104,12 @@ export class EthereumTestEnvironment { private readonly log: Logger; // eslint-disable-next-line prettier/prettier - private constructor( - erc20TokenContract: string, - logLevel: LogLevelDesc, - network?: string, - ) { + private constructor(logLevel: LogLevelDesc, network?: string) { if (network) { this.dockerNetwork = network; } this.contractNameWrapper = "SATPWrapperContract"; - this.erc20TokenContract = erc20TokenContract; const level = logLevel || "INFO"; const label = "EthereumTestEnvironment"; @@ -89,7 +117,10 @@ export class EthereumTestEnvironment { } // Initializes the Ethereum ledger, accounts, and connector for testing - public async init(logLevel: LogLevelDesc): Promise { + public async init( + logLevel: LogLevelDesc, + tokenType: tokenContractName[], + ): Promise { this.ledger = new GethTestLedger({ containerImageName: "ghcr.io/hyperledger/cacti-geth-all-in-one", containerImageVersion: "2023-07-27-2a8c48ed6", @@ -98,47 +129,79 @@ export class EthereumTestEnvironment { await this.ledger.start(false, []); - const SATPTokenContract1 = { - contractName: "SATPTokenContract", - abi: SATPTokenContract.abi, - bytecode: SATPTokenContract.bytecode.object, - }; - const SATPWrapperContract1 = { - contractName: "SATPWrapperContract", - abi: SATPWrapperContract.abi, - bytecode: SATPWrapperContract.bytecode.object, - }; + tokenType.forEach((element) => { + this.tokenContracts.set(element.assetType, element.contractName); + }); - const rpcApiWsHost = await this.ledger.getRpcApiWebSocketHost(); - this.bridgeEthAccount = await this.ledger.newEthPersonalAccount(); - this.keychainEntryValue = "test"; - this.keychainEntryKey = this.bridgeEthAccount; + this.keychainPluginFungible = new PluginKeychainMemory({ + instanceId: uuidv4(), + keychainId: uuidv4(), + backend: new Map([[this.keychainEntryKey, this.keychainEntryValue]]), + logLevel, + }); - this.keychainPlugin1 = new PluginKeychainMemory({ + this.keychainPluginNonFungible = new PluginKeychainMemory({ instanceId: uuidv4(), keychainId: uuidv4(), backend: new Map([[this.keychainEntryKey, this.keychainEntryValue]]), logLevel, }); - this.keychainPlugin2 = new PluginKeychainMemory({ + this.keychainPluginWrapper = new PluginKeychainMemory({ instanceId: uuidv4(), keychainId: uuidv4(), backend: new Map([[this.keychainEntryKey, this.keychainEntryValue]]), logLevel, }); - this.keychainPlugin1.set( - this.erc20TokenContract, - JSON.stringify(SATPTokenContract1), - ); - this.keychainPlugin2.set( + if (this.tokenContracts.has(SupportedContractTypes.FUNGIBLE)) { + const SATPFungibleTokenContract = { + contractName: this.tokenContracts.get(SupportedContractTypes.FUNGIBLE), + abi: SATPTokenContract.abi, + bytecode: SATPTokenContract.bytecode.object, + }; + this.keychainPluginFungible.set( + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? "", + JSON.stringify(SATPFungibleTokenContract), + ); + } + + if (this.tokenContracts.has(SupportedContractTypes.NONFUNGIBLE)) { + const SATPNonFungibleTokenContract = { + contractName: this.tokenContracts.get( + SupportedContractTypes.NONFUNGIBLE, + ), + abi: SATPNFTokenContract.abi, + bytecode: SATPNFTokenContract.bytecode.object, + }; + this.keychainPluginNonFungible.set( + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? "", + JSON.stringify(SATPNonFungibleTokenContract), + ); + } + + const SATPWrapperContract1 = { + contractName: "SATPWrapperContract", + abi: SATPWrapperContract.abi, + bytecode: SATPWrapperContract.bytecode.object, + }; + + const rpcApiWsHost = await this.ledger.getRpcApiWebSocketHost(); + this.bridgeEthAccount = await this.ledger.newEthPersonalAccount(); + this.keychainEntryValue = "test"; + this.keychainEntryKey = this.bridgeEthAccount; + + this.keychainPluginWrapper.set( this.contractNameWrapper, JSON.stringify(SATPWrapperContract1), ); const pluginRegistry = new PluginRegistry({ - plugins: [this.keychainPlugin1, this.keychainPlugin2], + plugins: [ + this.keychainPluginFungible, + this.keychainPluginNonFungible, + this.keychainPluginWrapper, + ], }); this.connectorOptions = { @@ -151,17 +214,33 @@ export class EthereumTestEnvironment { this.connector = new PluginLedgerConnectorEthereum(this.connectorOptions); } - public getTestContractAddress(): string { - return this.assetContractAddress ?? ""; + public getTestFungibleContractAddress(): string { + return ( + this.assetContractAddresses.get(SupportedContractTypes.FUNGIBLE) ?? "" + ); } - - public getTestContractName(): string { - return this.erc20TokenContract; + public getTestNonFungibleContractAddress(): string { + return ( + this.assetContractAddresses.get(SupportedContractTypes.NONFUNGIBLE) ?? "" + ); } - public getTestContractAbi(): any { + public getTestFungibleContractAbi(): any { return SATPTokenContract.abi; } + public getTestNonFungibleContractAbi(): any { + return SATPNFTokenContract.abi; + } + + public getTestFungibleContractName(): string { + return this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? ""; + } + public getTestNonFungibleContractName(): string { + return this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? ""; + } + public getTestOracleContractName(): string { + return this.tokenContracts.get(SupportedContractTypes.ORACLE) ?? ""; + } public getTestOwnerAccount(): string { return WHALE_ACCOUNT_ADDRESS; @@ -198,18 +277,19 @@ export class EthereumTestEnvironment { // Creates and initializes a new EthereumTestEnvironment instance public static async setupTestEnvironment( config: IEthereumTestEnvironment, + tokenContracts: tokenContractName[], ): Promise { const instance = new EthereumTestEnvironment( - config.contractName, config.logLevel, config.network, ); - await instance.init(config.logLevel); + await instance.init(config.logLevel, tokenContracts); return instance; } // this creates the same config as the bridge manager does public createEthereumLeafConfig( + ontologyManager: OntologyManager, logLevel?: LogLevelDesc, ): IEthereumLeafOptions { return { @@ -262,12 +342,23 @@ export class EthereumTestEnvironment { } as INetworkOptions; } - // Deploys smart contracts and sets up configurations for testing - public async deployAndSetupContracts(claimFormat: ClaimFormat) { + public async deployAndSetupContract(assetType: SupportedContractTypes) { + let contractKeyChain: string; + switch (assetType) { + case SupportedContractTypes.FUNGIBLE: + contractKeyChain = this.keychainPluginFungible.getKeychainId(); + break; + case SupportedContractTypes.NONFUNGIBLE: + contractKeyChain = this.keychainPluginNonFungible.getKeychainId(); + break; + default: + throw new Error(); + } + const deployOutSATPTokenContract = await this.connector.deployContract({ contract: { - keychainId: this.keychainPlugin1.getKeychainId(), - contractName: this.erc20TokenContract, + keychainId: contractKeyChain, + contractName: this.tokenContracts.get(assetType) ?? "", }, constructorArgs: [WHALE_ACCOUNT_ADDRESS], web3SigningCredential: { @@ -282,10 +373,23 @@ export class EthereumTestEnvironment { deployOutSATPTokenContract.transactionReceipt.contractAddress, ).toBeTruthy(); - this.assetContractAddress = - deployOutSATPTokenContract.transactionReceipt.contractAddress ?? ""; + this.assetContractAddresses.set( + assetType, + deployOutSATPTokenContract.transactionReceipt.contractAddress ?? "", + ); + if (this.assetContractAddresses.get(assetType) != "") { + this.log.info(`SATPTokenContract${assetType} Deployed successfully`); + } + } - this.log.info("SATPTokenContract Deployed successfully"); + // Deploys smart contracts and sets up configurations for testing + public async deployAndSetupContracts(claimFormat: ClaimFormat) { + if (this.tokenContracts.has(SupportedContractTypes.FUNGIBLE)) { + await this.deployAndSetupContract(SupportedContractTypes.FUNGIBLE); + } + if (this.tokenContracts.has(SupportedContractTypes.NONFUNGIBLE)) { + await this.deployAndSetupContract(SupportedContractTypes.NONFUNGIBLE); + } this.ethereumConfig = { networkIdentification: this.network, @@ -309,6 +413,17 @@ export class EthereumTestEnvironment { contract_name: string, contract: { abi: any; bytecode: { object: string } }, ): Promise { + if (this.tokenContracts.has(SupportedContractTypes.ORACLE)) { + const SATPFungibleTokenContract = { + contractName: this.tokenContracts.get(SupportedContractTypes.ORACLE), + abi: SATPTokenContract.abi, + bytecode: SATPTokenContract.bytecode.object, + }; + this.keychainPluginFungible.set( + this.tokenContracts.get(SupportedContractTypes.ORACLE) ?? "", + JSON.stringify(SATPFungibleTokenContract), + ); + } const blOracleContract = await this.connector.deployContract({ contract: { contractJSON: { @@ -316,7 +431,7 @@ export class EthereumTestEnvironment { abi: contract.abi, bytecode: contract.bytecode.object, }, - keychainId: this.keychainPlugin1.getKeychainId(), + keychainId: this.keychainPluginFungible.getKeychainId(), }, constructorArgs: [], web3SigningCredential: this.getTestOracleSigningCredential(), @@ -326,8 +441,10 @@ export class EthereumTestEnvironment { expect(blOracleContract.transactionReceipt).toBeTruthy(); expect(blOracleContract.transactionReceipt.contractAddress).toBeTruthy(); - this.assetContractAddress = - blOracleContract.transactionReceipt.contractAddress ?? ""; + this.assetContractAddresses.set( + SupportedContractTypes.FUNGIBLE, + blOracleContract.transactionReceipt.contractAddress ?? "", + ); this.log.info("Oracle Business Logic Contract Deployed successfully"); @@ -342,15 +459,38 @@ export class EthereumTestEnvironment { return blOracleContract.transactionReceipt.contractAddress!; } - public async mintTokens(amount: string): Promise { + public async mintTokens( + assetAttribute: string, + newTokenType: TokenType, + ): Promise { + let inUseContractName: string; + let inUseTokenAttribute: string; + let inUseContractKeyChainId: string; + switch (newTokenType) { + case TokenType.NONSTANDARD_FUNGIBLE: + inUseContractName = + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? ""; + inUseTokenAttribute = "amount"; + inUseContractKeyChainId = this.keychainPluginFungible.getKeychainId(); + break; + case TokenType.NONSTANDARD_NONFUNGIBLE: + inUseContractName = + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? ""; + inUseTokenAttribute = "tokenId"; + inUseContractKeyChainId = + this.keychainPluginNonFungible.getKeychainId(); + break; + default: + throw new Error(`Unsupported token type for minting: ${newTokenType}`); + } const responseMint = await this.connector.invokeContract({ contract: { - contractName: this.erc20TokenContract, - keychainId: this.keychainPlugin1.getKeychainId(), + contractName: inUseContractName, + keychainId: inUseContractKeyChainId, }, invocationType: EthContractInvocationType.Send, methodName: "mint", - params: [WHALE_ACCOUNT_ADDRESS, amount], + params: [WHALE_ACCOUNT_ADDRESS, assetAttribute], web3SigningCredential: { ethAccount: WHALE_ACCOUNT_ADDRESS, secret: "", @@ -359,42 +499,93 @@ export class EthereumTestEnvironment { }); expect(responseMint).toBeTruthy(); expect(responseMint.success).toBeTruthy(); - this.log.info("Minted 100 tokens to firstHighNetWorthAccount"); + this.log.info( + `Minted ${inUseTokenAttribute} ${assetAttribute} to firstHighNetWorthAccount`, + ); } public async giveRoleToBridge(wrapperAddress: string): Promise { - const giveRoleRes = await this.connector.invokeContract({ - contract: { - contractName: this.erc20TokenContract, - keychainId: this.keychainPlugin1.getKeychainId(), - }, - invocationType: EthContractInvocationType.Send, - methodName: "grantBridgeRole", - params: [wrapperAddress], - web3SigningCredential: { - ethAccount: WHALE_ACCOUNT_ADDRESS, - secret: "", - type: Web3SigningCredentialType.GethKeychainPassword, - }, - }); - - expect(giveRoleRes).toBeTruthy(); - expect(giveRoleRes.success).toBeTruthy(); - this.log.info("BRIDGE_ROLE given to SATPWrapperContract successfully"); + if (this.tokenContracts.has(SupportedContractTypes.FUNGIBLE)) { + const giveRoleRes = await this.connector.invokeContract({ + contract: { + contractName: + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? "", + keychainId: this.keychainPluginFungible.getKeychainId(), + }, + invocationType: EthContractInvocationType.Send, + methodName: "grantBridgeRole", + params: [wrapperAddress], + web3SigningCredential: { + ethAccount: WHALE_ACCOUNT_ADDRESS, + secret: "", + type: Web3SigningCredentialType.GethKeychainPassword, + }, + }); + expect(giveRoleRes).toBeTruthy(); + expect(giveRoleRes.success).toBeTruthy(); + this.log.info( + "BRIDGE_ROLE given over Fungible Token to SATPWrapperContract successfully", + ); + } + if (this.tokenContracts.has(SupportedContractTypes.NONFUNGIBLE)) { + const giveRoleRes2 = await this.connector.invokeContract({ + contract: { + contractName: + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? "", + keychainId: this.keychainPluginNonFungible.getKeychainId(), + }, + invocationType: EthContractInvocationType.Send, + methodName: "grantBridgeRole", + params: [wrapperAddress], + web3SigningCredential: { + ethAccount: WHALE_ACCOUNT_ADDRESS, + secret: "", + type: Web3SigningCredentialType.GethKeychainPassword, + }, + }); + expect(giveRoleRes2).toBeTruthy(); + expect(giveRoleRes2.success).toBeTruthy(); + this.log.info( + "BRIDGE_ROLE given over Non Fungible Token to SATPWrapperContract successfully", + ); + } } - public async approveAmount( + public async approveAssets( wrapperAddress: string, - amount: string, + assetAttribute: string, + inUseTokenType: TokenType, ): Promise { + let inUseContractKeyChainId: string; + let inUseContractName: string; + let inUseTokenAttribute: string; + switch (inUseTokenType) { + case TokenType.NONSTANDARD_FUNGIBLE: + inUseContractKeyChainId = this.keychainPluginFungible.getKeychainId(); + inUseContractName = + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? ""; + inUseTokenAttribute = "amount"; + break; + case TokenType.NONSTANDARD_NONFUNGIBLE: + inUseContractKeyChainId = + this.keychainPluginNonFungible.getKeychainId(); + inUseContractName = + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? ""; + inUseTokenAttribute = "tokenId"; + break; + default: + throw new Error( + `Unsupported token type for approval: ${inUseTokenType}`, + ); + } const responseApprove = await this.connector.invokeContract({ contract: { - contractName: this.erc20TokenContract, - keychainId: this.keychainPlugin1.getKeychainId(), + contractName: inUseContractName, + keychainId: inUseContractKeyChainId, }, invocationType: EthContractInvocationType.Send, methodName: "approve", - params: [wrapperAddress, amount], + params: [wrapperAddress, Number(assetAttribute)], web3SigningCredential: { ethAccount: WHALE_ACCOUNT_ADDRESS, secret: "", @@ -403,7 +594,9 @@ export class EthereumTestEnvironment { }); expect(responseApprove).toBeTruthy(); expect(responseApprove.success).toBeTruthy(); - this.log.info("Approved 100 tokens to SATPWrapperContract"); + this.log.info( + `Approved ${inUseTokenAttribute} ${assetAttribute} to SATPWrapperContract`, + ); } public async checkBalance( @@ -433,16 +626,39 @@ export class EthereumTestEnvironment { expect(responseBalanceBridge.success).toBeTruthy(); expect(responseBalanceBridge.callOutput.toString()).toBe(amount); } + // Gets the default asset configuration for testing public get defaultAsset(): Asset { return { id: EthereumTestEnvironment.ETH_ASSET_ID, - referenceId: EthereumTestEnvironment.ETHREFERENCE_ID, + referenceId: + EthereumTestEnvironment.ETHREFERENCE_ID[TokenType.NONSTANDARD_FUNGIBLE], owner: WHALE_ACCOUNT_ADDRESS, - contractName: this.erc20TokenContract, - contractAddress: this.assetContractAddress, + contractName: + this.tokenContracts.get(SupportedContractTypes.FUNGIBLE) ?? "", + contractAddress: + this.assetContractAddresses.get(SupportedContractTypes.FUNGIBLE) ?? "", networkId: this.network, - tokenType: AssetTokenTypeEnum.NonstandardFungible, + tokenType: AssetTokenTypeEnum.Fungible, + ercTokenStandard: AssetErcTokenStandardEnum.Erc20, + }; + } + public get nonFungibleDefaultAsset(): Asset { + return { + id: EthereumTestEnvironment.ETH_NFT_ASSET_ID, + referenceId: + EthereumTestEnvironment.ETHREFERENCE_ID[ + TokenType.NONSTANDARD_NONFUNGIBLE + ], + owner: WHALE_ACCOUNT_ADDRESS, + contractName: + this.tokenContracts.get(SupportedContractTypes.NONFUNGIBLE) ?? "", + contractAddress: + this.assetContractAddresses.get(SupportedContractTypes.NONFUNGIBLE) ?? + "", + networkId: this.network, + tokenType: AssetTokenTypeEnum.Nonfungible, + ercTokenStandard: AssetErcTokenStandardEnum.Erc721, }; } @@ -451,6 +667,14 @@ export class EthereumTestEnvironment { return WHALE_ACCOUNT_ADDRESS; } + get bridgeSigningCredentials(): Web3SigningCredential { + return { + ethAccount: WHALE_ACCOUNT_ADDRESS, + secret: "", + type: Web3SigningCredentialType.GethKeychainPassword, + }; + } + // Stops and destroys the test ledger public async tearDown(): Promise { await this.ledger.stop(); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/fabric-test-environment.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/fabric-test-environment.ts index 8d0e119517..c278dd053f 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/fabric-test-environment.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/environments/fabric-test-environment.ts @@ -6,6 +6,7 @@ import { import { AssetTokenTypeEnum, Configuration, + AssetErcTokenStandardEnum, } from "../../../main/typescript/generated/gateway-client/typescript-axios"; import { FABRIC_25_LTS_AIO_FABRIC_VERSION, @@ -1017,7 +1018,22 @@ export class FabricTestEnvironment { mspId: this.userIdentity.mspId, channelName: this.fabricChannelName, networkId: this.network, - tokenType: AssetTokenTypeEnum.NonstandardFungible, + tokenType: AssetTokenTypeEnum.Fungible, + ercTokenStandard: AssetErcTokenStandardEnum.Erc20, + }; + } + + public get nonFungibleDefaultAsset(): Asset { + return { + id: FabricTestEnvironment.FABRIC_ASSET_ID, + referenceId: FabricTestEnvironment.FABRIC_REFERENCE_ID, + owner: this.clientId, + contractName: this.satpContractName, + mspId: this.userIdentity.mspId, + channelName: this.fabricChannelName, + networkId: this.network, + tokenType: AssetTokenTypeEnum.Nonfungible, + ercTokenStandard: AssetErcTokenStandardEnum.Erc721, }; } diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/besu-leaf.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/besu-leaf.test.ts index fbad5f6d30..4d7f19f2db 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/besu-leaf.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/besu-leaf.test.ts @@ -4,18 +4,33 @@ import { Containers, } from "@hyperledger/cactus-test-tooling"; import path from "path"; -import { TokenType } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { + TokenType, + ERCTokenStandard, +} from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; import { ClaimFormat } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; import { LedgerType } from "@hyperledger/cactus-core-api"; import { BesuTestEnvironment } from "../../test-utils"; -import { EvmFungibleAsset } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/evm-asset"; +import { + EvmFungibleAsset, + EvmNonFungibleAsset, +} from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/evm-asset"; import { BesuLeaf } from "../../../../main/typescript/cross-chain-mechanisms/bridge/leafs/besu-leaf"; import { OntologyManager } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/ontology-manager"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { + Amount, + UniqueTokenID, +} from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset"; +import { SupportedContractTypes } from "../../environments/besu-test-environment"; let ontologyManager: OntologyManager; let asset: EvmFungibleAsset; +let nonFungibleAsset: EvmNonFungibleAsset; + +const uniqueTokenId1: string = "1001"; +const uniqueTokenId2: string = "1002"; const monitorService = MonitorService.createOrGetMonitorService({ enabled: false, @@ -42,8 +57,6 @@ beforeAll(async () => { fail("Pruning didn't throw OK"); }); { - const erc20TokenContract = "SATPContract"; - const ontologiesPath = path.join(__dirname, "../../../ontologies"); ontologyManager = new OntologyManager( @@ -54,15 +67,27 @@ beforeAll(async () => { monitorService, ); - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedContractTypes.FUNGIBLE, + contractName: "SATPContract", + }, + { + assetType: SupportedContractTypes.NONFUNGIBLE, + contractName: "SATPContract2", + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); - await besuEnv.mintTokens("100"); + await besuEnv.mintTokens("100", TokenType.NONSTANDARD_FUNGIBLE); + await besuEnv.mintTokens(uniqueTokenId1, TokenType.NONSTANDARD_NONFUNGIBLE); } }, TIMEOUT); @@ -81,11 +106,11 @@ afterAll(async () => { }); }, TIMEOUT); -describe("Besu Leaf Test", () => { +describe("Besu Leaf Test with Fungible Tokens", () => { jest.setTimeout(20000); it("Should Initialize the Leaf", async () => { besuLeaf = new BesuLeaf( - besuEnv.createBesuLeafConfig("DEBUG"), + besuEnv.createBesuLeafConfig(ontologyManager, "DEBUG"), ontologyManager, monitorService, ); @@ -97,7 +122,7 @@ describe("Besu Leaf Test", () => { }); it("Should deploy Wrapper Smart Contract", async () => { await besuLeaf.deployContracts(); - expect(besuLeaf.getDeployFungibleWrapperContractReceipt()).toBeDefined(); + expect(besuLeaf.getDeployWrapperContractReceipt()).toBeDefined(); }); it("Should return the wrapper contract address", async () => { @@ -108,7 +133,11 @@ describe("Besu Leaf Test", () => { await besuEnv.giveRoleToBridge(wrapperContractAddress); - await besuEnv.approveAmount(wrapperContractAddress, "100"); + await besuEnv.approveAssets( + wrapperContractAddress, + "100", + TokenType.NONSTANDARD_FUNGIBLE, + ); }); it("Should Wrap a token", async () => { @@ -119,11 +148,12 @@ describe("Besu Leaf Test", () => { owner: besuEnv.defaultAsset.owner, contractName: besuEnv.defaultAsset.contractName, contractAddress: besuEnv.defaultAsset.contractAddress!, - amount: "100", + amount: Number(100) as Amount, network: { id: BesuTestEnvironment.BESU_NETWORK_ID, ledgerType: LedgerType.Besu2X, }, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC721, } as EvmFungibleAsset; const response = await besuLeaf.wrapAsset(asset); @@ -141,13 +171,15 @@ describe("Besu Leaf Test", () => { expect(response3.id).toBe(asset.id); expect(response3.type).toBe(asset.type); expect(response3.owner).toBe(asset.owner); - expect(response3.contractAddress).toBe(besuEnv.assetContractAddress); + expect(response3.contractAddress).toBe( + besuEnv.getTestFungibleContractAddress(), + ); expect(response3.contractName).toBe(besuEnv.defaultAsset.contractName); - expect(response3.amount).toBe("0"); + expect(response3.amount).toBe(0 as Amount); }); it("Should Lock a token", async () => { - const response = await besuLeaf.lockAsset(asset.id, 100); + const response = await besuLeaf.lockAsset(asset.id, 100 as Amount); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); @@ -159,23 +191,23 @@ describe("Besu Leaf Test", () => { expect(response2.owner).toBe(asset.owner); expect(response2.contractAddress).toBe(asset.contractAddress); expect(response2.contractName).toBe(besuEnv.defaultAsset.contractName); - expect(response2.amount).toBe("100"); + expect(response2.amount).toBe(100 as Amount); log.info("Locked 100 tokens successfully"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), - besuLeaf.getWrapperContract("FUNGIBLE"), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "100", besuEnv.getTestOwnerSigningCredential(), ); log.info("Amount was transfer correctly to the Wrapper account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -184,7 +216,7 @@ describe("Besu Leaf Test", () => { }); it("Should Unlock a token", async () => { - const response = await besuLeaf.unlockAsset(asset.id, 100); + const response = await besuLeaf.unlockAsset(asset.id, 100 as Amount); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); @@ -194,25 +226,27 @@ describe("Besu Leaf Test", () => { expect(response2.id).toBe(asset.id); expect(response2.type).toBe(asset.type); expect(response2.owner).toBe(asset.owner); - expect(response2.contractAddress).toBe(besuEnv.getTestContractAddress()); + expect(response2.contractAddress).toBe( + besuEnv.getTestFungibleContractAddress(), + ); expect(response2.contractName).toBe(besuEnv.defaultAsset.contractName); - expect(response2.amount).toBe("0"); + expect(response2.amount).toBe(0 as Amount); log.info("Unlocked 100 tokens successfully"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), - besuLeaf.getWrapperContract("FUNGIBLE"), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "0", besuEnv.getTestOwnerSigningCredential(), ); log.info("Amount was transfer correctly from the Wrapper account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -221,18 +255,23 @@ describe("Besu Leaf Test", () => { }); it("Should Burn a token", async () => { - const wrapperContractAddress = - await besuLeaf.getWrapperContract("FUNGIBLE"); + const wrapperContractAddress = await besuLeaf.getWrapperContract( + TokenType.NONSTANDARD_FUNGIBLE, + ); - await besuEnv.approveAmount(wrapperContractAddress, "100"); + await besuEnv.approveAssets( + wrapperContractAddress, + "100", + TokenType.NONSTANDARD_FUNGIBLE, + ); - const response = await besuLeaf.lockAsset(asset.id, 100); + const response = await besuLeaf.lockAsset(asset.id, 100 as Amount); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); log.info("Locked 100 tokens successfully"); - const response2 = await besuLeaf.burnAsset(asset.id, 100); + const response2 = await besuLeaf.burnAsset(asset.id, 100 as Amount); expect(response2).toBeDefined(); expect(response2.transactionId).toBeDefined(); expect(response2.transactionReceipt).toBeDefined(); @@ -243,23 +282,25 @@ describe("Besu Leaf Test", () => { expect(response3.id).toBe(asset.id); expect(response3.type).toBe(asset.type); expect(response3.owner).toBe(asset.owner); - expect(response3.contractAddress).toBe(besuEnv.getTestContractAddress()); + expect(response3.contractAddress).toBe( + besuEnv.getTestFungibleContractAddress(), + ); expect(response3.contractName).toBe(besuEnv.defaultAsset.contractName); - expect(response3.amount).toBe("0"); + expect(response3.amount).toBe(0 as Amount); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), - besuLeaf.getWrapperContract("FUNGIBLE"), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "0", besuEnv.getTestOwnerSigningCredential(), ); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -269,7 +310,7 @@ describe("Besu Leaf Test", () => { }); it("Should Mint a token", async () => { - const response = await besuLeaf.mintAsset(asset.id, 100); + const response = await besuLeaf.mintAsset(asset.id, 100 as Amount); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); @@ -280,15 +321,17 @@ describe("Besu Leaf Test", () => { expect(response2.id).toBe(asset.id); expect(response2.type).toBe(asset.type); expect(response2.owner).toBe(asset.owner); - expect(response2.contractAddress).toBe(besuEnv.getTestContractAddress()); - expect(response2.amount).toBe("100"); + expect(response2.contractAddress).toBe( + besuEnv.getTestFungibleContractAddress(), + ); + expect(response2.amount).toBe(100 as Amount); log.info("Minted 100 tokens successfully"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), - besuLeaf.getWrapperContract("FUNGIBLE"), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "100", besuEnv.getTestOwnerSigningCredential(), ); @@ -296,7 +339,11 @@ describe("Besu Leaf Test", () => { }); it("Should Assign a token", async () => { - const response = await besuLeaf.assignAsset(asset.id, asset.owner, 100); + const response = await besuLeaf.assignAsset( + asset.id, + asset.owner, + 100 as Amount, + ); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); @@ -307,24 +354,26 @@ describe("Besu Leaf Test", () => { expect(response2.id).toBe(asset.id); expect(response2.type).toBe(asset.type); expect(response2.owner).toBe(asset.owner); - expect(response2.contractAddress).toBe(besuEnv.getTestContractAddress()); - expect(response2.amount).toBe("0"); + expect(response2.contractAddress).toBe( + besuEnv.getTestFungibleContractAddress(), + ); + expect(response2.amount).toBe(0 as Amount); log.info("Assigned 100 tokens successfully"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), - besuLeaf.getWrapperContract("FUNGIBLE"), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "0", besuEnv.getTestOwnerSigningCredential(), ); log.info("Amount was removed correctly form the Wrapper account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -344,3 +393,353 @@ describe("Besu Leaf Test", () => { log.info("Unwrapped 100 tokens successfully"); }); }); + +describe("Besu Leaf Test with Non Fungible Tokens", () => { + jest.setTimeout(20000); + it("Should Initialize the Leaf", async () => { + besuLeaf = new BesuLeaf( + besuEnv.createBesuLeafConfig(ontologyManager, "DEBUG"), + ontologyManager, + monitorService, + ); + expect(besuLeaf.getNetworkIdentification()).toStrictEqual({ + id: BesuTestEnvironment.BESU_NETWORK_ID, + ledgerType: LedgerType.Besu2X, + }); + expect(besuLeaf).toBeDefined(); + }); + it("Should deploy the Wrapper Smart Contract", async () => { + await besuLeaf.deployContracts(); + expect(besuLeaf.getDeployWrapperContractReceipt()).toBeDefined(); + }); + + it("Should return the wrapper contract address", async () => { + const wrapperContractAddress = await besuLeaf.getApproveAddress( + TokenType.NONSTANDARD_NONFUNGIBLE, + ); + expect(wrapperContractAddress).toBeDefined(); + + await besuEnv.giveRoleToBridge(wrapperContractAddress); + }); + it("Should Wrap a token", async () => { + nonFungibleAsset = { + id: besuEnv.nonFungibleDefaultAsset.id, + referenceId: besuEnv.nonFungibleDefaultAsset.referenceId, + type: TokenType.NONSTANDARD_NONFUNGIBLE, + owner: besuEnv.nonFungibleDefaultAsset.owner, + contractName: besuEnv.nonFungibleDefaultAsset.contractName, + contractAddress: besuEnv.nonFungibleDefaultAsset.contractAddress!, + uniqueDescriptor: Number(uniqueTokenId1) as UniqueTokenID, + network: { + id: BesuTestEnvironment.BESU_NETWORK_ID, + ledgerType: LedgerType.Besu2X, + }, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC721, + } as EvmNonFungibleAsset; + + const response = await besuLeaf.wrapAsset(nonFungibleAsset); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + + const response2 = await besuLeaf.getAssets(); + expect(response2).toBeDefined(); + expect(response2.length).toBe(1); + expect(response2[0]).toBe(nonFungibleAsset.id); + + const response3 = (await besuLeaf.getAsset( + nonFungibleAsset.id, + )) as EvmNonFungibleAsset; + expect(response3).toBeDefined(); + expect(response3.id).toBe(nonFungibleAsset.id); + expect(response3.type).toBe(nonFungibleAsset.type); + expect(response3.owner).toBe(nonFungibleAsset.owner); + expect(response3.contractAddress).toBe( + besuEnv.getTestNonFungibleContractAddress(), + ); + expect(response3.contractName).toBe( + besuEnv.nonFungibleDefaultAsset.contractName, + ); + + log.info(`Non Fungible Asset Token contract wrapped successfully`); + }); + + it("Should Approve a token", async () => { + await besuEnv.approveAssets( + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + uniqueTokenId1, + TokenType.NONSTANDARD_NONFUNGIBLE, + ); + }); + + it("Should Lock a token", async () => { + const response = await besuLeaf.lockAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + + const response2 = (await besuLeaf.getAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + )) as EvmNonFungibleAsset; + expect(response2).toBeDefined(); + expect(response2.id).toBe(nonFungibleAsset.id); + expect(response2.type).toBe(nonFungibleAsset.type); + expect(response2.owner).toBe(nonFungibleAsset.owner); + expect(response2.contractAddress).toBe(nonFungibleAsset.contractAddress); + expect(response2.contractName).toBe( + besuEnv.nonFungibleDefaultAsset.contractName, + ); + expect(response2.uniqueDescriptor as UniqueTokenID).toBe( + Number(uniqueTokenId1) as UniqueTokenID, + ); + log.info(`Locked token ${uniqueTokenId1} successfully`); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non Fungible Token was transferred correctly to the Wrapper account", + ); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non Fungible Token was transferred correctly from the Owner account", + ); + }); + + it("Should Unlock a token", async () => { + const response = await besuLeaf.unlockAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + + const response2 = (await besuLeaf.getAsset( + nonFungibleAsset.id, + )) as EvmNonFungibleAsset; + expect(response2).toBeDefined(); + expect(response2.id).toBe(nonFungibleAsset.id); + expect(response2.type).toBe(nonFungibleAsset.type); + expect(response2.owner).toBe(nonFungibleAsset.owner); + expect(response2.contractAddress).toBe( + besuEnv.getTestNonFungibleContractAddress(), + ); + expect(response2.contractName).toBe( + besuEnv.nonFungibleDefaultAsset.contractName, + ); + expect(response2.uniqueDescriptor as UniqueTokenID).toBe( + 0 as UniqueTokenID, + ); + log.info(`Unlocked token ${uniqueTokenId1} successfully`); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non Fungible Token was transferred correctly from the Wrapper account", + ); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non Fungible Token was transferred correctly to the Owner account", + ); + }); + + it("Should Burn a token", async () => { + await besuEnv.approveAssets( + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + uniqueTokenId1, + TokenType.NONSTANDARD_NONFUNGIBLE, + ); + const response = await besuLeaf.lockAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + log.info(`Locked token ${uniqueTokenId1} successfully`); + + const response2 = await besuLeaf.burnAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + ); + expect(response2).toBeDefined(); + expect(response2.transactionId).toBeDefined(); + expect(response2.transactionReceipt).toBeDefined(); + log.info(`Burned token ${uniqueTokenId1} successfully`); + + const response3 = (await besuLeaf.getAsset( + nonFungibleAsset.id, + )) as EvmNonFungibleAsset; + expect(response3).toBeDefined(); + expect(response3.id).toBe(nonFungibleAsset.id); + expect(response3.type).toBe(nonFungibleAsset.type); + expect(response3.owner).toBe(nonFungibleAsset.owner); + expect(response3.contractAddress).toBe( + besuEnv.getTestNonFungibleContractAddress(), + ); + expect(response3.contractName).toBe( + besuEnv.nonFungibleDefaultAsset.contractName, + ); + expect(response3.uniqueDescriptor as UniqueTokenID).toBe( + 0 as UniqueTokenID, + ); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + + log.info( + `Token ${uniqueTokenId1} was burned correctly from the Wrapper account`, + ); + }); + + it("Should Mint a token", async () => { + const response = await besuLeaf.mintAsset( + nonFungibleAsset.id, + Number(uniqueTokenId2) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + log.info(`Minted token ${uniqueTokenId2} successfully`); + + const response2 = (await besuLeaf.getAsset( + nonFungibleAsset.id, + Number(uniqueTokenId2) as UniqueTokenID, + )) as EvmNonFungibleAsset; + expect(response2).toBeDefined(); + expect(response2.id).toBe(nonFungibleAsset.id); + expect(response2.type).toBe(nonFungibleAsset.type); + expect(response2.owner).toBe(nonFungibleAsset.owner); + expect(response2.contractAddress).toBe( + besuEnv.getTestNonFungibleContractAddress(), + ); + expect(response2.uniqueDescriptor as UniqueTokenID).toBe( + Number(uniqueTokenId2) as UniqueTokenID, + ); + log.info(`Minted token ${uniqueTokenId2} successfully`); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + `Token ${uniqueTokenId2} was minted correctly to the Wrapper account`, + ); + }); + + it("Should Assign a token", async () => { + const response = await besuLeaf.assignAsset( + nonFungibleAsset.id, + nonFungibleAsset.owner, + Number(uniqueTokenId2) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + log.info(`Assigned token ${uniqueTokenId2} successfully to default owner`); + + const response2 = (await besuLeaf.getAsset( + nonFungibleAsset.id, + )) as EvmNonFungibleAsset; + expect(response2).toBeDefined(); + expect(response2.id).toBe(nonFungibleAsset.id); + expect(response2.type).toBe(nonFungibleAsset.type); + expect(response2.owner).toBe(nonFungibleAsset.owner); + expect(response2.contractAddress).toBe( + besuEnv.getTestNonFungibleContractAddress(), + ); + expect(response2.uniqueDescriptor as UniqueTokenID).toBe( + 0 as UniqueTokenID, + ); + log.info( + `Assigned token ${uniqueTokenId2} successfully from wrapper account`, + ); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + `Token ${uniqueTokenId2} was removed correctly form the Wrapper account`, + ); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + `Token ${uniqueTokenId2} was assigned correctly to the owner account`, + ); + }); + + it("Should Unwrap a token", async () => { + const response = await besuLeaf.unwrapAsset(nonFungibleAsset.id); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + + const response2 = await besuLeaf.getAssets(); + expect(response2).toBeDefined(); + expect(response2.length).toBe(0); + log.info("Unwrapped Non Fungible Token successfully"); + }); +}); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/ethereum-leaf.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/ethereum-leaf.test.ts index 6b4dce5378..e379580183 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/ethereum-leaf.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/ethereum-leaf.test.ts @@ -3,7 +3,10 @@ import { pruneDockerAllIfGithubAction, Containers, } from "@hyperledger/cactus-test-tooling"; -import { TokenType } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { + TokenType, + ERCTokenStandard, +} from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; import { ClaimFormat } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; import { WHALE_ACCOUNT_ADDRESS } from "@hyperledger/cactus-test-geth-ledger"; import { LedgerType } from "@hyperledger/cactus-core-api"; @@ -11,12 +14,24 @@ import { EthereumLeaf } from "../../../../main/typescript/cross-chain-mechanisms import path from "path"; import { OntologyManager } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/ontology-manager"; import { EthereumTestEnvironment } from "../../test-utils"; -import { EvmFungibleAsset } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/evm-asset"; +import { + EvmFungibleAsset, + EvmNonFungibleAsset, +} from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/evm-asset"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { + Amount, + UniqueTokenID, +} from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset"; +import { SupportedContractTypes } from "../../environments/ethereum-test-environment"; let ontologyManager: OntologyManager; let asset: EvmFungibleAsset; +let nonFungibleAsset: EvmNonFungibleAsset; + +const uniqueTokenId1: string = "1001"; +const uniqueTokenId2: string = "1002"; const monitorService = MonitorService.createOrGetMonitorService({ enabled: false, @@ -43,8 +58,6 @@ beforeAll(async () => { fail("Pruning didn't throw OK"); }); { - const erc20TokenContract = "SATPContract"; - const ontologiesPath = path.join(__dirname, "../../../ontologies"); ontologyManager = new OntologyManager( @@ -55,15 +68,27 @@ beforeAll(async () => { monitorService, ); - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedContractTypes.FUNGIBLE, + contractName: "SATPContract", + }, + { + assetType: SupportedContractTypes.NONFUNGIBLE, + contractName: "SATPContract2", + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); - await ethereumEnv.mintTokens("100"); + await ethereumEnv.mintTokens("100", TokenType.NONSTANDARD_FUNGIBLE); + await ethereumEnv.mintTokens("1001", TokenType.NONSTANDARD_NONFUNGIBLE); } }, TIMEOUT); @@ -89,11 +114,11 @@ afterAll(async () => { }); }, TIMEOUT); -describe("Ethereum Leaf Test", () => { +describe("Ethereum Leaf Test with Fungible Tokens", () => { jest.setTimeout(20000); it("Should Initialize the Leaf", async () => { ethereumLeaf = new EthereumLeaf( - ethereumEnv.createEthereumLeafConfig("DEBUG"), + ethereumEnv.createEthereumLeafConfig(ontologyManager, "DEBUG"), ontologyManager, monitorService, ); @@ -101,19 +126,22 @@ describe("Ethereum Leaf Test", () => { }); it("Should deploy Wrapper Smart Contract", async () => { await ethereumLeaf.deployContracts(); - expect( - ethereumLeaf.getDeployFungibleWrapperContractReceipt(), - ).toBeDefined(); + expect(ethereumLeaf.getDeployWrapperContractReceipt()).toBeDefined(); }); it("Should return the wrapper contract address", async () => { - const wrapperContractAddress = - await ethereumLeaf.getWrapperContract("FUNGIBLE"); + const wrapperContractAddress = await ethereumLeaf.getWrapperContract( + TokenType.NONSTANDARD_FUNGIBLE, + ); expect(wrapperContractAddress).toBeDefined(); await ethereumEnv.giveRoleToBridge(wrapperContractAddress); - await ethereumEnv.approveAmount(wrapperContractAddress, "100"); + await ethereumEnv.approveAssets( + wrapperContractAddress, + "100", + TokenType.NONSTANDARD_FUNGIBLE, + ); }); it("Should Wrap a token", async () => { asset = { @@ -123,11 +151,12 @@ describe("Ethereum Leaf Test", () => { owner: WHALE_ACCOUNT_ADDRESS, contractName: ethereumEnv.defaultAsset.contractName, contractAddress: ethereumEnv.defaultAsset.contractAddress!, - amount: "100", + amount: Number(100) as Amount, network: { id: EthereumTestEnvironment.ETH_NETWORK_ID, ledgerType: LedgerType.Ethereum, }, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC20, } as EvmFungibleAsset; const response = await ethereumLeaf.wrapAsset(asset); @@ -146,7 +175,7 @@ describe("Ethereum Leaf Test", () => { expect(response3.type).toBe(asset.type); expect(response3.owner.toLowerCase()).toBe(asset.owner); expect(response3.contractAddress.toLowerCase()).toBe( - ethereumEnv.assetContractAddress, + ethereumEnv.getTestFungibleContractAddress(), ); expect(response3.contractName).toBe(ethereumEnv.defaultAsset.contractName); // expect(response3.tokenType.toString().replace("o", "")).toBe( @@ -155,7 +184,7 @@ describe("Ethereum Leaf Test", () => { }); it("Should Lock a token", async () => { - const response = await ethereumLeaf.lockAsset(asset.id, 100); + const response = await ethereumLeaf.lockAsset(asset.id, 100 as Amount); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); @@ -168,26 +197,26 @@ describe("Ethereum Leaf Test", () => { expect(response2.type).toBe(asset.type); expect(response2.owner.toLowerCase()).toBe(asset.owner); expect(response2.contractAddress.toLowerCase()).toBe( - ethereumEnv.assetContractAddress, + ethereumEnv.getTestFungibleContractAddress(), ); expect(response2.contractName).toBe(ethereumEnv.defaultAsset.contractName); - expect(response2.amount.toString()).toBe("100"); + expect(response2.amount).toBe(100 as Amount); log.info("Locked 100 tokens successfully"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), - ethereumLeaf.getWrapperContract("FUNGIBLE"), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "100", ethereumEnv.getTestOwnerSigningCredential(), ); log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -196,7 +225,7 @@ describe("Ethereum Leaf Test", () => { }); it("Should Unlock a token", async () => { - const response = await ethereumLeaf.unlockAsset(asset.id, 100); + const response = await ethereumLeaf.unlockAsset(asset.id, 100 as Amount); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); @@ -209,26 +238,28 @@ describe("Ethereum Leaf Test", () => { expect(response2.type).toBe(asset.type); expect(response2.owner.toLowerCase()).toBe(asset.owner); expect(response2.contractAddress.toLowerCase()).toBe( - ethereumEnv.getTestContractAddress(), + ethereumEnv.getTestFungibleContractAddress(), ); - expect(response2.contractName).toBe(ethereumEnv.getTestContractName()); - expect(response2.amount.toString()).toBe("0"); + expect(response2.contractName).toBe( + ethereumEnv.getTestFungibleContractName(), + ); + expect(response2.amount).toBe(0 as Amount); log.info("Unlocked 100 tokens successfully"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), - ethereumLeaf.getWrapperContract("FUNGIBLE"), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "0", ethereumEnv.getTestOwnerSigningCredential(), ); log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), @@ -238,18 +269,23 @@ describe("Ethereum Leaf Test", () => { }); it("Should Burn a token", async () => { - const wrapperContractAddress = - await ethereumLeaf.getWrapperContract("FUNGIBLE"); + const wrapperContractAddress = await ethereumLeaf.getWrapperContract( + TokenType.NONSTANDARD_FUNGIBLE, + ); - await ethereumEnv.approveAmount(wrapperContractAddress, "100"); + await ethereumEnv.approveAssets( + wrapperContractAddress, + "100", + TokenType.NONSTANDARD_FUNGIBLE, + ); - const response = await ethereumLeaf.lockAsset(asset.id, 100); + const response = await ethereumLeaf.lockAsset(asset.id, 100 as Amount); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); log.info("Locked 100 tokens successfully"); - const response2 = await ethereumLeaf.burnAsset(asset.id, 100); + const response2 = await ethereumLeaf.burnAsset(asset.id, 100 as Amount); expect(response2).toBeDefined(); expect(response2.transactionId).toBeDefined(); expect(response2.transactionReceipt).toBeDefined(); @@ -263,24 +299,24 @@ describe("Ethereum Leaf Test", () => { expect(response3.type).toBe(asset.type); expect(response3.owner.toLowerCase()).toBe(asset.owner); expect(response3.contractAddress.toLowerCase()).toBe( - ethereumEnv.getTestContractAddress(), + ethereumEnv.getTestFungibleContractAddress(), ); expect(response3.contractName).toBe(ethereumEnv.defaultAsset.contractName); - expect(response3.amount.toString()).toBe("0"); + expect(response3.amount).toBe(0 as Amount); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), - ethereumLeaf.getWrapperContract("FUNGIBLE"), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "0", ethereumEnv.getTestOwnerSigningCredential(), ); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -289,7 +325,7 @@ describe("Ethereum Leaf Test", () => { }); it("Should Mint a token", async () => { - const response = await ethereumLeaf.mintAsset(asset.id, 100); + const response = await ethereumLeaf.mintAsset(asset.id, 100 as Amount); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); expect(response.transactionReceipt).toBeDefined(); @@ -303,16 +339,16 @@ describe("Ethereum Leaf Test", () => { expect(response2.type).toBe(asset.type); expect(response2.owner.toLowerCase()).toBe(asset.owner); expect(response2.contractAddress.toLowerCase()).toBe( - ethereumEnv.getTestContractAddress(), + ethereumEnv.getTestFungibleContractAddress(), ); - expect(response2.amount.toString()).toBe("100"); + expect(response2.amount).toBe(100 as Amount); log.info("Minted 100 tokens successfully"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), - ethereumLeaf.getWrapperContract("FUNGIBLE"), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "100", ethereumEnv.getTestOwnerSigningCredential(), ); @@ -323,7 +359,7 @@ describe("Ethereum Leaf Test", () => { const response = await ethereumLeaf.assignAsset( asset.id, ethereumEnv.getTestOwnerAccount(), - 100, + 100 as Amount, ); expect(response).toBeDefined(); expect(response.transactionId).toBeDefined(); @@ -338,25 +374,25 @@ describe("Ethereum Leaf Test", () => { expect(response2.type).toBe(asset.type); expect(response2.owner.toLowerCase()).toBe(asset.owner); expect(response2.contractAddress.toLowerCase()).toBe( - ethereumEnv.getTestContractAddress(), + ethereumEnv.getTestFungibleContractAddress(), ); - expect(response2.amount.toString()).toBe("0"); + expect(response2.amount).toBe(0 as Amount); log.info("Assigned 100 tokens successfully"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), - ethereumLeaf.getWrapperContract("FUNGIBLE"), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_FUNGIBLE), "0", ethereumEnv.getTestOwnerSigningCredential(), ); log.info("Amount was assigned correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), @@ -376,3 +412,352 @@ describe("Ethereum Leaf Test", () => { log.info("Unwrapped 100 tokens successfully"); }); }); + +describe("Ethereum Leaf Non Fungible Test", () => { + jest.setTimeout(20000); + it("Should Initialize the Leaf", async () => { + ethereumLeaf = new EthereumLeaf( + ethereumEnv.createEthereumLeafConfig(ontologyManager, "DEBUG"), + ontologyManager, + monitorService, + ); + expect(ethereumLeaf).toBeDefined(); + }); + + it("Should deploy Wrapper Smart Contract", async () => { + await ethereumLeaf.deployContracts(); + expect(ethereumLeaf.getDeployWrapperContractReceipt()).toBeDefined(); + }); + + it("Should return the wrapper contract address", async () => { + const wrapperContractAddress = await ethereumLeaf.getWrapperContract( + TokenType.NONSTANDARD_NONFUNGIBLE, + ); + expect(wrapperContractAddress).toBeDefined(); + + await ethereumEnv.giveRoleToBridge(wrapperContractAddress); + }); + it("Should Wrap a token", async () => { + nonFungibleAsset = { + id: ethereumEnv.nonFungibleDefaultAsset.id, + referenceId: ethereumEnv.nonFungibleDefaultAsset.referenceId, + type: TokenType.NONSTANDARD_NONFUNGIBLE, + owner: WHALE_ACCOUNT_ADDRESS, + contractName: ethereumEnv.nonFungibleDefaultAsset.contractName, + contractAddress: ethereumEnv.nonFungibleDefaultAsset.contractAddress!, + uniqueDescriptor: Number(uniqueTokenId1) as UniqueTokenID, + network: { + id: EthereumTestEnvironment.ETH_NETWORK_ID, + ledgerType: LedgerType.Ethereum, + }, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC721, + } as EvmNonFungibleAsset; + + const response = await ethereumLeaf.wrapAsset(nonFungibleAsset); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + + const response2 = await ethereumLeaf.getAssets(); + expect(response2).toBeDefined(); + expect(response2.length).toBe(1); + expect(response2[0]).toBe(nonFungibleAsset.id); + + const response3 = await ethereumLeaf.getAsset(nonFungibleAsset.id); + expect(response3).toBeDefined(); + expect(response3.id).toBe(nonFungibleAsset.id); + expect(response3.type).toBe(nonFungibleAsset.type); + expect(response3.owner.toLowerCase()).toBe( + nonFungibleAsset.owner.toLowerCase(), + ); + expect(response3.contractAddress.toLowerCase()).toBe( + ethereumEnv.getTestNonFungibleContractAddress().toLowerCase(), + ); + expect(response3.contractName).toBe( + ethereumEnv.nonFungibleDefaultAsset.contractName, + ); + + log.info(`Non Fungible Asset Token contract wrapped successfully`); + }); + + it("Should Approve a token", async () => { + await ethereumEnv.approveAssets( + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "1001", + TokenType.NONSTANDARD_NONFUNGIBLE, + ); + }); + + it("Should Lock a token", async () => { + const response = await ethereumLeaf.lockAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + + const response2 = (await ethereumLeaf.getAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + )) as EvmNonFungibleAsset; + expect(response2).toBeDefined(); + expect(response2.id).toBe(nonFungibleAsset.id); + expect(response2.type).toBe(nonFungibleAsset.type); + expect(response2.owner.toLowerCase()).toBe(nonFungibleAsset.owner); + expect(response2.contractAddress.toLowerCase()).toBe( + ethereumEnv.getTestNonFungibleContractAddress().toLowerCase(), + ); + expect(response2.contractName).toBe( + ethereumEnv.getTestNonFungibleContractName(), + ); + expect(response2.uniqueDescriptor as UniqueTokenID).toBe( + Number(uniqueTokenId1) as UniqueTokenID, + ); + log.info(`Locked token${uniqueTokenId1} successfully`); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non Fungible Token was transferred correctly to the Wrapper account", + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non Fungible Token was transferred correctly from the Owner account", + ); + }); + + it("Should Unlock a token", async () => { + const response = await ethereumLeaf.unlockAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + + const response2 = (await ethereumLeaf.getAsset( + nonFungibleAsset.id, + )) as EvmNonFungibleAsset; + expect(response2).toBeDefined(); + expect(response2.id).toBe(nonFungibleAsset.id); + expect(response2.type).toBe(nonFungibleAsset.type); + expect(response2.owner.toLowerCase()).toBe(nonFungibleAsset.owner); + expect(response2.contractAddress.toLowerCase()).toBe( + ethereumEnv.getTestNonFungibleContractAddress().toLowerCase(), + ); + expect(response2.contractName).toBe( + ethereumEnv.getTestNonFungibleContractName(), + ); + expect(response2.uniqueDescriptor as UniqueTokenID).toBe( + 0 as UniqueTokenID, + ); + log.info(`Unlocked token ${uniqueTokenId1} successfully`); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non Fungible Token was transferred correctly from the Wrapper account", + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non Fungible Token was transferred correctly to the Owner account", + ); + }); + + it("Should Burn a token", async () => { + await ethereumEnv.approveAssets( + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + uniqueTokenId1, + TokenType.NONSTANDARD_NONFUNGIBLE, + ); + const response = await ethereumLeaf.lockAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + log.info(`Locked token ${uniqueTokenId1} successfully`); + + const response2 = await ethereumLeaf.burnAsset( + nonFungibleAsset.id, + Number(uniqueTokenId1) as UniqueTokenID, + ); + expect(response2).toBeDefined(); + expect(response2.transactionId).toBeDefined(); + expect(response2.transactionReceipt).toBeDefined(); + log.info(`Burned token ${uniqueTokenId1} successfully`); + + const response3 = (await ethereumLeaf.getAsset( + nonFungibleAsset.id, + )) as EvmNonFungibleAsset; + expect(response3).toBeDefined(); + expect(response3.id).toBe(nonFungibleAsset.id); + expect(response3.type).toBe(nonFungibleAsset.type); + expect(response3.owner.toLowerCase()).toBe(nonFungibleAsset.owner); + expect(response3.contractAddress.toLowerCase()).toBe( + ethereumEnv.getTestNonFungibleContractAddress().toLowerCase(), + ); + expect(response3.contractName).toBe( + ethereumEnv.nonFungibleDefaultAsset.contractName, + ); + expect(response3.uniqueDescriptor as UniqueTokenID).toBe( + 0 as UniqueTokenID, + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + + log.info( + `Token ${uniqueTokenId1} was burned correctly from the Wrapper account`, + ); + }); + + it("Should Mint a token", async () => { + const response = await ethereumLeaf.mintAsset( + nonFungibleAsset.id, + Number(uniqueTokenId2) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + log.info(`Minted token ${uniqueTokenId2} successfully`); + + const response2 = (await ethereumLeaf.getAsset( + nonFungibleAsset.id, + Number(uniqueTokenId2) as UniqueTokenID, + )) as EvmNonFungibleAsset; + expect(response2).toBeDefined(); + expect(response2.id).toBe(nonFungibleAsset.id); + expect(response2.type).toBe(nonFungibleAsset.type); + expect(response2.owner.toLowerCase()).toBe(nonFungibleAsset.owner); + expect(response2.contractAddress.toLowerCase()).toBe( + ethereumEnv.getTestNonFungibleContractAddress().toLowerCase(), + ); + expect(response2.uniqueDescriptor as UniqueTokenID).toBe( + Number(uniqueTokenId2) as UniqueTokenID, + ); + log.info(`Minted token ${uniqueTokenId2} successfully`); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + `Token ${uniqueTokenId2} was minted correctly to the Wrapper account`, + ); + }); + + it("Should Assign a token", async () => { + const response = await ethereumLeaf.assignAsset( + nonFungibleAsset.id, + nonFungibleAsset.owner, + Number(uniqueTokenId2) as UniqueTokenID, + ); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + log.info(`Assigned token ${uniqueTokenId2} successfully to default owner`); + + const response2 = (await ethereumLeaf.getAsset( + nonFungibleAsset.id, + )) as EvmNonFungibleAsset; + expect(response2).toBeDefined(); + expect(response2.id).toBe(nonFungibleAsset.id); + expect(response2.type).toBe(nonFungibleAsset.type); + expect(response2.owner.toLowerCase()).toBe(nonFungibleAsset.owner); + expect(response2.contractAddress.toLowerCase()).toBe( + ethereumEnv.getTestNonFungibleContractAddress(), + ); + expect(response2.uniqueDescriptor as UniqueTokenID).toBe( + 0 as UniqueTokenID, + ); + log.info( + `Assigned token ${uniqueTokenId2} successfully from wrapper account`, + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumLeaf.getWrapperContract(TokenType.NONSTANDARD_NONFUNGIBLE), + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + `Token ${uniqueTokenId2} was removed correctly form the Wrapper account`, + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + `Token ${uniqueTokenId2} was assigned correctly to the owner account`, + ); + }); + + it("Should Unwrap a token", async () => { + const response = await ethereumLeaf.unwrapAsset(nonFungibleAsset.id); + expect(response).toBeDefined(); + expect(response.transactionId).toBeDefined(); + expect(response.transactionReceipt).toBeDefined(); + + const response2 = await ethereumLeaf.getAssets(); + expect(response2).toBeDefined(); + expect(response2.length).toBe(0); + log.info("Unwrapped Non Fungible Token successfully"); + }); +}); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/fabric-leaf.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/fabric-leaf.test.ts index 4e5cbfffe2..cb8eccc6d4 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/fabric-leaf.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/bridge/fabric-leaf.test.ts @@ -16,6 +16,7 @@ import { FabricFungibleAsset } from "../../../../main/typescript/cross-chain-mec import { OntologyManager } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/ontology-manager"; import { FabricLeaf } from "../../../../main/typescript/cross-chain-mechanisms/bridge/leafs/fabric-leaf"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { Amount } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset"; let ontologyManager: OntologyManager; @@ -102,10 +103,12 @@ describe("Fabric Bridge Test", () => { }); it("Should deploy Wrapper Smart Contract", async () => { await fabricLeaf.deployContracts(); - expect(fabricLeaf.getDeployFungibleWrapperContractReceipt()).toBeDefined(); + expect(fabricLeaf.getDeployWrapperContractReceipt()).toBeDefined(); }); it("Should return the wrapper contract name", async () => { - const wrapperContractName = fabricLeaf.getWrapperContract("FUNGIBLE"); + const wrapperContractName = fabricLeaf.getWrapperContract( + TokenType.NONSTANDARD_FUNGIBLE, + ); expect(wrapperContractName).toBeDefined(); await fabricEnv.giveRoleToBridge(fabricEnv.getBridgeMSPID()); @@ -124,7 +127,7 @@ describe("Fabric Bridge Test", () => { contractName: fabricEnv.satpContractName, channelName: fabricEnv.fabricChannelName, mspId: fabricEnv.userIdentity.mspId, - amount: "100", + amount: 100 as Amount, network: { id: FabricTestEnvironment.FABRIC_NETWORK_ID, ledgerType: LedgerType.Fabric2, @@ -161,7 +164,7 @@ describe("Fabric Bridge Test", () => { }); it("Should Lock a token", async () => { - const responseLock = await fabricLeaf.lockAsset(asset.id, 100); + const responseLock = await fabricLeaf.lockAsset(asset.id, 100 as Amount); expect(responseLock).toBeDefined(); expect(responseLock.transactionId).toBeDefined(); expect(responseLock.output).toBeDefined(); @@ -203,7 +206,10 @@ describe("Fabric Bridge Test", () => { }); it("Should Unlock a token", async () => { - const responseUnlock = await fabricLeaf.unlockAsset(asset.id, 100); + const responseUnlock = await fabricLeaf.unlockAsset( + asset.id, + 100 as Amount, + ); expect(responseUnlock).toBeDefined(); expect(responseUnlock.transactionId).toBeDefined(); @@ -250,14 +256,14 @@ describe("Fabric Bridge Test", () => { "100", ); - const responseLock = await fabricLeaf.lockAsset(asset.id, 100); + const responseLock = await fabricLeaf.lockAsset(asset.id, 100 as Amount); expect(responseLock).toBeDefined(); expect(responseLock.transactionId).toBeDefined(); expect(responseLock.output).toBeDefined(); log.info("Locked 100 tokens successfully"); - const responseBurn = await fabricLeaf.burnAsset(asset.id, 100); + const responseBurn = await fabricLeaf.burnAsset(asset.id, 100 as Amount); expect(responseBurn).toBeDefined(); expect(responseBurn.transactionId).toBeDefined(); expect(responseBurn.output).toBeDefined(); @@ -296,7 +302,7 @@ describe("Fabric Bridge Test", () => { }); it("Should Mint a token", async () => { - const responseMint = await fabricLeaf.mintAsset(asset.id, 100); + const responseMint = await fabricLeaf.mintAsset(asset.id, 100 as Amount); expect(responseMint).toBeDefined(); expect(responseMint.transactionId).toBeDefined(); expect(responseMint.output).toBeDefined(); @@ -330,7 +336,7 @@ describe("Fabric Bridge Test", () => { const responseAssign = await fabricLeaf.assignAsset( asset.id, asset.owner, - 100, + 100 as Amount, ); expect(responseAssign).toBeDefined(); expect(responseAssign.transactionId).toBeDefined(); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/oracle-execute-dockerization-fast.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/oracle-execute-dockerization-fast.test.ts index c17474dba9..9cedb9bfce 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/oracle-execute-dockerization-fast.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/oracle-execute-dockerization-fast.test.ts @@ -45,6 +45,8 @@ import { SATP_DOCKER_IMAGE_VERSION, } from "../../constants"; import { keccak256 } from "web3-utils"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const logLevel: LogLevelDesc = "TRACE"; const log = LoggerProvider.getOrCreate({ @@ -117,11 +119,18 @@ beforeAll(async () => { const businessLogicContract = "OracleTestContract"; { - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: businessLogicContract, - logLevel, - network: testNetwork, - }); + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + network: testNetwork, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: businessLogicContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); ethereumContractAddress = await ethereumEnv.deployAndSetupOracleContracts( @@ -131,11 +140,18 @@ beforeAll(async () => { ); } { - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: businessLogicContract, - logLevel, - network: testNetwork, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + network: testNetwork, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: businessLogicContract, + }, + ], + ); log.info("Besu Ledger started successfully"); besuContractAddress = await besuEnv.deployAndSetupOracleContracts( @@ -229,7 +245,7 @@ describe("Oracle executing UPDATE tasks successfully", () => { const response = await oracleApi.executeOracleTask({ destinationNetworkId: ethereumEnv.network, destinationContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestFungibleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -263,7 +279,7 @@ describe("Oracle executing READ_AND_UPDATE tasks successfully", () => { const response = await oracleApi.executeOracleTask({ sourceNetworkId: ethereumEnv.network, sourceContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestFungibleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -272,7 +288,7 @@ describe("Oracle executing READ_AND_UPDATE tasks successfully", () => { }, destinationNetworkId: besuEnv.network, destinationContract: { - contractName: besuEnv.getTestContractName(), + contractName: besuEnv.getTestFungibleContractName(), contractAddress: besuContractAddress, contractAbi: OracleTestContract.abi, methodName: "setData", @@ -372,7 +388,7 @@ describe("Oracle event listener for EVM working", () => { }, destinationNetworkId: besuEnv.network, destinationContract: { - contractName: besuEnv.getTestContractName(), + contractName: besuEnv.getTestFungibleContractName(), contractAddress: besuContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -397,7 +413,7 @@ describe("Oracle event listener for EVM working", () => { await oracleApi.executeOracleTask({ destinationNetworkId: ethereumEnv.network, destinationContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestFungibleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -412,7 +428,7 @@ describe("Oracle event listener for EVM working", () => { await oracleApi.executeOracleTask({ destinationNetworkId: ethereumEnv.network, destinationContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestFungibleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-1-gateway-dockerization.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-1-gateway-dockerization.test.ts index b80d8b9b46..33517d976e 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-1-gateway-dockerization.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-1-gateway-dockerization.test.ts @@ -41,6 +41,9 @@ import { SATP_DOCKER_IMAGE_NAME, SATP_DOCKER_IMAGE_VERSION, } from "../../constants"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; +import { TokenType as TokenTypeMain } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; const logLevel: LogLevelDesc = "TRACE"; const log = LoggerProvider.getOrCreate({ @@ -130,21 +133,35 @@ beforeAll(async () => { } { - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - network: testNetwork, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + network: testNetwork, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); } { - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - network: testNetwork, - }); + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + network: testNetwork, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); @@ -154,11 +171,11 @@ beforeAll(async () => { describe("SATPGateway sending a token from Besu to Fabric", () => { jest.setTimeout(TIMEOUT); it("should mint 100 tokens to the owner account", async () => { - await besuEnv.mintTokens("100"); + await besuEnv.mintTokens("100", TokenTypeMain.NONSTANDARD_FUNGIBLE); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -230,7 +247,7 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { const reqApproveBesuAddress = await approveAddressApi.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveBesuAddress?.data.approveAddress).toBeDefined(); @@ -242,9 +259,10 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -253,7 +271,7 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { const reqApproveFabricAddress = await approveAddressApi.getApproveAddress( fabricEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveFabricAddress?.data.approveAddress).toBeDefined(); @@ -283,9 +301,9 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { expect(res?.status).toBe(200); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -293,9 +311,9 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -387,7 +405,7 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { const reqApproveFabricAddress = await approveAddressApi.getApproveAddress( fabricEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveFabricAddress?.data.approveAddress) { @@ -409,7 +427,7 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { const reqApproveBesuAddress = await approveAddressApi.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveBesuAddress?.data.approveAddress).toBeDefined(); @@ -458,9 +476,9 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { log.info("Amount was transferred correctly to the Wrapper account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -468,9 +486,9 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { log.info("Amount was transferred correctly from the Bridge account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -545,7 +563,7 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { const reqApproveBesuAddress = await approveAddressApi.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -557,9 +575,10 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -568,7 +587,7 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { const reqApproveEthereumAddress = await approveAddressApi.getApproveAddress( ethereumEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveEthereumAddress?.data.approveAddress).toBeDefined(); @@ -601,9 +620,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { expect(res?.status).toBe(200); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -611,9 +630,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getBridgeEthAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -621,9 +640,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.data.approveAddress, "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -631,9 +650,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Bridge account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-2-gateways-dockerization.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-2-gateways-dockerization.test.ts index 70d5ec5546..4fc1c4fa68 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-2-gateways-dockerization.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-2-gateways-dockerization.test.ts @@ -44,6 +44,9 @@ import { SATP_DOCKER_IMAGE_VERSION, } from "../../constants"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { TokenType as TokenTypeMain } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const monitorService = MonitorService.createOrGetMonitorService({ enabled: false, @@ -161,31 +164,45 @@ beforeAll(async () => { } { - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - network: testNetwork, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + network: testNetwork, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); } { - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - network: testNetwork, - }); + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + network: testNetwork, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); } - await besuEnv.mintTokens("100"); + await besuEnv.mintTokens("100", TokenTypeMain.NONSTANDARD_FUNGIBLE); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -334,7 +351,7 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { const reqApproveBesuAddress = await approveAddressApi1.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -346,9 +363,10 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -363,7 +381,7 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { const reqApproveFabricAddress = await approveAddressApi2.getApproveAddress( fabricEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveFabricAddress?.data.approveAddress).toBeDefined(); @@ -393,9 +411,9 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { expect(res?.status).toBe(200); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -403,9 +421,9 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -577,7 +595,7 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { const reqApproveFabricAddress = await approveAddressApi1.getApproveAddress( fabricEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveFabricAddress?.data.approveAddress) { @@ -605,7 +623,7 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { const reqApproveBesuAddress = await approveAddressApi2.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveBesuAddress?.data.approveAddress).toBeDefined(); @@ -654,9 +672,9 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { log.info("Amount was transferred correctly to the Wrapper account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -664,9 +682,9 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { log.info("Amount was transferred correctly from the Bridge account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -839,7 +857,7 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { const reqApproveBesuAddress = await approveAddressApi1.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -851,9 +869,10 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -869,7 +888,7 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { const reqApproveEthereumAddress = await approveAddressApi2.getApproveAddress( ethereumEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveEthereumAddress?.data.approveAddress).toBeDefined(); @@ -914,9 +933,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { expect(statusResponse?.data.stage).toBe("SATP_STAGE_3"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -924,9 +943,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -934,9 +953,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.data.approveAddress, "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -944,9 +963,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Bridge account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-dev-dockerization-fast.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-dev-dockerization-fast.test.ts index a644a06092..705b4cdda7 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-dev-dockerization-fast.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/docker/satp-e2e-transfer-dev-dockerization-fast.test.ts @@ -44,6 +44,9 @@ import { SATP_DOCKER_IMAGE_VERSION, SATP_DOCKER_IMAGE_NAME, } from "../../constants"; +import { TokenType as TokenTypeMain } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const logLevel: LogLevelDesc = "TRACE"; const log = LoggerProvider.getOrCreate({ @@ -139,32 +142,46 @@ beforeAll(async () => { await setupDBTable(db_remote_config2); { - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - network: testNetwork, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + network: testNetwork, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); } { - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - network: testNetwork, - }); + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + network: testNetwork, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); } // feeding the owner account with 200 tokens in Besu that will be used in the various transfers - await besuEnv.mintTokens("200"); + await besuEnv.mintTokens("200", TokenTypeMain.NONSTANDARD_FUNGIBLE); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "200", besuEnv.getTestOwnerSigningCredential(), @@ -239,7 +256,7 @@ describe("1 SATPGateway sending a token from Besu to Ethereum", () => { const reqApproveBesuAddress = await approveAddressApi.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -251,9 +268,10 @@ describe("1 SATPGateway sending a token from Besu to Ethereum", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -262,7 +280,7 @@ describe("1 SATPGateway sending a token from Besu to Ethereum", () => { const reqApproveEthereumAddress = await approveAddressApi.getApproveAddress( ethereumEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveEthereumAddress?.data.approveAddress).toBeDefined(); @@ -295,9 +313,9 @@ describe("1 SATPGateway sending a token from Besu to Ethereum", () => { expect(res?.status).toBe(200); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -305,9 +323,9 @@ describe("1 SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getBridgeEthAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -315,9 +333,9 @@ describe("1 SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.data.approveAddress, "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -325,9 +343,9 @@ describe("1 SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Bridge account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), @@ -478,7 +496,7 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { const reqApproveBesuAddress = await approveAddressApi1.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -490,9 +508,10 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -508,7 +527,7 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { const reqApproveEthereumAddress = await approveAddressApi2.getApproveAddress( ethereumEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveEthereumAddress?.data.approveAddress).toBeDefined(); @@ -554,9 +573,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { expect(statusResponse?.data.stage).toBe("SATP_STAGE_3"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -564,9 +583,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getBridgeEthAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -574,9 +593,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.data.approveAddress, "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -584,9 +603,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Bridge account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "200", ethereumEnv.getTestOwnerSigningCredential(), @@ -738,7 +757,7 @@ describe("2 SATPGateways sending a token from Ethereum to Besu", () => { const reqApproveEthereumAddress = await approveAddressApi1.getApproveAddress( ethereumEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveEthereumAddress?.data.approveAddress) { @@ -752,9 +771,10 @@ describe("2 SATPGateways sending a token from Ethereum to Besu", () => { ); if (reqApproveEthereumAddress?.data.approveAddress) { - await ethereumEnv.approveAmount( + await ethereumEnv.approveAssets( reqApproveEthereumAddress.data.approveAddress, "200", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -769,7 +789,7 @@ describe("2 SATPGateways sending a token from Ethereum to Besu", () => { const reqApproveBesuAddress = await approveAddressApi2.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveBesuAddress?.data.approveAddress).toBeDefined(); @@ -832,9 +852,9 @@ describe("2 SATPGateways sending a token from Ethereum to Besu", () => { expect(res?.status).toBe(200); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -842,9 +862,9 @@ describe("2 SATPGateways sending a token from Ethereum to Besu", () => { log.info("Amount was transfer correctly from the Owner account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getBridgeEthAccount(), "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -852,9 +872,9 @@ describe("2 SATPGateways sending a token from Ethereum to Besu", () => { log.info("Amount was transfer correctly to the Wrapper account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -862,9 +882,9 @@ describe("2 SATPGateways sending a token from Ethereum to Besu", () => { log.info("Amount was transfer correctly from the Bridge account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "200", besuEnv.getTestOwnerSigningCredential(), diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-1-gateway-with-api-server.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-1-gateway-with-api-server.test.ts index 413e4be553..4462134fff 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-1-gateway-with-api-server.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-1-gateway-with-api-server.test.ts @@ -42,6 +42,9 @@ import { createMigrationSource } from "../../../../main/typescript/database/knex import { knexRemoteInstance } from "../../../../main/typescript/database/knexfile-remote"; import { knexLocalInstance } from "../../../../main/typescript/database/knexfile"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { TokenType as TokenTypeMain } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const logLevel: LogLevelDesc = "DEBUG"; const log = LoggerProvider.getOrCreate({ @@ -111,20 +114,44 @@ beforeAll(async () => { { const erc20TokenContract = "SATPContract"; - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + const erc721TokenContract = "SATPNFTContract"; + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + { + assetType: SupportedBesuContractTypes.NONFUNGIBLE, + contractName: erc721TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); } { const erc20TokenContract = "SATPContract"; - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + const erc721TokenContract = "SATPNFTContract"; + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + { + assetType: SupportedEthereumContractTypes.NONFUNGIBLE, + contractName: erc721TokenContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); } @@ -133,11 +160,11 @@ beforeAll(async () => { describe("SATPGateway sending a token from Besu to Fabric", () => { jest.setTimeout(TIMEOUT); it("should mint 100 tokens to the owner account", async () => { - await besuEnv.mintTokens("100"); + await besuEnv.mintTokens("100", TokenTypeMain.NONSTANDARD_FUNGIBLE); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -219,7 +246,7 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { const reqApproveBesuAddress = await approveAddressApi.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -231,9 +258,10 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -242,7 +270,7 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { const reqApproveFabricAddress = await approveAddressApi.getApproveAddress( fabricEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveFabricAddress?.data.approveAddress).toBeDefined(); @@ -270,9 +298,9 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { expect(res?.status).toBe(200); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -280,9 +308,9 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -387,7 +415,7 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { const reqApproveFabricAddress = await approveAddressApi.getApproveAddress( fabricEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveFabricAddress?.data.approveAddress) { @@ -409,7 +437,7 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { const reqApproveBesuAddress = await approveAddressApi.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveBesuAddress?.data.approveAddress).toBeDefined(); @@ -456,9 +484,9 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { log.info("Amount was transferred correctly to the Wrapper account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -466,9 +494,9 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { log.info("Amount was transferred correctly from the Bridge account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -556,7 +584,7 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { const reqApproveBesuAddress = await approveAddressApi.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -568,9 +596,10 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } @@ -578,7 +607,7 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { const reqApproveEthereumAddress = await approveAddressApi.getApproveAddress( ethereumEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveEthereumAddress?.data.approveAddress).toBeDefined(); @@ -609,9 +638,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { expect(res?.status).toBe(200); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -619,9 +648,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -629,9 +658,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.data.approveAddress, "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -639,9 +668,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Bridge account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), @@ -651,3 +680,203 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { await gateway.shutdown(); }); }); +describe("SATPGateway sending a Non Fungible token from Besu to Ethereum", () => { + jest.setTimeout(TIMEOUT); + const tokenUniqueDescriptor = "1001"; + it("should mint a non fungible token to the owner account", async () => { + await besuEnv.mintTokens( + tokenUniqueDescriptor, + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + }); + it("should realize a transfer", async () => { + //setup satp gateway + const factoryOptions: IPluginFactoryOptions = { + pluginImportType: PluginImportType.Local, + }; + const factory = new PluginFactorySATPGateway(factoryOptions); + + const gatewayIdentity = { + id: "mockID", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + proofID: "mockProofID10", + address: "http://localhost" as Address, + } as GatewayIdentity; + + const migrationSource = await createMigrationSource(); + knexLocalClient = knex({ + ...knexLocalInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + knexSourceRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + const ethereumNetworkOptions = ethereumEnv.createEthereumConfig(); + const besuNetworkOptions = besuEnv.createBesuConfig(); + + const ontologiesPath = path.join(__dirname, "../../../ontologies"); + + const options: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity, + ccConfig: { + bridgeConfig: [ethereumNetworkOptions, besuNetworkOptions], + }, + localRepository: knexLocalInstance.default, + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ + plugins: [], + }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + gateway = await factory.create(options); + expect(gateway).toBeInstanceOf(SATPGateway); + await gateway.onPluginInit(); + + const identity = gateway.Identity; + // default servers + expect(identity.gatewayServerPort).toBe(3010); + expect(identity.gatewayClientPort).toBe(3011); + expect(identity.gatewayOapiPort).toBe(4010); + expect(identity.address).toBe("http://localhost"); + + const apiServer = await gateway.getOrCreateHttpServer(); + expect(apiServer).toBeInstanceOf(ApiServer); + + const approveAddressApi = new GetApproveAddressApi( + new Configuration({ basePath: gateway.getAddressOApiAddress() }), + ); + + const reqApproveBesuAddress = await approveAddressApi.getApproveAddress( + besuEnv.network, + TokenType.Nonfungible, + ); + + if (!reqApproveBesuAddress?.data.approveAddress) { + throw new Error("Approve address is undefined"); + } + + expect(reqApproveBesuAddress?.data.approveAddress).toBeDefined(); + + await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); + + if (reqApproveBesuAddress?.data.approveAddress) { + await besuEnv.approveAssets( + reqApproveBesuAddress.data.approveAddress, + tokenUniqueDescriptor, + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + } + + log.debug( + `Approved non fungible token ${tokenUniqueDescriptor} to the Besu Bridge Address`, + ); + + const reqApproveEthereumAddress = await approveAddressApi.getApproveAddress( + ethereumEnv.network, + TokenType.Nonfungible, + ); + + expect(reqApproveEthereumAddress?.data.approveAddress).toBeDefined(); + + if (!reqApproveEthereumAddress?.data.approveAddress) { + throw new Error("Approve address is undefined"); + } + + await ethereumEnv.giveRoleToBridge( + reqApproveEthereumAddress.data.approveAddress, + ); + + const satpApi = new TransactionApi( + new Configuration({ basePath: gateway.getAddressOApiAddress() }), + ); + + const req = getTransactRequest( + "mockContext", + besuEnv, + ethereumEnv, + tokenUniqueDescriptor, + tokenUniqueDescriptor, + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + + const res = await satpApi.transact(req); + log.info(res?.status); + log.info(res.data.statusResponse); + expect(res?.status).toBe(200); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non fungible token was transferred correctly from the Owner account at Besu", + ); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non fungible token was transferred correctly from the Wrapper account at Besu", + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + reqApproveEthereumAddress?.data.approveAddress, + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non fungible token was transferred correctly from the Bridge account at Ethereum", + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non fungible token was transferred correctly to the Owner account at Ethereum", + ); + + await gateway.shutdown(); + }); +}); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-1-gateway.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-1-gateway.test.ts index 76f8b39d5a..b3879356ff 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-1-gateway.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-1-gateway.test.ts @@ -38,6 +38,9 @@ import { createMigrationSource } from "../../../../main/typescript/database/knex import { knexLocalInstance } from "../../../../main/typescript/database/knexfile"; import { knexRemoteInstance } from "../../../../main/typescript/database/knexfile-remote"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { TokenType as TokenTypeMain } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const logLevel: LogLevelDesc = "DEBUG"; const log = LoggerProvider.getOrCreate({ @@ -108,20 +111,44 @@ beforeAll(async () => { { const erc20TokenContract = "SATPContract"; - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + const erc721TokenContract = "SATPNonFungibleContract"; + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + { + assetType: SupportedBesuContractTypes.NONFUNGIBLE, + contractName: erc721TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); } { const erc20TokenContract = "SATPContract"; - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + const erc721TokenContract = "SATPNonFungibleContract"; + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + { + assetType: SupportedEthereumContractTypes.NONFUNGIBLE, + contractName: erc721TokenContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); } @@ -130,11 +157,11 @@ beforeAll(async () => { describe("SATPGateway sending a token from Besu to Fabric", () => { jest.setTimeout(TIMEOUT); it("should mint 100 tokens to the owner account", async () => { - await besuEnv.mintTokens("100"); + await besuEnv.mintTokens("100", TokenTypeMain.NONSTANDARD_FUNGIBLE); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -210,7 +237,7 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { const reqApproveBesuAddress = await dispatcher?.GetApproveAddress({ networkId: besuEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveBesuAddress?.approveAddress).toBeDefined(); @@ -221,7 +248,11 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); if (reqApproveBesuAddress?.approveAddress) { - await besuEnv.approveAmount(reqApproveBesuAddress.approveAddress, "100"); + await besuEnv.approveAssets( + reqApproveBesuAddress.approveAddress, + "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, + ); } else { throw new Error("Approve address is undefined"); } @@ -229,7 +260,7 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { const reqApproveFabricAddress = await dispatcher?.GetApproveAddress({ networkId: fabricEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveFabricAddress?.approveAddress).toBeDefined(); @@ -251,9 +282,9 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { log.info(res?.statusResponse); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -261,9 +292,9 @@ describe("SATPGateway sending a token from Besu to Fabric", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -366,7 +397,7 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { const reqApproveFabricAddress = await dispatcher?.GetApproveAddress({ networkId: fabricEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveFabricAddress?.approveAddress).toBeDefined(); @@ -386,7 +417,7 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { const reqApproveBesuAddress = await dispatcher?.GetApproveAddress({ networkId: besuEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveBesuAddress?.approveAddress).toBeDefined(); @@ -427,9 +458,9 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -437,9 +468,9 @@ describe("SATPGateway sending a token from Fabric to Besu", () => { log.info("Amount was transfer correctly to the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -521,7 +552,7 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { expect(dispatcher).toBeTruthy(); const reqApproveBesuAddress = await dispatcher?.GetApproveAddress({ networkId: besuEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); if (!reqApproveBesuAddress?.approveAddress) { @@ -533,7 +564,11 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); if (reqApproveBesuAddress?.approveAddress) { - await besuEnv.approveAmount(reqApproveBesuAddress.approveAddress, "100"); + await besuEnv.approveAssets( + reqApproveBesuAddress.approveAddress, + "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, + ); } else { throw new Error("Approve address is undefined"); } @@ -542,7 +577,7 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { const reqApproveEthereumAddress = await dispatcher?.GetApproveAddress({ networkId: ethereumEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveEthereumAddress?.approveAddress).toBeDefined(); @@ -567,9 +602,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info(res?.statusResponse); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -577,9 +612,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -587,9 +622,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.approveAddress, "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -597,9 +632,9 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Bridge account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), @@ -609,3 +644,328 @@ describe("SATPGateway sending a token from Besu to Ethereum", () => { await gateway.shutdown(); }); }); + +describe("SATPGateway sending a non fungible token from Ethereum to Besu", () => { + jest.setTimeout(TIMEOUT); + + it("should mint a non fungible token and transfer it", async () => { + await ethereumEnv.mintTokens("1001", TokenTypeMain.NONSTANDARD_NONFUNGIBLE); + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + //setup satp gateway + const factoryOptions: IPluginFactoryOptions = { + pluginImportType: PluginImportType.Local, + }; + const factory = new PluginFactorySATPGateway(factoryOptions); + + const gatewayIdentity = { + id: "mockID", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + proofID: "mockProofID10", + address: "http://localhost" as Address, + } as GatewayIdentity; + + const migrationSource = await createMigrationSource(); + knexLocalClient = knex({ + ...knexLocalInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + knexSourceRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + const besuNetworkOptions = besuEnv.createBesuConfig(); + const ethereumNetworkOptions = ethereumEnv.createEthereumConfig(); + + const ontologiesPath = path.join(__dirname, "../../../ontologies"); + + const options: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity, + ccConfig: { + bridgeConfig: [besuNetworkOptions, ethereumNetworkOptions], + }, + localRepository: knexLocalInstance.default, + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ plugins: [] }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + gateway = await factory.create(options); + expect(gateway).toBeInstanceOf(SATPGateway); + + const identity = gateway.Identity; + // default servers + expect(identity.gatewayServerPort).toBe(3010); + expect(identity.gatewayClientPort).toBe(3011); + expect(identity.address).toBe("http://localhost"); + await gateway.startup(); + + const dispatcher = gateway.BLODispatcherInstance; + + expect(dispatcher).toBeTruthy(); + + const reqApproveBesuAddress = await dispatcher?.GetApproveAddress({ + networkId: besuEnv.network, + tokenType: TokenType.Nonfungible, + }); + expect(reqApproveBesuAddress?.approveAddress).toBeDefined(); + if (!reqApproveBesuAddress?.approveAddress) { + throw new Error("Approve address is undefined"); + } + await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); + + const reqApproveEthereumAddress = await dispatcher?.GetApproveAddress({ + networkId: ethereumEnv.network, + tokenType: TokenType.Nonfungible, + }); + expect(reqApproveEthereumAddress?.approveAddress).toBeDefined(); + if (!reqApproveEthereumAddress?.approveAddress) { + throw new Error("Approve address is undefined"); + } + await ethereumEnv.giveRoleToBridge( + reqApproveEthereumAddress?.approveAddress, + ); + + if (reqApproveEthereumAddress?.approveAddress) { + await ethereumEnv.approveAssets( + reqApproveEthereumAddress.approveAddress, + "1001", + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + } else { + throw new Error("Approve address is undefined"); + } + + const req = getTransactRequest( + "mockContext", + ethereumEnv, + besuEnv, + "1001", + "1001", + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + + const res = await dispatcher?.Transact(req); + log.info(res?.statusResponse); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Owner account"); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + reqApproveBesuAddress?.approveAddress, + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Wrapper account"); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + reqApproveEthereumAddress?.approveAddress, + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Bridge account"); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly to the Owner account"); + + await gateway.shutdown(); + }); +}); + +describe("SATPGateway sending a non fungible token from Besu back to Ethereum", () => { + jest.setTimeout(TIMEOUT); + it("should realize a transfer", async () => { + const factoryOptions: IPluginFactoryOptions = { + pluginImportType: PluginImportType.Local, + }; + const factory = new PluginFactorySATPGateway(factoryOptions); + + const gatewayIdentity = { + id: "mockID", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + proofID: "mockProofID10", + address: "http://localhost" as Address, + } as GatewayIdentity; + + const migrationSource = await createMigrationSource(); + knexLocalClient = knex({ + ...knexLocalInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + knexSourceRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + const besuNetworkOptions = besuEnv.createBesuConfig(); + const ethereumNetworkOptions = ethereumEnv.createEthereumConfig(); + + const ontologiesPath = path.join(__dirname, "../../../ontologies"); + + const options: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity, + ccConfig: { + bridgeConfig: [besuNetworkOptions, ethereumNetworkOptions], + }, + localRepository: knexLocalInstance.default, + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ plugins: [] }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + gateway = await factory.create(options); + expect(gateway).toBeInstanceOf(SATPGateway); + + const identity = gateway.Identity; + // default servers + expect(identity.gatewayServerPort).toBe(3010); + expect(identity.gatewayClientPort).toBe(3011); + expect(identity.address).toBe("http://localhost"); + await gateway.startup(); + + const dispatcher = gateway.BLODispatcherInstance; + + expect(dispatcher).toBeTruthy(); + + const reqApproveBesuAddress = await dispatcher?.GetApproveAddress({ + networkId: besuEnv.network, + tokenType: TokenType.Nonfungible, + }); + expect(reqApproveBesuAddress?.approveAddress).toBeDefined(); + if (!reqApproveBesuAddress?.approveAddress) { + throw new Error("Approve address is undefined"); + } + await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); + + if (reqApproveBesuAddress?.approveAddress) { + await besuEnv.approveAssets( + reqApproveBesuAddress.approveAddress, + "1001", + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + } else { + throw new Error("Approve address is undefined"); + } + + const reqApproveEthereumAddress = await dispatcher?.GetApproveAddress({ + networkId: ethereumEnv.network, + tokenType: TokenType.Nonfungible, + }); + expect(reqApproveEthereumAddress?.approveAddress).toBeDefined(); + if (!reqApproveEthereumAddress?.approveAddress) { + throw new Error("Approve address is undefined"); + } + await ethereumEnv.giveRoleToBridge( + reqApproveEthereumAddress?.approveAddress, + ); + + const req = getTransactRequest( + "mockContext", + besuEnv, + ethereumEnv, + "1001", + "1001", + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + + const res2 = await dispatcher?.Transact(req); + log.info(res2?.statusResponse); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Owner account"); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + reqApproveBesuAddress?.approveAddress, + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Wrapper account"); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + reqApproveEthereumAddress?.approveAddress, + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Bridge account"); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly to the Owner account"); + + await gateway.shutdown(); + }); +}); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-2-gateway-with-api-server.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-2-gateway-with-api-server.test.ts index 78addf873b..8a699da949 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-2-gateway-with-api-server.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-2-gateway-with-api-server.test.ts @@ -44,6 +44,9 @@ import { createMigrationSource } from "../../../../main/typescript/database/knex import { knexRemoteInstance } from "../../../../main/typescript/database/knexfile-remote"; import { knexLocalInstance } from "../../../../main/typescript/database/knexfile"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { TokenType as TokenTypeMain } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const logLevel: LogLevelDesc = "DEBUG"; const log = LoggerProvider.getOrCreate({ @@ -68,6 +71,7 @@ const TIMEOUT = 900000; // 15 minutes afterAll(async () => { await besuEnv.tearDown(); await fabricEnv.tearDown(); + await ethereumEnv.tearDown(); await pruneDockerAllIfGithubAction({ logLevel }) .then(() => { @@ -121,28 +125,52 @@ beforeAll(async () => { { const erc20TokenContract = "SATPContract"; - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + const erc721TokenContract = "SATPNonFungibleContract"; + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + { + assetType: SupportedBesuContractTypes.NONFUNGIBLE, + contractName: erc721TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); } { const erc20TokenContract = "SATPContract"; - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + const erc721TokenContract = "SATPNonFungibleContract"; + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + { + assetType: SupportedEthereumContractTypes.NONFUNGIBLE, + contractName: erc721TokenContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); } - await besuEnv.mintTokens("100"); + await besuEnv.mintTokens("100", TokenTypeMain.NONSTANDARD_FUNGIBLE); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -298,7 +326,7 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { const reqApproveBesuAddress = await approveAddressApi1.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -310,9 +338,10 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -321,7 +350,7 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { const reqApproveFabricAddress = await approveAddressApi2.getApproveAddress( fabricEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveFabricAddress?.data.approveAddress).toBeDefined(); @@ -350,9 +379,9 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { expect(res?.status).toBe(200); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -360,9 +389,9 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { log.info("Amount was transferred correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -538,7 +567,7 @@ describe("2 SATPGateways sending a token from Fabric to Besu", () => { const reqApproveFabricAddress = await approveAddressApi1.getApproveAddress( fabricEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveFabricAddress?.data.approveAddress).toBeDefined(); @@ -559,7 +588,7 @@ describe("2 SATPGateways sending a token from Fabric to Besu", () => { const reqApproveBesuAddress = await approveAddressApi2.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveBesuAddress?.data.approveAddress).toBeDefined(); @@ -606,9 +635,9 @@ describe("2 SATPGateways sending a token from Fabric to Besu", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -616,9 +645,9 @@ describe("2 SATPGateways sending a token from Fabric to Besu", () => { log.info("Amount was transfer correctly to the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -775,7 +804,7 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { const reqApproveBesuAddress = await approveAddressApi1.getApproveAddress( besuEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); if (!reqApproveBesuAddress?.data.approveAddress) { @@ -787,9 +816,10 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); if (reqApproveBesuAddress?.data.approveAddress) { - await besuEnv.approveAmount( + await besuEnv.approveAssets( reqApproveBesuAddress.data.approveAddress, "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, ); } else { throw new Error("Approve address is undefined"); @@ -800,7 +830,7 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { const reqApproveEthereumAddress = await approveAddressApi2.getApproveAddress( ethereumEnv.network, - TokenType.NonstandardFungible, + TokenType.Fungible, ); expect(reqApproveEthereumAddress?.data.approveAddress).toBeDefined(); @@ -871,9 +901,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { expect(statusResponse?.data.stage).toBe("SATP_STAGE_3"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -881,9 +911,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.data.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -891,9 +921,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.data.approveAddress, "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -901,9 +931,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Bridge account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), @@ -927,3 +957,330 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { expect(json_parsed.id).toBe(res.data.sessionID); }); }); +describe("2 SATPGateways sending a non fungible token from Besu to Ethereum", () => { + jest.setTimeout(TIMEOUT); + const tokenUniqueDescriptor = "1001"; + it("should mint a non fungible token to the owner account", async () => { + await besuEnv.mintTokens( + tokenUniqueDescriptor, + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + }); + it("should realize a transfer", async () => { + //setup satp gateway + const factoryOptions: IPluginFactoryOptions = { + pluginImportType: PluginImportType.Local, + }; + const factory = new PluginFactorySATPGateway(factoryOptions); + + const gatewayIdentity1 = { + id: "mockID-1", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + connectedDLTs: [ + { + id: BesuTestEnvironment.BESU_NETWORK_ID, + ledgerType: LedgerType.Besu2X, + }, + ], + proofID: "mockProofID10", + address: "http://localhost" as Address, + gatewayOapiPort: 4010, + gatewayServerPort: 3010, + gatewayClientPort: 3011, + } as GatewayIdentity; + + const gatewayIdentity2 = { + id: "mockID-2", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + connectedDLTs: [ + { + id: EthereumTestEnvironment.ETH_NETWORK_ID, + ledgerType: LedgerType.Ethereum, + }, + ], + proofID: "mockProofID11", + address: "http://localhost" as Address, + gatewayOapiPort: 4011, + gatewayServerPort: 3012, + gatewayClientPort: 3013, + } as GatewayIdentity; + + const migrationSource = await createMigrationSource(); + knexLocalClient = knex({ + ...knexLocalInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + + knexSourceRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + knexTargetRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + const besuNetworkOptions = besuEnv.createBesuConfig(); + const ethereumNetworkOptions = ethereumEnv.createEthereumConfig(); + + const ontologiesPath = path.join(__dirname, "../../../ontologies"); + + const options1: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity1, + ccConfig: { + bridgeConfig: [besuNetworkOptions], + }, + counterPartyGateways: [gatewayIdentity2], + localRepository: knexLocalInstance.default, + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ plugins: [] }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + + const options2: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity2, + ccConfig: { + bridgeConfig: [ethereumNetworkOptions], + }, + counterPartyGateways: [gatewayIdentity1], + localRepository: knexLocalInstance.default, + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ plugins: [] }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + + gateway1 = await factory.create(options1); + expect(gateway1).toBeInstanceOf(SATPGateway); + await gateway1.onPluginInit(); + + gateway2 = await factory.create(options2); + expect(gateway2).toBeInstanceOf(SATPGateway); + await gateway2.onPluginInit(); + + const identity1 = gateway1.Identity; + expect(identity1.gatewayServerPort).toBe(3010); + expect(identity1.gatewayClientPort).toBe(3011); + expect(identity1.address).toBe("http://localhost"); + + const identity2 = gateway2.Identity; + expect(identity2.gatewayServerPort).toBe(3012); + expect(identity2.gatewayClientPort).toBe(3013); + expect(identity2.address).toBe("http://localhost"); + + const apiServer1 = await gateway1.getOrCreateHttpServer(); + expect(apiServer1).toBeInstanceOf(ApiServer); + + const apiServer2 = await gateway2.getOrCreateHttpServer(); + expect(apiServer2).toBeInstanceOf(ApiServer); + + const approveAddressApi1 = new GetApproveAddressApi( + new Configuration({ basePath: gateway1.getAddressOApiAddress() }), + ); + + const approveAddressApi2 = new GetApproveAddressApi( + new Configuration({ basePath: gateway2.getAddressOApiAddress() }), + ); + + const reqApproveBesuAddress = await approveAddressApi1.getApproveAddress( + besuEnv.network, + TokenType.Nonfungible, + ); + + if (!reqApproveBesuAddress?.data.approveAddress) { + throw new Error("Approve address is undefined"); + } + + expect(reqApproveBesuAddress?.data.approveAddress).toBeDefined(); + + await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.data.approveAddress); + + if (reqApproveBesuAddress?.data.approveAddress) { + await besuEnv.approveAssets( + reqApproveBesuAddress.data.approveAddress, + tokenUniqueDescriptor, + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + } else { + throw new Error("Approve address is undefined"); + } + + log.debug( + `Approved token ${tokenUniqueDescriptor} to the Besu Bridge Address`, + ); + + const reqApproveEthereumAddress = + await approveAddressApi2.getApproveAddress( + ethereumEnv.network, + TokenType.Nonfungible, + ); + + expect(reqApproveEthereumAddress?.data.approveAddress).toBeDefined(); + + if (!reqApproveEthereumAddress?.data.approveAddress) { + throw new Error("Approve address is undefined"); + } + + await ethereumEnv.giveRoleToBridge( + reqApproveEthereumAddress?.data.approveAddress, + ); + + const satpApi1 = new TransactionApi( + new Configuration({ basePath: gateway1.getAddressOApiAddress() }), + ); + const adminApi = new AdminApi( + new Configuration({ basePath: gateway1.getAddressOApiAddress() }), + ); + + const integrations1 = await satpApi1.getIntegrations(); + expect(integrations1?.data.integrations).toBeDefined(); + expect(integrations1?.data.integrations.length).toEqual(1); + + const integration = integrations1?.data.integrations[0]; + expect(integration).toBeDefined(); + expect(integration.environment).toBe("testnet"); + expect(integration.id).toBe("BesuLedgerTestNetwork"); + expect(integration.name).toBe("Hyperledger Besu"); + expect(integration.type).toBe("BESU_2X"); + log.info("Integration 1 is correct"); + + const satpApi2 = new TransactionApi( + new Configuration({ + basePath: gateway2.getAddressOApiAddress(), + }), + ); + + const integrations2 = await satpApi2.getIntegrations(); + expect(integrations2?.data.integrations).toBeDefined(); + expect(integrations2?.data.integrations.length).toEqual(1); + + const integration2 = integrations2?.data.integrations[0]; + expect(integration2).toBeDefined(); + expect(integration2.environment).toBe("testnet"); + expect(integration2.id).toBe("EthereumLedgerTestNetwork"); + expect(integration2.name).toBe("Ethereum"); + expect(integration2.type).toBe("ETHEREUM"); + log.info("Integration 2 is correct"); + + const req = getTransactRequest( + "mockContext", + besuEnv, + ethereumEnv, + tokenUniqueDescriptor, + tokenUniqueDescriptor, + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + + const res = await satpApi1?.transact(req); + log.info(res?.status); + log.info(res.data.statusResponse); + expect(res?.status).toBe(200); + + const statusResponse = await adminApi.getStatus(res.data.sessionID); + + expect(statusResponse?.data.startTime).toBeDefined(); + expect(statusResponse?.data.status).toBe("DONE"); + expect(statusResponse?.data.substatus).toBe("COMPLETED"); + expect(statusResponse?.data.stage).toBe("SATP_STAGE_3"); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non fungible token was transferred correctly from the Owner account at Besu", + ); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + reqApproveBesuAddress?.data.approveAddress, + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non fungible token was transferred correctly from the Wrapper account at Besu", + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + reqApproveEthereumAddress?.data.approveAddress, + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non fungible token was transferred correctly from the Bridge account at Ethereum", + ); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info( + "Non fungible token was transferred correctly to the Owner account at Ethereum", + ); + + // check audit endpoint and get audit data + const auditResponse = await adminApi.performAudit(0, Date.now()); + + expect(auditResponse?.data.sessions).toBeDefined(); + expect(auditResponse?.data.sessions?.length).toEqual(1); + + log.info( + `Audit response: ${JSON.stringify(auditResponse?.data.sessions?.[0])}`, + ); + + const json_parsed = JSON.parse( + auditResponse?.data.sessions?.[0] || "{}", + ) as any; + expect(json_parsed).toBeDefined(); + expect(json_parsed.id).toBe(res.data.sessionID); + }); +}); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-2-gateways.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-2-gateways.test.ts index 3038d2cc0b..444d229d39 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-2-gateways.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/gateway/satp-e2e-transfer-2-gateways.test.ts @@ -40,6 +40,10 @@ import { createMigrationSource } from "../../../../main/typescript/database/knex import { knexRemoteInstance } from "../../../../main/typescript/database/knexfile-remote"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { TokenType as TokenTypeMain } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; + const logLevel: LogLevelDesc = "DEBUG"; const log = LoggerProvider.getOrCreate({ level: logLevel, @@ -84,6 +88,7 @@ afterAll(async () => { await gateway2.shutdown(); await besuEnv.tearDown(); await fabricEnv.tearDown(); + await ethereumEnv.tearDown(); await pruneDockerAllIfGithubAction({ logLevel }) .then(() => { @@ -119,20 +124,44 @@ beforeAll(async () => { { const erc20TokenContract = "SATPContract"; - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + const erc721TokenContract = "SATPNonFungibleContract"; + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + { + assetType: SupportedBesuContractTypes.NONFUNGIBLE, + contractName: erc721TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); } { const erc20TokenContract = "SATPContract"; - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + const erc721TokenContract = "SATPNonFungibleContract"; + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + { + assetType: SupportedEthereumContractTypes.NONFUNGIBLE, + contractName: erc721TokenContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); } @@ -141,11 +170,11 @@ beforeAll(async () => { describe("2 SATPGateways sending a token from Besu to Fabric", () => { jest.setTimeout(TIMEOUT); it("should mint 100 tokens to the owner account", async () => { - await besuEnv.mintTokens("100"); + await besuEnv.mintTokens("100", TokenTypeMain.NONSTANDARD_FUNGIBLE); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -280,7 +309,7 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { const reqApproveBesuAddress = await dispatcher1?.GetApproveAddress({ networkId: besuEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveBesuAddress?.approveAddress).toBeDefined(); @@ -291,7 +320,11 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); if (reqApproveBesuAddress?.approveAddress) { - await besuEnv.approveAmount(reqApproveBesuAddress.approveAddress, "100"); + await besuEnv.approveAssets( + reqApproveBesuAddress.approveAddress, + "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, + ); } else { throw new Error("Approve address is undefined"); } @@ -299,7 +332,7 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { const reqApproveFabricAddress = await dispatcher2?.GetApproveAddress({ networkId: fabricEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveFabricAddress?.approveAddress).toBeDefined(); @@ -321,9 +354,9 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { log.info(res?.statusResponse); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -331,9 +364,9 @@ describe("2 SATPGateways sending a token from Besu to Fabric", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -495,7 +528,7 @@ describe("2 SATPGateways sending a token from Fabric to Besu", () => { const reqApproveFabricAddress = await dispatcher1?.GetApproveAddress({ networkId: fabricEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveFabricAddress?.approveAddress).toBeDefined(); @@ -515,7 +548,7 @@ describe("2 SATPGateways sending a token from Fabric to Besu", () => { const reqApproveBesuAddress = await dispatcher2?.GetApproveAddress({ networkId: besuEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveBesuAddress?.approveAddress).toBeDefined(); @@ -556,9 +589,9 @@ describe("2 SATPGateways sending a token from Fabric to Besu", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "100", besuEnv.getTestOwnerSigningCredential(), @@ -566,9 +599,9 @@ describe("2 SATPGateways sending a token from Fabric to Besu", () => { log.info("Amount was transfer correctly to the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -710,7 +743,7 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { const reqApproveBesuAddress = await dispatcher1?.GetApproveAddress({ networkId: besuEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); if (!reqApproveBesuAddress?.approveAddress) { @@ -722,7 +755,11 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); if (reqApproveBesuAddress?.approveAddress) { - await besuEnv.approveAmount(reqApproveBesuAddress.approveAddress, "100"); + await besuEnv.approveAssets( + reqApproveBesuAddress.approveAddress, + "100", + TokenTypeMain.NONSTANDARD_FUNGIBLE, + ); } else { throw new Error("Approve address is undefined"); } @@ -731,7 +768,7 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { const reqApproveEthereumAddress = await dispatcher2?.GetApproveAddress({ networkId: ethereumEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveEthereumAddress?.approveAddress).toBeDefined(); @@ -756,9 +793,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info(res?.statusResponse); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), "0", besuEnv.getTestOwnerSigningCredential(), @@ -766,9 +803,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Owner account"); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), reqApproveBesuAddress?.approveAddress, "0", besuEnv.getTestOwnerSigningCredential(), @@ -776,9 +813,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly to the Wrapper account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), reqApproveEthereumAddress?.approveAddress, "0", ethereumEnv.getTestOwnerSigningCredential(), @@ -786,9 +823,9 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { log.info("Amount was transfer correctly from the Bridge account"); await ethereumEnv.checkBalance( - ethereumEnv.getTestContractName(), - ethereumEnv.getTestContractAddress(), - ethereumEnv.getTestContractAbi(), + ethereumEnv.getTestFungibleContractName(), + ethereumEnv.getTestFungibleContractAddress(), + ethereumEnv.getTestFungibleContractAbi(), ethereumEnv.getTestOwnerAccount(), "100", ethereumEnv.getTestOwnerSigningCredential(), @@ -798,3 +835,458 @@ describe("2 SATPGateways sending a token from Besu to Ethereum", () => { await shutdownGateways(); }); }); + +describe("2 SATPGateways sending a non fungible token from Besu to Ethereum", () => { + jest.setTimeout(TIMEOUT); + it("should mint a non fungible token on Besu and transfer it to Ethereum", async () => { + await besuEnv.mintTokens("1001", TokenTypeMain.NONSTANDARD_NONFUNGIBLE); + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + + //setup satp gateway + const factoryOptions: IPluginFactoryOptions = { + pluginImportType: PluginImportType.Local, + }; + const factory = new PluginFactorySATPGateway(factoryOptions); + + const gatewayIdentity1 = { + id: "mockID-1", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + connectedDLTs: [ + { + id: BesuTestEnvironment.BESU_NETWORK_ID, + ledgerType: LedgerType.Besu2X, + }, + ], + proofID: "mockProofID10", + address: "http://localhost" as Address, + gatewayOapiPort: 4010, + gatewayServerPort: 3010, + gatewayClientPort: 3011, + } as GatewayIdentity; + + const gatewayIdentity2 = { + id: "mockID-2", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + connectedDLTs: [ + { + id: EthereumTestEnvironment.ETH_NETWORK_ID, + ledgerType: LedgerType.Ethereum, + }, + ], + proofID: "mockProofID11", + address: "http://localhost" as Address, + gatewayOapiPort: 4011, + gatewayServerPort: 3012, + gatewayClientPort: 3013, + } as GatewayIdentity; + + const migrationSource = await createMigrationSource(); + knexSourceRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + knexTargetRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + const besuNetworkOptions = besuEnv.createBesuConfig(); + const ethereumNetworkOptions = ethereumEnv.createEthereumConfig(); + + const ontologiesPath = path.join(__dirname, "../../../ontologies"); + + const options1: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity1, + ccConfig: { + bridgeConfig: [besuNetworkOptions], + }, + counterPartyGateways: [gatewayIdentity2], + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ plugins: [] }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + + const options2: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity2, + ccConfig: { + bridgeConfig: [ethereumNetworkOptions], + }, + counterPartyGateways: [gatewayIdentity1], + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ plugins: [] }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + + gateway1 = await factory.create(options1); + expect(gateway1).toBeInstanceOf(SATPGateway); + + gateway2 = await factory.create(options2); + expect(gateway2).toBeInstanceOf(SATPGateway); + + const identity1 = gateway1.Identity; + expect(identity1.gatewayServerPort).toBe(3010); + expect(identity1.gatewayClientPort).toBe(3011); + expect(identity1.address).toBe("http://localhost"); + await gateway1.startup(); + + const identity2 = gateway2.Identity; + expect(identity2.gatewayServerPort).toBe(3012); + expect(identity2.gatewayClientPort).toBe(3013); + expect(identity2.address).toBe("http://localhost"); + await gateway2.startup(); + + const dispatcher1 = gateway1.BLODispatcherInstance; + const dispatcher2 = gateway2.BLODispatcherInstance; + + expect(dispatcher1).toBeTruthy(); + expect(dispatcher2).toBeTruthy(); + + const reqApproveBesuAddress = await dispatcher1?.GetApproveAddress({ + networkId: besuEnv.network, + tokenType: TokenType.Nonfungible, + }); + + if (!reqApproveBesuAddress?.approveAddress) { + throw new Error("Approve address is undefined"); + } + + expect(reqApproveBesuAddress?.approveAddress).toBeDefined(); + + await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); + + if (reqApproveBesuAddress?.approveAddress) { + await besuEnv.approveAssets( + reqApproveBesuAddress.approveAddress, + "1001", + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + } else { + throw new Error("Approve address is undefined"); + } + + const reqApproveEthereumAddress = await dispatcher2?.GetApproveAddress({ + networkId: ethereumEnv.network, + tokenType: TokenType.Nonfungible, + }); + + expect(reqApproveEthereumAddress?.approveAddress).toBeDefined(); + + if (!reqApproveEthereumAddress?.approveAddress) { + throw new Error("Approve address is undefined"); + } + + await ethereumEnv.giveRoleToBridge( + reqApproveEthereumAddress?.approveAddress, + ); + + const req = getTransactRequest( + "mockContext", + besuEnv, + ethereumEnv, + "1001", + "1001", + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + + const res = await dispatcher1?.Transact(req); + log.info(res?.statusResponse); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Owner account"); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + reqApproveBesuAddress?.approveAddress, + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Wrapper account"); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + reqApproveEthereumAddress?.approveAddress, + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transfer correctly from the Bridge account"); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "1", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly to the Owner account"); + + await shutdownGateways(); + }); +}); + +describe("2 SATPGateways sending a non fungible token from Ethereum to Besu", () => { + it("should realize a transfer to Besu", async () => { + //setup satp gateway + const factoryOptions: IPluginFactoryOptions = { + pluginImportType: PluginImportType.Local, + }; + const factory = new PluginFactorySATPGateway(factoryOptions); + + const gatewayIdentity1 = { + id: "mockID-1", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + connectedDLTs: [ + { + id: EthereumTestEnvironment.ETH_NETWORK_ID, + ledgerType: LedgerType.Ethereum, + }, + ], + proofID: "mockProofID10", + address: "http://localhost" as Address, + gatewayOapiPort: 4010, + gatewayServerPort: 3010, + gatewayClientPort: 3011, + } as GatewayIdentity; + + const gatewayIdentity2 = { + id: "mockID-2", + name: "CustomGateway", + version: [ + { + Core: SATP_CORE_VERSION, + Architecture: SATP_ARCHITECTURE_VERSION, + Crash: SATP_CRASH_VERSION, + }, + ], + connectedDLTs: [ + { + id: BesuTestEnvironment.BESU_NETWORK_ID, + ledgerType: LedgerType.Besu2X, + }, + ], + proofID: "mockProofID11", + address: "http://localhost" as Address, + gatewayOapiPort: 4011, + gatewayServerPort: 3012, + gatewayClientPort: 3013, + } as GatewayIdentity; + + const migrationSource = await createMigrationSource(); + knexSourceRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + knexTargetRemoteClient = knex({ + ...knexRemoteInstance.default, + migrations: { + migrationSource: migrationSource, + }, + }); + await knexSourceRemoteClient.migrate.latest(); + + const besuNetworkOptions = besuEnv.createBesuConfig(); + const ethereumNetworkOptions = ethereumEnv.createEthereumConfig(); + + const ontologiesPath = path.join(__dirname, "../../../ontologies"); + + const options1: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity1, + ccConfig: { + bridgeConfig: [ethereumNetworkOptions], + }, + counterPartyGateways: [gatewayIdentity2], + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ plugins: [] }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + + const options2: SATPGatewayConfig = { + instanceId: uuidv4(), + logLevel: "DEBUG", + gid: gatewayIdentity2, + ccConfig: { + bridgeConfig: [besuNetworkOptions], + }, + counterPartyGateways: [gatewayIdentity1], + remoteRepository: knexRemoteInstance.default, + pluginRegistry: new PluginRegistry({ plugins: [] }), + ontologyPath: ontologiesPath, + monitorService: monitorService, + }; + + gateway1 = await factory.create(options1); + expect(gateway1).toBeInstanceOf(SATPGateway); + + gateway2 = await factory.create(options2); + expect(gateway2).toBeInstanceOf(SATPGateway); + + const identity1 = gateway1.Identity; + expect(identity1.gatewayServerPort).toBe(3010); + expect(identity1.gatewayClientPort).toBe(3011); + expect(identity1.address).toBe("http://localhost"); + await gateway1.startup(); + + const identity2 = gateway2.Identity; + expect(identity2.gatewayServerPort).toBe(3012); + expect(identity2.gatewayClientPort).toBe(3013); + expect(identity2.address).toBe("http://localhost"); + await gateway2.startup(); + + const dispatcher1 = gateway1.BLODispatcherInstance; + const dispatcher2 = gateway2.BLODispatcherInstance; + + expect(dispatcher1).toBeTruthy(); + expect(dispatcher2).toBeTruthy(); + + const reqApproveBesuAddress = await dispatcher2?.GetApproveAddress({ + networkId: besuEnv.network, + tokenType: TokenType.Nonfungible, + }); + + if (!reqApproveBesuAddress?.approveAddress) { + throw new Error("Approve address is undefined"); + } + + expect(reqApproveBesuAddress?.approveAddress).toBeDefined(); + + await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); + + const reqApproveEthereumAddress = await dispatcher1?.GetApproveAddress({ + networkId: ethereumEnv.network, + tokenType: TokenType.Nonfungible, + }); + + expect(reqApproveEthereumAddress?.approveAddress).toBeDefined(); + + if (!reqApproveEthereumAddress?.approveAddress) { + throw new Error("Approve address is undefined"); + } + + if (reqApproveEthereumAddress?.approveAddress) { + await ethereumEnv.approveAssets( + reqApproveEthereumAddress.approveAddress, + "1001", + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + } else { + throw new Error("Approve address is undefined"); + } + + await ethereumEnv.giveRoleToBridge( + reqApproveEthereumAddress?.approveAddress, + ); + + const req = getTransactRequest( + "mockContext", + ethereumEnv, + besuEnv, + "1001", + "1001", + TokenTypeMain.NONSTANDARD_NONFUNGIBLE, + ); + + const res = await dispatcher1?.Transact(req); + log.info(res?.statusResponse); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + ethereumEnv.getTestOwnerAccount(), + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Owner account"); + + await ethereumEnv.checkBalance( + ethereumEnv.getTestNonFungibleContractName(), + ethereumEnv.getTestNonFungibleContractAddress(), + ethereumEnv.getTestNonFungibleContractAbi(), + reqApproveBesuAddress?.approveAddress, + "0", + ethereumEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly from the Wrapper account"); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + reqApproveEthereumAddress?.approveAddress, + "0", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transfer correctly from the Bridge account"); + + await besuEnv.checkBalance( + besuEnv.getTestNonFungibleContractName(), + besuEnv.getTestNonFungibleContractAddress(), + besuEnv.getTestNonFungibleContractAbi(), + besuEnv.getTestOwnerAccount(), + "1", + besuEnv.getTestOwnerSigningCredential(), + ); + log.info("Token was transferred correctly to the Owner account"); + + await shutdownGateways(); + }); +}); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/monitoring/functionality.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/monitoring/functionality.test.ts index ce5bf2c479..035aa0d7f4 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/monitoring/functionality.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/monitoring/functionality.test.ts @@ -41,6 +41,9 @@ import { createMigrationSource } from "../../../../main/typescript/database/knex import { knexRemoteInstance } from "../../../../main/typescript/database/knexfile-remote"; import { knexLocalInstance } from "../../../../main/typescript/database/knexfile"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { TokenType as TokenTypeMain } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const PROMETHEUS_URL = "http://localhost:9090"; const LOKI_URL = "http://localhost:3100"; @@ -136,11 +139,11 @@ async function executeTransfer( transfers = 1, amountPerTransfer = "100", ) { - await besuEnv.mintTokens(amount); + await besuEnv.mintTokens(amount, TokenTypeMain.NONSTANDARD_FUNGIBLE); await besuEnv.checkBalance( - besuEnv.getTestContractName(), - besuEnv.getTestContractAddress(), - besuEnv.getTestContractAbi(), + besuEnv.getTestFungibleContractName(), + besuEnv.getTestFungibleContractAddress(), + besuEnv.getTestFungibleContractAbi(), besuEnv.getTestOwnerAccount(), amount, besuEnv.getTestOwnerSigningCredential(), @@ -213,7 +216,7 @@ async function executeTransfer( expect(dispatcher).toBeTruthy(); const reqApproveBesuAddress = await dispatcher?.GetApproveAddress({ networkId: besuEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); if (!reqApproveBesuAddress?.approveAddress) { @@ -225,7 +228,11 @@ async function executeTransfer( await besuEnv.giveRoleToBridge(reqApproveBesuAddress?.approveAddress); if (reqApproveBesuAddress?.approveAddress) { - await besuEnv.approveAmount(reqApproveBesuAddress.approveAddress, amount); + await besuEnv.approveAssets( + reqApproveBesuAddress.approveAddress, + amount, + TokenTypeMain.NONSTANDARD_FUNGIBLE, + ); } else { throw new Error("Approve address is undefined"); } @@ -234,7 +241,7 @@ async function executeTransfer( const reqApproveEthereumAddress = await dispatcher?.GetApproveAddress({ networkId: ethereumEnv.network, - tokenType: TokenType.NonstandardFungible, + tokenType: TokenType.Fungible, }); expect(reqApproveEthereumAddress?.approveAddress).toBeDefined(); @@ -271,17 +278,31 @@ beforeAll(async () => { // Start environments const erc20TokenContract = "SATPContract"; - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Ethereum Ledger started successfully"); await ethereumEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); console.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.BUNGEE); // Start monitoring system diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/oracle/oracle-execute-api-server.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/oracle/oracle-execute-api-server.test.ts index 08ea721ef3..b47dce25e9 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/oracle/oracle-execute-api-server.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/oracle/oracle-execute-api-server.test.ts @@ -41,6 +41,8 @@ import OracleTestContract from "../../../solidity/generated/OracleTestContract.s import { keccak256 } from "web3-utils"; import { ApiServer } from "@hyperledger/cactus-cmd-api-server"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const logLevel: LogLevelDesc = "DEBUG"; const log = LoggerProvider.getOrCreate({ @@ -75,16 +77,30 @@ beforeAll(async () => { const businessLogicContract = "OracleTestContract"; try { - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: businessLogicContract, - logLevel, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedBesuContractTypes.ORACLE, + contractName: businessLogicContract, + }, + ], + ); log.info("Besu Ledger started successfully"); - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: businessLogicContract, - logLevel, - }); + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.ORACLE, + contractName: businessLogicContract, + }, + ], + ); fabricEnv = await FabricTestEnvironment.setupTestEnvironment({ contractName: businessLogicContract, @@ -190,7 +206,7 @@ describe("Oracle executing READ, UPDATE, and READ_AND_UPDATE tasks successfully" let response = await oracleApi.executeOracleTask({ destinationNetworkId: ethereumEnv.network, destinationContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestOracleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -220,7 +236,7 @@ describe("Oracle executing READ, UPDATE, and READ_AND_UPDATE tasks successfully" let response = await oracleApi.executeOracleTask({ destinationNetworkId: ethereumEnv.network, destinationContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestOracleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -274,7 +290,7 @@ describe("Oracle executing READ, UPDATE, and READ_AND_UPDATE tasks successfully" let response = await oracleApi.executeOracleTask({ sourceNetworkId: ethereumEnv.network, sourceContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestOracleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -326,7 +342,7 @@ describe("Oracle executing READ, UPDATE, and READ_AND_UPDATE tasks successfully" const response = await oracleApi.executeOracleTask({ sourceNetworkId: ethereumEnv.network, sourceContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestOracleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -335,7 +351,7 @@ describe("Oracle executing READ, UPDATE, and READ_AND_UPDATE tasks successfully" }, destinationNetworkId: besuEnv.network, destinationContract: { - contractName: besuEnv.getTestContractName(), + contractName: besuEnv.getTestOracleContractName(), contractAddress: besuContractAddress, contractAbi: OracleTestContract.abi, methodName: "setData", diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/oracle/oracle-register-api-server.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/oracle/oracle-register-api-server.test.ts index 442ecd14f4..014b024765 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/oracle/oracle-register-api-server.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/oracle/oracle-register-api-server.test.ts @@ -44,6 +44,8 @@ import { keccak256 } from "web3-utils"; import { BLODispatcher } from "../../../../main/typescript/api1/dispatcher"; import { ApiServer } from "@hyperledger/cactus-cmd-api-server"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; const logLevel: LogLevelDesc = "DEBUG"; const log = LoggerProvider.getOrCreate({ @@ -79,16 +81,30 @@ beforeAll(async () => { const businessLogicContract = "OracleTestContract"; try { - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: businessLogicContract, - logLevel, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedBesuContractTypes.ORACLE, + contractName: businessLogicContract, + }, + ], + ); log.info("Besu Ledger started successfully"); - ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment({ - contractName: businessLogicContract, - logLevel, - }); + ethereumEnv = await EthereumTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.ORACLE, + contractName: businessLogicContract, + }, + ], + ); fabricEnv = await FabricTestEnvironment.setupTestEnvironment({ contractName: businessLogicContract, @@ -241,7 +257,7 @@ describe("Oracle registering READ, UPDATE, and READ_AND_UPDATE tasks successfull }, destinationNetworkId: besuEnv.network, destinationContract: { - contractName: besuEnv.getTestContractName(), + contractName: besuEnv.getTestOracleContractName(), contractAddress: besuContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -269,7 +285,7 @@ describe("Oracle registering READ, UPDATE, and READ_AND_UPDATE tasks successfull await oracleApi.executeOracleTask({ destinationNetworkId: ethereumEnv.network, destinationContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestOracleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -284,7 +300,7 @@ describe("Oracle registering READ, UPDATE, and READ_AND_UPDATE tasks successfull await oracleApi.executeOracleTask({ destinationNetworkId: ethereumEnv.network, destinationContract: { - contractName: ethereumEnv.getTestContractName(), + contractName: ethereumEnv.getTestOracleContractName(), contractAddress: ethereumContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -382,7 +398,7 @@ describe("Oracle registering READ, UPDATE, and READ_AND_UPDATE tasks successfull }, destinationNetworkId: besuEnv.network, destinationContract: { - contractName: besuEnv.getTestContractName(), + contractName: besuEnv.getTestOracleContractName(), contractAddress: besuContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -484,7 +500,7 @@ describe("Oracle registering READ, UPDATE, and READ_AND_UPDATE tasks successfull const response = await oracleApi.registerOracleTask({ destinationNetworkId: besuEnv.network, destinationContract: { - contractName: besuEnv.getTestContractName(), + contractName: besuEnv.getTestOracleContractName(), contractAddress: besuContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, @@ -506,7 +522,7 @@ describe("Oracle registering READ, UPDATE, and READ_AND_UPDATE tasks successfull const readNonceTask = await oracleApi.executeOracleTask({ sourceNetworkId: besuEnv.network, sourceContract: { - contractName: besuEnv.getTestContractName(), + contractName: besuEnv.getTestOracleContractName(), contractAddress: besuContractAddress, contractAbi: OracleTestContract.abi, contractBytecode: OracleTestContract.bytecode.object, diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-0.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-0.test.ts index 308ad1b352..dad6c0d4cd 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-0.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-0.test.ts @@ -14,6 +14,7 @@ import { BesuTestEnvironment, FabricTestEnvironment } from "../../test-utils"; import { AssetSchema, ClaimFormat, + ERCTokenStandard, } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; import { v4 as uuidv4 } from "uuid"; import { SATP_VERSION } from "../../../../main/typescript/core/constants"; @@ -52,6 +53,8 @@ import { createMigrationSource } from "../../../../main/typescript/database/knex import { knexLocalInstance } from "../../../../main/typescript/database/knexfile"; import { knexRemoteInstance } from "../../../../main/typescript/database/knexfile-remote"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { SupportedContractTypes as SupportedBesuContractTypes } from "../../environments/ethereum-test-environment"; +import { Amount } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset"; let fabricEnv: FabricTestEnvironment; let besuEnv: BesuTestEnvironment; @@ -190,10 +193,17 @@ beforeAll(async () => { { const erc20TokenContract = "SATPContract"; - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedBesuContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); @@ -206,7 +216,7 @@ beforeAll(async () => { ); besuLeaf = new BesuLeaf( - besuEnv.createBesuLeafConfig("DEBUG"), + besuEnv.createBesuLeafConfig(ontologyManager, "DEBUG"), ontologyManager, monitorService, ); @@ -258,11 +268,12 @@ describe.skip("Rollback Test stage 0", () => { id: besuEnv.defaultAsset.id, referenceId: besuEnv.defaultAsset.referenceId, type: TokenType.NONSTANDARD_FUNGIBLE, - amount: "100", + amount: 100 as Amount, owner: besuEnv.firstHighNetWorthAccount, - contractName: besuEnv.erc20TokenContract, - contractAddress: besuEnv.assetContractAddress!, + contractName: besuEnv.getTestFungibleContractName(), + contractAddress: besuEnv.getTestFungibleContractAddress(), network: besuEnv.network, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC20, }; const besuReceipt = await besuLeaf.wrapAsset(besuAsset); expect(besuReceipt).toBeDefined(); @@ -273,11 +284,12 @@ describe.skip("Rollback Test stage 0", () => { id: fabricEnv.defaultAsset.id, referenceId: fabricEnv.defaultAsset.referenceId, type: TokenType.NONSTANDARD_FUNGIBLE, - amount: "100", + amount: 100 as Amount, owner: fabricEnv.clientId, mspId: "Org1MSP", channelName: fabricEnv.fabricChannelName, contractName: fabricEnv.satpContractName, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC20, }; const fabricReceipt = await fabricLeaf.wrapAsset(fabricAsset); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-2.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-2.test.ts index 7f48e8cddc..bc10afacb1 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-2.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-2.test.ts @@ -19,7 +19,10 @@ import { v4 as uuidv4 } from "uuid"; import { SATP_VERSION } from "../../../../main/typescript/core/constants"; import { SATPSession } from "../../../../main/typescript/core/satp-session"; import { getSatpLogKey } from "../../../../main/typescript/gateway-utils"; -import { TokenType } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; +import { + TokenType, + ERCTokenStandard, +} from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; import { SATPGatewayConfig, PluginFactorySATPGateway, @@ -52,6 +55,8 @@ import { createMigrationSource } from "../../../../main/typescript/database/knex import { knexLocalInstance } from "../../../../main/typescript/database/knexfile"; import { knexRemoteInstance } from "../../../../main/typescript/database/knexfile-remote"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { Amount } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset"; let besuEnv: BesuTestEnvironment; let fabricEnv: FabricTestEnvironment; @@ -202,17 +207,24 @@ beforeAll(async () => { { const erc20TokenContract = "SATPContract"; - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); } besuLeaf = new BesuLeaf( - besuEnv.createBesuLeafConfig("DEBUG"), + besuEnv.createBesuLeafConfig(ontologyManager, "DEBUG"), ontologyManager, monitorService, ); @@ -266,16 +278,20 @@ describe.skip("Rollback Test stage 2", () => { id: besuEnv.defaultAsset.id, referenceId: besuEnv.defaultAsset.referenceId, type: TokenType.NONSTANDARD_FUNGIBLE, - amount: "100", + amount: 100 as Amount, owner: besuEnv.firstHighNetWorthAccount, - contractName: besuEnv.erc20TokenContract, - contractAddress: besuEnv.assetContractAddress!, + contractName: besuEnv.getTestFungibleContractName(), + contractAddress: besuEnv.getTestFungibleContractAddress(), network: besuEnv.network, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC20, }; const besuReceipt = await besuLeaf.wrapAsset(besuAsset); log.info(`Besu Asset Wrapped: ${besuReceipt}`); - const besuReceipt1 = await besuLeaf.lockAsset(besuEnv.defaultAsset.id, 100); + const besuReceipt1 = await besuLeaf.lockAsset( + besuEnv.defaultAsset.id, + 100 as Amount, + ); expect(besuReceipt1).toBeDefined(); log.info(`Besu Asset locked: ${besuReceipt1}`); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-3.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-3.test.ts index ea9feb7d39..f40caf1775 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-3.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/integration/rollback/rollback-stage-3.test.ts @@ -14,6 +14,7 @@ import { BesuTestEnvironment, FabricTestEnvironment } from "../../test-utils"; import { AssetSchema, ClaimFormat, + ERCTokenStandard, TokenType, } from "../../../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; import { v4 as uuidv4 } from "uuid"; @@ -56,6 +57,8 @@ import { createMigrationSource } from "../../../../main/typescript/database/knex import { knexLocalInstance } from "../../../../main/typescript/database/knexfile"; import { knexRemoteInstance } from "../../../../main/typescript/database/knexfile-remote"; import { MonitorService } from "../../../../main/typescript/services/monitoring/monitor"; +import { SupportedContractTypes as SupportedEthereumContractTypes } from "../../environments/ethereum-test-environment"; +import { Amount } from "../../../../main/typescript/cross-chain-mechanisms/bridge/ontology/assets/asset"; let besuEnv: BesuTestEnvironment; let fabricEnv: FabricTestEnvironment; @@ -211,10 +214,17 @@ beforeAll(async () => { { const erc20TokenContract = "SATPContract"; - besuEnv = await BesuTestEnvironment.setupTestEnvironment({ - contractName: erc20TokenContract, - logLevel, - }); + besuEnv = await BesuTestEnvironment.setupTestEnvironment( + { + logLevel, + }, + [ + { + assetType: SupportedEthereumContractTypes.FUNGIBLE, + contractName: erc20TokenContract, + }, + ], + ); log.info("Besu Ledger started successfully"); await besuEnv.deployAndSetupContracts(ClaimFormat.DEFAULT); @@ -227,7 +237,7 @@ beforeAll(async () => { ); besuLeaf = new BesuLeaf( - besuEnv.createBesuLeafConfig("DEBUG"), + besuEnv.createBesuLeafConfig(ontologyManager, "DEBUG"), ontologyManager, monitorService, ); @@ -281,18 +291,22 @@ describe.skip("Rollback Test stage 3", () => { id: besuEnv.defaultAsset.id, referenceId: besuEnv.defaultAsset.referenceId, type: TokenType.NONSTANDARD_FUNGIBLE, - amount: "100", + amount: 100 as Amount, owner: besuEnv.firstHighNetWorthAccount, - contractName: besuEnv.erc20TokenContract, - contractAddress: besuEnv.assetContractAddress!, + contractName: besuEnv.getTestFungibleContractName(), + contractAddress: besuEnv.getTestFungibleContractAddress(), network: besuEnv.network, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC20, }; const besuReceipt = await besuLeaf.wrapAsset(besuAsset); expect(besuReceipt).toBeDefined(); expect(besuReceipt).toBeDefined(); log.info(`Besu Asset Wrapped: ${besuReceipt}`); - const besuReceipt1 = await besuLeaf.lockAsset(besuEnv.defaultAsset.id, 100); + const besuReceipt1 = await besuLeaf.lockAsset( + besuEnv.defaultAsset.id, + 100 as Amount, + ); expect(besuReceipt1).toBeDefined(); log.info(`Besu Asset locked: ${besuReceipt1}`); @@ -301,11 +315,12 @@ describe.skip("Rollback Test stage 3", () => { id: fabricEnv.defaultAsset.id, referenceId: fabricEnv.defaultAsset.referenceId, type: TokenType.NONSTANDARD_FUNGIBLE, - amount: "100", + amount: 100 as Amount, owner: fabricEnv.clientId, mspId: "Org1MSP", channelName: fabricEnv.fabricChannelName, contractName: fabricEnv.satpContractName, + ercTokenStandard: ERCTokenStandard.ERC_TOKEN_STANDARD_ERC20, }; const fabricReceipt = await fabricLeaf.wrapAsset(fabricAsset); @@ -345,7 +360,7 @@ describe.skip("Rollback Test stage 3", () => { const responseLock = await fabricLeaf.lockAsset( fabricEnv.defaultAsset.id, - 100, + 100 as Amount, ); expect(responseLock).not.toBeUndefined(); @@ -353,7 +368,7 @@ describe.skip("Rollback Test stage 3", () => { const responseMint = await fabricLeaf.mintAsset( fabricEnv.defaultAsset.id, - 100, + 100 as Amount, ); log.info(`Mint asset response: ${JSON.stringify(responseMint)}`); diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/test-utils.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/test-utils.ts index deeca143c4..3b5de7956c 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/test-utils.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/test-utils.ts @@ -20,6 +20,7 @@ import { Containers } from "@hyperledger/cactus-test-tooling/src/main/typescript import { EventEmitter } from "events"; import { ICrossChainMechanismsOptions } from "../../main/typescript/cross-chain-mechanisms/satp-cc-manager"; import { createMigrationSource } from "../../main/typescript/database/knex-migration-source"; +import { TokenType as TransactAssetType } from "../../main/typescript/generated/proto/cacti/satp/v02/common/message_pb"; export { BesuTestEnvironment } from "./environments/besu-test-environment"; export { EthereumTestEnvironment } from "./environments/ethereum-test-environment"; @@ -234,12 +235,32 @@ export function getTransactRequest( to: BesuTestEnvironment | EthereumTestEnvironment | FabricTestEnvironment, fromAmount: string, toAmount: string, + assetType?: TransactAssetType, ): TransactRequest { - return { - contextID, - sourceAsset: { ...from.defaultAsset, amount: fromAmount }, - receiverAsset: { ...to.defaultAsset, amount: toAmount }, - }; + if (assetType === undefined) { + return { + contextID, + sourceAsset: { ...from.defaultAsset, amount: fromAmount }, + receiverAsset: { ...to.defaultAsset, amount: toAmount }, + }; + } else { + switch (assetType) { + case TransactAssetType.NONSTANDARD_FUNGIBLE: + return { + contextID, + sourceAsset: { ...from.defaultAsset, amount: fromAmount }, + receiverAsset: { ...to.defaultAsset, amount: toAmount }, + }; + case TransactAssetType.NONSTANDARD_NONFUNGIBLE: + return { + contextID, + sourceAsset: { ...from.nonFungibleDefaultAsset, amount: fromAmount }, + receiverAsset: { ...to.nonFungibleDefaultAsset, amount: toAmount }, + }; + default: + throw new Error(`Unsupported asset type: ${assetType}`); + } + } } export interface PGDatabaseConfig { diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/crash-management/cron-job.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/crash-management/cron-job.test.ts index 367a2b5740..dcd70e0f6c 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/crash-management/cron-job.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/crash-management/cron-job.test.ts @@ -80,14 +80,14 @@ const createMockSession = ( sessionData.role = Type.CLIENT; sessionData.senderAsset = create(AssetSchema, { tokenId: "MOCK_TOKEN_ID", - tokenType: TokenType.ERC20, + tokenType: TokenType.NONSTANDARD_FUNGIBLE, amount: BigInt(100), owner: "MOCK_SENDER_ASSET_OWNER", contractName: "MOCK_SENDER_ASSET_CONTRACT_NAME", contractAddress: "MOCK_SENDER_ASSET_CONTRACT_ADDRESS", }); sessionData.receiverAsset = create(AssetSchema, { - tokenType: TokenType.ERC20, + tokenType: TokenType.NONSTANDARD_FUNGIBLE, amount: BigInt(100), owner: "MOCK_RECEIVER_ASSET_OWNER", contractName: "MOCK_RECEIVER_ASSET_CONTRACT_NAME", diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/crash-management/scenarios.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/crash-management/scenarios.test.ts index e5659861a1..f68dca6ab2 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/crash-management/scenarios.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/crash-management/scenarios.test.ts @@ -81,14 +81,14 @@ const createMockSession = (maxTimeout: string, maxRetries: string) => { sessionData.role = Type.CLIENT; sessionData.senderAsset = create(AssetSchema, { tokenId: "MOCK_TOKEN_ID", - tokenType: TokenType.ERC20, + tokenType: TokenType.NONSTANDARD_FUNGIBLE, amount: BigInt(100), owner: "MOCK_SENDER_ASSET_OWNER", contractName: "MOCK_SENDER_ASSET_CONTRACT_NAME", contractAddress: "MOCK_SENDER_ASSET_CONTRACT_ADDRESS", }); sessionData.receiverAsset = create(AssetSchema, { - tokenType: TokenType.ERC20, + tokenType: TokenType.NONSTANDARD_FUNGIBLE, amount: BigInt(100), owner: "MOCK_RECEIVER_ASSET_OWNER", contractName: "MOCK_RECEIVER_ASSET_CONTRACT_NAME", diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/services.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/services.test.ts index e0ee86a2be..2d9cc3bbc4 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/services.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/services.test.ts @@ -314,7 +314,7 @@ describe("SATP Services Testing", () => { sessionData.senderAsset = create(AssetSchema, { tokenId: "MOCK_TOKEN_ID", - tokenType: TokenType.ERC20, + tokenType: TokenType.NONSTANDARD_FUNGIBLE, amount: BigInt(0), owner: "MOCK_SENDER_ASSET_OWNER", contractName: "MOCK_SENDER_ASSET_CONTRACT_NAME", @@ -325,7 +325,7 @@ describe("SATP Services Testing", () => { }), }); sessionData.receiverAsset = create(AssetSchema, { - tokenType: TokenType.ERC20, + tokenType: TokenType.NONSTANDARD_FUNGIBLE, amount: BigInt(0), owner: "MOCK_RECEIVER_ASSET_OWNER", contractName: "MOCK_RECEIVER_ASSET_CONTRACT_NAME", diff --git a/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/shutdown-state.test.ts b/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/shutdown-state.test.ts index e47bb37477..19b44edde5 100644 --- a/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/shutdown-state.test.ts +++ b/packages/cactus-plugin-satp-hermes/src/test/typescript/unit/shutdown-state.test.ts @@ -240,9 +240,10 @@ describe("Shutdown Verify State Tests", () => { id: "mockNetworkId", ledgerType: LedgerType.Ethereum, }, - tokenType: "ERC20", + tokenType: "NONSTANDARD_FUNGIBLE", referenceId: "", amount: "100", + ercTokenStandard: "ERC20", }; const transactRequest: TransactRequest = {