Files
smom-dbis-138/artifacts/contracts/registry/UniversalAssetRegistry.sol/UniversalAssetRegistry.json
2026-03-02 12:14:09 -08:00

1394 lines
81 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "UniversalAssetRegistry",
"sourceName": "contracts/registry/UniversalAssetRegistry.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "enum UniversalAssetRegistry.ComplianceLevel",
"name": "complianceLevel",
"type": "uint8"
}
],
"name": "AssetApproved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "address",
"name": "proposer",
"type": "address"
}
],
"name": "AssetProposed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
}
],
"name": "AssetRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
}
],
"name": "ProposalCancelled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
}
],
"name": "ProposalExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "support",
"type": "bool"
}
],
"name": "ProposalVoted",
"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": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
}
],
"name": "ValidatorAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
}
],
"name": "ValidatorRemoved",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PROPOSER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REGISTRAR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TIMELOCK_HIGH",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TIMELOCK_MODERATE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TIMELOCK_STANDARD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "VALIDATOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "validator",
"type": "address"
}
],
"name": "addValidator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "assets",
"outputs": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
},
{
"internalType": "enum UniversalAssetRegistry.ComplianceLevel",
"name": "complianceLevel",
"type": "uint8"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "jurisdiction",
"type": "string"
},
{
"internalType": "uint8",
"name": "volatilityScore",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "minBridgeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBridgeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dailyVolumeLimit",
"type": "uint256"
},
{
"internalType": "address",
"name": "pmmPool",
"type": "address"
},
{
"internalType": "bool",
"name": "hasLiquidity",
"type": "bool"
},
{
"internalType": "uint256",
"name": "liquidityReserveUSD",
"type": "uint256"
},
{
"internalType": "bool",
"name": "requiresGovernance",
"type": "bool"
},
{
"internalType": "uint256",
"name": "validationThreshold",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isActive",
"type": "bool"
},
{
"internalType": "uint256",
"name": "registeredAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastUpdated",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "assetsByType",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
}
],
"name": "executeProposal",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "getAsset",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
},
{
"internalType": "enum UniversalAssetRegistry.ComplianceLevel",
"name": "complianceLevel",
"type": "uint8"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "jurisdiction",
"type": "string"
},
{
"internalType": "uint8",
"name": "volatilityScore",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "minBridgeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBridgeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dailyVolumeLimit",
"type": "uint256"
},
{
"internalType": "address",
"name": "pmmPool",
"type": "address"
},
{
"internalType": "bool",
"name": "hasLiquidity",
"type": "bool"
},
{
"internalType": "uint256",
"name": "liquidityReserveUSD",
"type": "uint256"
},
{
"internalType": "bool",
"name": "requiresGovernance",
"type": "bool"
},
{
"internalType": "address[]",
"name": "validators",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "validationThreshold",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isActive",
"type": "bool"
},
{
"internalType": "uint256",
"name": "registeredAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastUpdated",
"type": "uint256"
}
],
"internalType": "struct UniversalAssetRegistry.UniversalAsset",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "getAssetType",
"outputs": [
{
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
}
],
"name": "getAssetsByType",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
}
],
"name": "getProposal",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
},
{
"internalType": "enum UniversalAssetRegistry.ProposalType",
"name": "proposalType",
"type": "uint8"
},
{
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"internalType": "uint256",
"name": "proposedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "executeAfter",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votesFor",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votesAgainst",
"type": "uint256"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
},
{
"internalType": "bool",
"name": "cancelled",
"type": "bool"
},
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
},
{
"internalType": "enum UniversalAssetRegistry.ComplianceLevel",
"name": "complianceLevel",
"type": "uint8"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "jurisdiction",
"type": "string"
},
{
"internalType": "uint8",
"name": "volatilityScore",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "minBridgeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBridgeAmount",
"type": "uint256"
}
],
"internalType": "struct UniversalAssetRegistry.PendingAssetProposal",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getValidators",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"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": "",
"type": "bytes32"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "hasVoted",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "isAssetActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isValidator",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
},
{
"internalType": "enum UniversalAssetRegistry.ProposalType",
"name": "proposalType",
"type": "uint8"
},
{
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"internalType": "uint256",
"name": "proposedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "executeAfter",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votesFor",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "votesAgainst",
"type": "uint256"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
},
{
"internalType": "bool",
"name": "cancelled",
"type": "bool"
},
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
},
{
"internalType": "enum UniversalAssetRegistry.ComplianceLevel",
"name": "complianceLevel",
"type": "uint8"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "jurisdiction",
"type": "string"
},
{
"internalType": "uint8",
"name": "volatilityScore",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "minBridgeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBridgeAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "enum UniversalAssetRegistry.AssetType",
"name": "assetType",
"type": "uint8"
},
{
"internalType": "enum UniversalAssetRegistry.ComplianceLevel",
"name": "complianceLevel",
"type": "uint8"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "jurisdiction",
"type": "string"
},
{
"internalType": "uint8",
"name": "volatilityScore",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "minBridge",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBridge",
"type": "uint256"
}
],
"name": "proposeAsset",
"outputs": [
{
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "quorumPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "validator",
"type": "address"
}
],
"name": "removeValidator",
"outputs": [],
"stateMutability": "nonpayable",
"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": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "pmmPool",
"type": "address"
}
],
"name": "updatePMMPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "validators",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "proposalId",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "support",
"type": "bool"
}
],
"name": "voteOnProposal",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60a080604052346100cd57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100be57506001600160401b036002600160401b031982821601610079575b6040516132349081620000d382396080518181816113bc01526116490152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610059565b63f92ee8a960e01b8152600490fd5b600080fdfe60a080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461258c57508063032c49ed146125455780631cac090b14612507578063248a9ca3146124cb5780632f2ff15d1461247f57806330b8b2c61461213857806331cc1bf81461201f57806332ed5b1214611e9657806335aa2e4414611e5457806336568abe14611e0d57806340a141ff14611ca4578063430694cf146119935780634d238c8e146118825780634f1ef286146115ce5780634fa76ec9146115b0578063519169701461142657806352d1902d146113a957806388a6a9ad1461138b5780638f61f4f51461135057806391d14854146112f6578063980ff6c614610e6d5780639e7b40d314610848578063a217fddf1461082c578063a2fa0157146107ea578063aadc3b721461079d578063ad3cb1cc1461072f578063b7ab4db5146106ab578063bc9ad20a1461068d578063c49baebe14610664578063c4d66de8146104e4578063d1b2cc2e1461049b578063d547741f1461044d578063f11b81881461028e578063f68e955314610253578063f72c0d8b14610218578063facd743b146101d95763ffa12de4146101b657600080fd5b346101d45760003660031901126101d4576020604051620151808152f35b600080fd5b346101d45760203660031901126101d4576001600160a01b036101fa6125df565b166000526006602052602060ff604060002054166040519015158152f35b346101d45760003660031901126101d45760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b346101d45760003660031901126101d45760206040517fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092388152f35b346101d45760203660031901126101d4576001600160a01b036102af6125df565b16600052600060205260406000208054600182016102cc906127b0565b916102d9600282016127b0565b600382015460ff1693906102ef600484016127b0565b94600584015460ff169560068501546007860154600887015490600988015492600a89015494600b8a015460ff1696600d8b015498600e8c015460ff169a600f8d01549c601001549d60405160805261026090600160a01b600190038116608051526080516020018160a01c60ff16906103689161260b565b8060a81c60ff1661037890612696565b60a81c60ff166080516040015280608051606001526080510161039a916126a0565b6080518103608051608001526103af916126a0565b9060805160a00152608051810360805160c001526103cc916126a0565b9a60805160e00152608051610100015260805161012001526080516101400152600160a01b600190038116608051610160015260a01c60ff16151560805161018001526080516101a0015215156080516101c001526080516101e0015215156080516102000152608051610220015260805161024001526080519003608051f35b346101d45760403660031901126101d45761049960043561046c6125f5565b90806000526000805160206131bf833981519152602052610494600160406000200154612a61565b612edb565b005b346101d45760203660031901126101d457600435600a8110156101d4576104cc6104c76104e092612618565b6128a9565b6040519182916020835260208301906126e0565b0390f35b346101d45760203660031901126101d4576104fd6125df565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090815460ff8160401c1615916001600160401b0382168015908161065c575b6001149081610652575b159081610649575b506106375767ffffffffffffffff19821660011784556105cf9183610618575b506105786130da565b6105806130da565b6105886130da565b60016000805160206131df833981519152556105a26130da565b6105ab81612b32565b506105b581612bc0565b506105bf81612c6a565b506105c981612a94565b50612d14565b5060336004556105db57005b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff1916680100000000000000011784558461056f565b60405163f92ee8a960e01b8152600490fd5b9050158561054f565b303b159150610547565b84915061053d565b346101d45760003660031901126101d457602060405160008051602061319f8339815191528152f35b346101d45760003660031901126101d457602060405162093a808152f35b346101d45760003660031901126101d457604051806005549182815260208091019260056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0916000905b82821061070f576104e0856104cc8189038261278f565b83546001600160a01b0316865294850194600193840193909101906106f8565b346101d45760003660031901126101d45760405160408101908082106001600160401b03831117610787576104e09160405260058152640352e302e360dc1b60208201526040519182916020835260208301906126a0565b634e487b7160e01b600052604160045260246000fd5b346101d45760403660031901126101d4576107b66125f5565b600435600052600360205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101d45760203660031901126101d4576001600160a01b0361080b6125df565b166000526000602052602060ff600e60406000200154166040519015158152f35b346101d45760003660031901126101d457602060405160008152f35b346101d4576101403660031901126101d4576108626125df565b600a60243510156101d457600560443510156101d4576064356001600160401b0381116101d457610897903690600401612870565b90916084356001600160401b0381116101d4576108b8903690600401612870565b939060a43560ff811681036101d45760c4356001600160401b0381116101d4576108e6903690600401612870565b91909660e4359360ff851685036101d4573360009081527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf7602052604090205460ff1615610e2f576109426001600160a01b0388161515612903565b6001600160a01b0387166000908152602081905260409020600e015460ff16610df557606460ff861611610dbb57610104356101243510610d8557604080516001600160a01b03891660208201529061099f90820160243561260b565b426060820152336080820152608081528060a08101106001600160401b0360a0830111176107875760a0810160405260208151910120976109e4604435602435613041565b60008a81526002602081905260409091208b81556001810180546001600160a81b0319163360081b610100600160a81b0316179055429181018290559891610a2b916129c4565b6003890155600688018054610a41604435612696565b60243560b01b60ff60b01b1662010000600160c01b031990911660108c901b62010000600160b01b0316171760443560b81b60ff60b81b161790556001600160401b03821161078757610aa482610a9b60078b015461271d565b60078b016129d1565b600090601f8311600114610d1757610ad5929160009183610d0c575b50508160011b916000199060031b1c19161790565b60078701555b6001600160401b03821161078757610b0382610afa600889015461271d565b600889016129d1565b600090601f8311600114610c9e57610b33929160009183610c935750508160011b916000199060031b1c19161790565b60088501555b60ff60098501911660ff198254161790556001600160401b03811161078757602095610b7582610b6c600a87015461271d565b600a87016129d1565b600090601f8311600114610c2457610ba5929160009183610c195750508160011b916000199060031b1c19161790565b600a8301555b60ff600b8301911660ff1982541617905561010435600c820155600d61012435910155817fe408867aabf84d5719fdc2299591d48d954b182f6c5e6e00c70fbb6ccc9fef676040805193610c018560243561260b565b33858801526001600160a01b031693a3604051908152f35b013590508880610ac0565b600a859392930160005287600020906000935b601f1984168510610c7c576001945083601f19811610610c62575b505050811b01600a830155610bab565b0135600019600384901b60f8161c19169055878080610c52565b818101358355938901936001909201918901610c37565b013590508a80610ac0565b601f198316916008880160005260206000209260005b818110610cf45750908460019594939210610cda575b505050811b016008850155610b39565b0135600019600384901b60f8161c19169055898080610cca565b91936020600181928787013581550195019201610cb4565b013590508c80610ac0565b601f1983169160078a0160005260206000209260005b818110610d6d5750908460019594939210610d53575b505050811b016007870155610adb565b0135600019600384901b60f8161c191690558b8080610d43565b91936020600181928787013581550195019201610d2d565b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964206c696d69747360901b6044820152606490fd5b60405162461bcd60e51b8152602060048201526012602482015271496e76616c696420766f6c6174696c69747960701b6044820152606490fd5b60405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481c9959da5cdd195c995960721b6044820152606490fd5b60405163e2517d3f60e01b81523360048201527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16024820152604490fd5b346101d45760203660031901126101d45760026000805160206131df83398151915254146112e45760026000805160206131df83398151915255600435600052600260205260406000206006810154610ec960ff82161561293e565b610ed960ff8260081c161561297d565b600382015442106112ad576004820154600583015490610ef982826129c4565b600554600454908181029181830414901517156112315760649004116112775711156112475760ff600183015416610f3081612696565b15610f81575b50600601805460ff191660011790556004357f7b1bcf1ccf901a11589afff5504d59fd0a53780eed2a952adade0348985139e0600080a260016000805160206131df83398151915255005b60101c6001600160a01b0316600081815260208190526040902080546001600160a01b0319811683178255600684015491929091600a60b082901c60ff1610156112065760ff60a01b9060101c169081816affffffffffffffffffffff60a81b8516171784556006850154610ffb60ff8260b81c16612696565b6001600160b01b0319909316171760109190911c60ff60a81b161781556110286007830160018301612f5e565b6110386008830160028301612f5e565b60ff600983015416600382019060ff1982541617905561105e600a830160048301612f5e565b60ff600b83015416600582019060ff19825416179055600c8201546006820155600d820154806007830155600a810290808204600a14901517156112315760088201556006820154600a60ff8260b01c161015908161120657600460ff8260b01c161491821561121c575b82156111ee575b5081156111cd575b50600b82019060ff801983541691151516179055600e8101600160ff1982541617905542600f820155601042910155600681015461111b60ff8260b01c16612618565b90815491600160401b831015610787578261113e9160016111689501815561267e565b81546001600160a01b0360039290921b82811b1990911660109490941c909116901b919091179055565b60068101547f957ac733877fc1e091187617619942ea3674cbdb3eb14a260d1b85fa4644bba7604060ff8360b81c16928151936111ab8560ff8460b01c1661260b565b6111b481612696565b602085015260101c6001600160a01b031692a281610f36565b60029150806111e260ff809360b81c16612696565b60b81c161015836110d8565b90915061120657600360ff8260b01c161490846110d0565b634e487b7160e01b600052602160045260246000fd5b5060b081901c60ff16600114915060006110c9565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600860248201526714995a9958dd195960c21b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e54696d656c6f636b2061637469766560881b6044820152606490fd5b604051633ee5aeb560e01b8152600490fd5b346101d45760403660031901126101d45761130f6125f5565b6004356000526000805160206131bf83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101d45760003660031901126101d45760206040517fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18152f35b346101d45760003660031901126101d45760206040516203f4808152f35b346101d45760003660031901126101d4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036114145760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b346101d45760403660031901126101d45760043560243590811515918281036101d4573360009081527fb323bca1072ad6c43c8a5019bad43672f13be3697b760574a9a2f43b558a3aa5602090815260409091205490919060008051602061319f8339815191529060ff1615611592575082600052600282526040600020906114c560ff60068401546114bb8282161561293e565b60081c161561297d565b8360005260038352604060002033600052835260ff6040600020541661155d57600084815260038452604080822033835285529020805460ff191660011790557fe45672636f462aa58432cc4242a5826b19ac6c35399fc5979d9cc885ac3b5d57929190156115495760040161153b81546129b5565b90555b6040519384523393a3005b60050161155681546129b5565b905561153e565b60405162461bcd60e51b815260048101849052600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346101d45760003660031901126101d4576020600454604051908152f35b60403660031901126101d4576115e26125df565b60249081356001600160401b0381116101d457366023820112156101d457806004013561160e81612855565b9261161c604051948561278f565b81845260209182850193368783830101116101d45781600092888693018737860101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115611854575b50611414577f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3806000526000805160206131bf8339815191528452604060002033600052845260ff604060002054161561183757508116936040516352d1902d60e01b81528381600481895afa60009181611808575b5061170857604051634c9c8ce360e01b8152600481018790528790fd5b8590877f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc918281036117f35750843b156117dd575080546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28151156117c2575060006104999481925190845af4903d156117b9573d61179c81612855565b906117aa604051928361278f565b8152600081943d92013e61311b565b6060925061311b565b9350505050346117ce57005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101849052fd5b60405190632a87526960e21b82526004820152fd5b9091508481813d8311611830575b611820818361278f565b810103126101d4575190886116eb565b503d611816565b866044916040519163e2517d3f60e01b8352336004840152820152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141587611675565b346101d45760203660031901126101d45761189b6125df565b6118a3612a27565b6001600160a01b038116906118b9821515612903565b81600052600660205260ff6040600020541661195a5760055490600160401b82101561078757611914816118f68460016119329601600555612631565b90919060018060a01b038084549260031b9316831b921b1916179055565b8260005260066020526040600020600160ff19825416179055612a94565b507fe366c1c0452ed8eec96861e9e54141ebff23c9ec89fe27b996b45f5ec3884987600080a2005b60405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903b30b634b230ba37b960791b6044820152606490fd5b346101d45760203660031901126101d45760006102406040516119b581612773565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152606061018082015260606101a0820152826101c082015260606101e08201528261020082015282610220820152015260043560005260026020526040600020600d60405191611a4c83612773565b805483526001810154611a6160ff8216612696565b60ff81811660208601526001600160a01b03600892831c811660408701526002840154606087015260038401546080870152600484015460a0870152600584015460c08701526006840154808316151560e08801529283901c82161515610100870152601083901c1661012086015290611ae560b082901c8316610140870161289d565b611af3828260b81c16612696565b60b81c16610160840152611b09600782016127b0565b610180840152611b1b600882016127b0565b6101a084015260ff6009820154166101c0840152611b3b600a82016127b0565b6101e084015260ff600b82015416610200840152600c8101546102208401520154610240820152604051809160208252805160208301526020810151611b8081612696565b604083015260018060a01b03604082015116606083015260608101516080830152608081015160a083015260a081015160c083015260c081015160e083015260e08101511515610100830152610100810151151561012083015260018060a01b0361012082015116610140830152611c0261014082015161016084019061260b565b610160810151611c1181612696565b610180830152610180810151610240611c80611c3c61026093846101a08801526102808701906126a0565b611c5a6101a086015191601f199283898303016101c08a01526126a0565b9060ff6101c0870151166101e08801526101e086015190878303016102008801526126a0565b9260ff61020082015116610220860152610220810151828601520151908301520390f35b346101d45760203660031901126101d457611cbd6125df565b611cc5612a27565b6001600160a01b0381811660008181526006602052604090205490929060ff1615611dd857611d0990836000526006602052604060002060ff198154169055612e33565b5060005b60059081549182821015611dcf57839285611d2784612631565b969054600397881b1c1614611d43575050600191925001611d0d565b9092916000199180830191908211611231576118f684611d65611d7294612631565b905490891b1c1691612631565b82548015611db9570192611d8584612631565b81939154921b1b19169055555b7fe1434e25d6611e0db941968fdc97811c982ac1602e951637d206f5fdda9dd8f1600080a2005b634e487b7160e01b600052603160045260246000fd5b50505050611d92565b60405162461bcd60e51b815260206004820152600d60248201526c2737ba103b30b634b230ba37b960991b6044820152606490fd5b346101d45760403660031901126101d457611e266125f5565b336001600160a01b03821603611e425761049990600435612edb565b60405163334bd91960e11b8152600490fd5b346101d45760203660031901126101d4576004356005548110156101d457611e7d602091612631565b905460405160039290921b1c6001600160a01b03168152f35b346101d45760203660031901126101d45760043560005260026020526040600020805460018201549060028301549260038101549060048101549260058201549060068301549060078401611eea906127b0565b611ef6600886016127b0565b91600986015460ff1693600a8701611f0d906127b0565b95600b88015460ff1699600c89015498600d0154996040519d8e809e61026097825260ff8116611f3c90612696565b60ff81166020830152600160a01b600190039060081c1660408201526060015260808d015260a08c015260c08b015260ff8116151560e08b01528060081c60ff1615156101008b0152600160a01b600190038160101c166101208b01526101408a018160b01c60ff1690611faf9161260b565b8060b81c60ff16611fbf90612696565b60b81c60ff166101608a0152806101808a01528801611fdd916126a0565b8781036101a0890152611fef916126a0565b906101c08701528581036101e0870152612008916126a0565b926102008501526102208401526102408301520390f35b346101d45760403660031901126101d4576120386125df565b6120406125f5565b3360009081527f07966f2ab141347034724e9b2a472c2f77f5cd745aeba27cacba797b8fcb708660205260409020547fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092389060ff161561159257506001600160a01b039182166000818152602081905260409020600e015460ff161561210257600052600060205260406000209160098301911681549060ff60a01b81151560a01b16916affffffffffffffffffffff60a81b1617179055601042910155600080f35b60405162461bcd60e51b815260206004820152600e60248201526d139bdd081c9959da5cdd195c995960921b6044820152606490fd5b346101d45760203660031901126101d4576121516125df565b600061026060405161216281612757565b828152826020820152826040820152606080820152606060808201528260a0820152606060c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c082015260606101e0820152826102008201528261022082015282610240820152015260018060a01b03166000526000602052604060002060106040519161220583612757565b80546001600160a01b038116845260ff9061222960a082901c83166020870161289d565b612237828260a81c16612696565b60a81c16604084015261224c600182016127b0565b606084015261225d600282016127b0565b608084015260ff60038201541660a084015261227b600482016127b0565b60c0840152600581015460ff90811660e085015260068201546101008501526007820154610120850152600882015461014085015260098201546001600160a01b03811661016086015260a01c81161515610180850152600a8201546101a0850152600b8201541615156101c08401526122f7600c82016128a9565b6101e0840152600d81015461020084015260ff600e820154161515610220840152600f810154610240840152015461026082015260405180916020825260018060a01b0381511660208301526123556020820151604084019061260b565b604081015161236381612696565b606083015261026061244e6123c86123a561238f606086015161028060808901526102a08801906126a0565b6080860151878203601f190160a08901526126a0565b60ff60a08601511660c087015260c0850151601f198783030160e08801526126a0565b60ff60e08501511661010086015261010084015161012086015261012084015161014086015261014084015161016086015260018060a01b036101608501511661018086015261018084015115156101a08601526101a08401516101c08601526101c084015115156101e08601526101e0840151601f19868303016102008701526126e0565b9161020081015161022085015261022081015115156102408501526102408101518285015201516102808301520390f35b346101d45760403660031901126101d45761049960043561249e6125f5565b90806000526000805160206131bf8339815191526020526124c6600160406000200154612a61565b612dbe565b346101d45760203660031901126101d4576004356000526000805160206131bf8339815191526020526020600160406000200154604051908152f35b346101d45760403660031901126101d457600435600a8110156101d45761253060243591612618565b80548210156101d457602091611e7d9161267e565b346101d45760203660031901126101d4576001600160a01b036125666125df565b166000526000602052602060ff60406000205460a01c1661258a604051809261260b565bf35b346101d45760203660031901126101d4576004359063ffffffff60e01b82168092036101d457602091637965db0b60e01b81149081156125ce575b5015158152f35b6301ffc9a760e01b149050836125c7565b600435906001600160a01b03821682036101d457565b602435906001600160a01b03821682036101d457565b90600a8210156112065752565b600a811015611206576000526001602052604060002090565b6005548110156126685760056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00190600090565b634e487b7160e01b600052603260045260246000fd5b80548210156126685760005260206000200190600090565b6005111561120657565b919082519283825260005b8481106126cc575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016126ab565b90815180825260208080930193019160005b828110612700575050505090565b83516001600160a01b0316855293810193928101926001016126f2565b90600182811c9216801561274d575b602083101461273757565b634e487b7160e01b600052602260045260246000fd5b91607f169161272c565b61028081019081106001600160401b0382111761078757604052565b61026081019081106001600160401b0382111761078757604052565b90601f801991011681019081106001600160401b0382111761078757604052565b906040519182600082546127c38161271d565b9081845260209460019160018116908160001461283357506001146127f4575b5050506127f29250038361278f565b565b600090815285812095935091905b81831061281b5750506127f293508201013880806127e3565b85548884018501529485019487945091830191612802565b925050506127f294925060ff191682840152151560051b8201013880806127e3565b6001600160401b03811161078757601f01601f191660200190565b9181601f840112156101d4578235916001600160401b0383116101d457602083818601950101116101d457565b600a8210156112065752565b90604051918281549182825260209260208301916000526020600020936000905b8282106128e0575050506127f29250038361278f565b85546001600160a01b0316845260019586019588955093810193909101906128ca565b1561290a57565b60405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606490fd5b1561294557565b60405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b1561298457565b60405162461bcd60e51b815260206004820152600960248201526810d85b98d95b1b195960ba1b6044820152606490fd5b60001981146112315760010190565b9190820180921161123157565b90601f81116129df57505050565b6000916000526020600020906020601f850160051c83019410612a1d575b601f0160051c01915b828110612a1257505050565b818155600101612a06565b90925082906129fd565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604081205460ff16156115925750565b806000526000805160206131bf83398151915260205260406000203360005260205260ff60406000205416156115925750565b6001600160a01b031660008181527fb323bca1072ad6c43c8a5019bad43672f13be3697b760574a9a2f43b558a3aa5602052604081205490919060008051602061319f833981519152906000805160206131bf8339815191529060ff16612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b50505090565b6001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120549091906000805160206131bf8339815191529060ff16612bbb578280526020526040822081835260205260408220600160ff19825416179055339160008051602061317f8339815191528180a4600190565b505090565b6001600160a01b031660008181527f07966f2ab141347034724e9b2a472c2f77f5cd745aeba27cacba797b8fcb708660205260408120549091907fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c309238906000805160206131bf8339815191529060ff16612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b6001600160a01b031660008181527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf760205260408120549091907fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1906000805160206131bf8339815191529060ff16612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b6001600160a01b031660008181527fab71e3f32666744d246edff3f96e4bdafee2e9867098cdd118a979a7464786a860205260408120549091907f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3906000805160206131bf8339815191529060ff16612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b906000918083526000805160206131bf83398151915280602052604084209260018060a01b03169283855260205260ff60408520541615600014612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b6001600160a01b031660008181527fb323bca1072ad6c43c8a5019bad43672f13be3697b760574a9a2f43b558a3aa5602052604081205490919060008051602061319f833981519152906000805160206131bf8339815191529060ff1615612b2c57818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b906000918083526000805160206131bf83398151915280602052604084209260018060a01b03169283855260205260ff604085205416600014612b2c57818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b9080821461303d57612f70815461271d565b906001600160401b03821161078757612f9382612f8d855461271d565b856129d1565b600090601f8311600114612fd257612fc3929160009183612fc75750508160011b916000199060031b1c19161790565b9055565b015490503880610ac0565b815260208082208483528183209291601f1985169083905b82821061302457505090846001959493921061300b575b505050811b019055565b015460001960f88460031b161c19169055388080613001565b8495819295850154815560018091019601940190612fea565b5050565b90600a82101580611206576004831480156130cd575b80156130b9575b1561306d5750505062093a8090565b61120657600382149182156130ae575b508115613099575b5015613092576203f48090565b6201518090565b600291506130a681612696565b101538613085565b60051491503861307d565b506130c382612696565b600382101561305e565b5050600060018314613057565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561310957565b604051631afcd79f60e31b8152600490fd5b90613142575080511561313057805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580613175575b613153575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561314b56fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d21702c8af46127c7fa207f89d0b0a8441bb32959a0ac7df790e9ab1a25c9892602dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220e093e2030542e0531c64790d2bf28f5ba81001074c550c3a2f224eabc5393bdb64736f6c63430008160033",
"deployedBytecode": "0x60a080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461258c57508063032c49ed146125455780631cac090b14612507578063248a9ca3146124cb5780632f2ff15d1461247f57806330b8b2c61461213857806331cc1bf81461201f57806332ed5b1214611e9657806335aa2e4414611e5457806336568abe14611e0d57806340a141ff14611ca4578063430694cf146119935780634d238c8e146118825780634f1ef286146115ce5780634fa76ec9146115b0578063519169701461142657806352d1902d146113a957806388a6a9ad1461138b5780638f61f4f51461135057806391d14854146112f6578063980ff6c614610e6d5780639e7b40d314610848578063a217fddf1461082c578063a2fa0157146107ea578063aadc3b721461079d578063ad3cb1cc1461072f578063b7ab4db5146106ab578063bc9ad20a1461068d578063c49baebe14610664578063c4d66de8146104e4578063d1b2cc2e1461049b578063d547741f1461044d578063f11b81881461028e578063f68e955314610253578063f72c0d8b14610218578063facd743b146101d95763ffa12de4146101b657600080fd5b346101d45760003660031901126101d4576020604051620151808152f35b600080fd5b346101d45760203660031901126101d4576001600160a01b036101fa6125df565b166000526006602052602060ff604060002054166040519015158152f35b346101d45760003660031901126101d45760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b346101d45760003660031901126101d45760206040517fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092388152f35b346101d45760203660031901126101d4576001600160a01b036102af6125df565b16600052600060205260406000208054600182016102cc906127b0565b916102d9600282016127b0565b600382015460ff1693906102ef600484016127b0565b94600584015460ff169560068501546007860154600887015490600988015492600a89015494600b8a015460ff1696600d8b015498600e8c015460ff169a600f8d01549c601001549d60405160805261026090600160a01b600190038116608051526080516020018160a01c60ff16906103689161260b565b8060a81c60ff1661037890612696565b60a81c60ff166080516040015280608051606001526080510161039a916126a0565b6080518103608051608001526103af916126a0565b9060805160a00152608051810360805160c001526103cc916126a0565b9a60805160e00152608051610100015260805161012001526080516101400152600160a01b600190038116608051610160015260a01c60ff16151560805161018001526080516101a0015215156080516101c001526080516101e0015215156080516102000152608051610220015260805161024001526080519003608051f35b346101d45760403660031901126101d45761049960043561046c6125f5565b90806000526000805160206131bf833981519152602052610494600160406000200154612a61565b612edb565b005b346101d45760203660031901126101d457600435600a8110156101d4576104cc6104c76104e092612618565b6128a9565b6040519182916020835260208301906126e0565b0390f35b346101d45760203660031901126101d4576104fd6125df565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090815460ff8160401c1615916001600160401b0382168015908161065c575b6001149081610652575b159081610649575b506106375767ffffffffffffffff19821660011784556105cf9183610618575b506105786130da565b6105806130da565b6105886130da565b60016000805160206131df833981519152556105a26130da565b6105ab81612b32565b506105b581612bc0565b506105bf81612c6a565b506105c981612a94565b50612d14565b5060336004556105db57005b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff1916680100000000000000011784558461056f565b60405163f92ee8a960e01b8152600490fd5b9050158561054f565b303b159150610547565b84915061053d565b346101d45760003660031901126101d457602060405160008051602061319f8339815191528152f35b346101d45760003660031901126101d457602060405162093a808152f35b346101d45760003660031901126101d457604051806005549182815260208091019260056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0916000905b82821061070f576104e0856104cc8189038261278f565b83546001600160a01b0316865294850194600193840193909101906106f8565b346101d45760003660031901126101d45760405160408101908082106001600160401b03831117610787576104e09160405260058152640352e302e360dc1b60208201526040519182916020835260208301906126a0565b634e487b7160e01b600052604160045260246000fd5b346101d45760403660031901126101d4576107b66125f5565b600435600052600360205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101d45760203660031901126101d4576001600160a01b0361080b6125df565b166000526000602052602060ff600e60406000200154166040519015158152f35b346101d45760003660031901126101d457602060405160008152f35b346101d4576101403660031901126101d4576108626125df565b600a60243510156101d457600560443510156101d4576064356001600160401b0381116101d457610897903690600401612870565b90916084356001600160401b0381116101d4576108b8903690600401612870565b939060a43560ff811681036101d45760c4356001600160401b0381116101d4576108e6903690600401612870565b91909660e4359360ff851685036101d4573360009081527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf7602052604090205460ff1615610e2f576109426001600160a01b0388161515612903565b6001600160a01b0387166000908152602081905260409020600e015460ff16610df557606460ff861611610dbb57610104356101243510610d8557604080516001600160a01b03891660208201529061099f90820160243561260b565b426060820152336080820152608081528060a08101106001600160401b0360a0830111176107875760a0810160405260208151910120976109e4604435602435613041565b60008a81526002602081905260409091208b81556001810180546001600160a81b0319163360081b610100600160a81b0316179055429181018290559891610a2b916129c4565b6003890155600688018054610a41604435612696565b60243560b01b60ff60b01b1662010000600160c01b031990911660108c901b62010000600160b01b0316171760443560b81b60ff60b81b161790556001600160401b03821161078757610aa482610a9b60078b015461271d565b60078b016129d1565b600090601f8311600114610d1757610ad5929160009183610d0c575b50508160011b916000199060031b1c19161790565b60078701555b6001600160401b03821161078757610b0382610afa600889015461271d565b600889016129d1565b600090601f8311600114610c9e57610b33929160009183610c935750508160011b916000199060031b1c19161790565b60088501555b60ff60098501911660ff198254161790556001600160401b03811161078757602095610b7582610b6c600a87015461271d565b600a87016129d1565b600090601f8311600114610c2457610ba5929160009183610c195750508160011b916000199060031b1c19161790565b600a8301555b60ff600b8301911660ff1982541617905561010435600c820155600d61012435910155817fe408867aabf84d5719fdc2299591d48d954b182f6c5e6e00c70fbb6ccc9fef676040805193610c018560243561260b565b33858801526001600160a01b031693a3604051908152f35b013590508880610ac0565b600a859392930160005287600020906000935b601f1984168510610c7c576001945083601f19811610610c62575b505050811b01600a830155610bab565b0135600019600384901b60f8161c19169055878080610c52565b818101358355938901936001909201918901610c37565b013590508a80610ac0565b601f198316916008880160005260206000209260005b818110610cf45750908460019594939210610cda575b505050811b016008850155610b39565b0135600019600384901b60f8161c19169055898080610cca565b91936020600181928787013581550195019201610cb4565b013590508c80610ac0565b601f1983169160078a0160005260206000209260005b818110610d6d5750908460019594939210610d53575b505050811b016007870155610adb565b0135600019600384901b60f8161c191690558b8080610d43565b91936020600181928787013581550195019201610d2d565b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964206c696d69747360901b6044820152606490fd5b60405162461bcd60e51b8152602060048201526012602482015271496e76616c696420766f6c6174696c69747960701b6044820152606490fd5b60405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481c9959da5cdd195c995960721b6044820152606490fd5b60405163e2517d3f60e01b81523360048201527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16024820152604490fd5b346101d45760203660031901126101d45760026000805160206131df83398151915254146112e45760026000805160206131df83398151915255600435600052600260205260406000206006810154610ec960ff82161561293e565b610ed960ff8260081c161561297d565b600382015442106112ad576004820154600583015490610ef982826129c4565b600554600454908181029181830414901517156112315760649004116112775711156112475760ff600183015416610f3081612696565b15610f81575b50600601805460ff191660011790556004357f7b1bcf1ccf901a11589afff5504d59fd0a53780eed2a952adade0348985139e0600080a260016000805160206131df83398151915255005b60101c6001600160a01b0316600081815260208190526040902080546001600160a01b0319811683178255600684015491929091600a60b082901c60ff1610156112065760ff60a01b9060101c169081816affffffffffffffffffffff60a81b8516171784556006850154610ffb60ff8260b81c16612696565b6001600160b01b0319909316171760109190911c60ff60a81b161781556110286007830160018301612f5e565b6110386008830160028301612f5e565b60ff600983015416600382019060ff1982541617905561105e600a830160048301612f5e565b60ff600b83015416600582019060ff19825416179055600c8201546006820155600d820154806007830155600a810290808204600a14901517156112315760088201556006820154600a60ff8260b01c161015908161120657600460ff8260b01c161491821561121c575b82156111ee575b5081156111cd575b50600b82019060ff801983541691151516179055600e8101600160ff1982541617905542600f820155601042910155600681015461111b60ff8260b01c16612618565b90815491600160401b831015610787578261113e9160016111689501815561267e565b81546001600160a01b0360039290921b82811b1990911660109490941c909116901b919091179055565b60068101547f957ac733877fc1e091187617619942ea3674cbdb3eb14a260d1b85fa4644bba7604060ff8360b81c16928151936111ab8560ff8460b01c1661260b565b6111b481612696565b602085015260101c6001600160a01b031692a281610f36565b60029150806111e260ff809360b81c16612696565b60b81c161015836110d8565b90915061120657600360ff8260b01c161490846110d0565b634e487b7160e01b600052602160045260246000fd5b5060b081901c60ff16600114915060006110c9565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600860248201526714995a9958dd195960c21b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e54696d656c6f636b2061637469766560881b6044820152606490fd5b604051633ee5aeb560e01b8152600490fd5b346101d45760403660031901126101d45761130f6125f5565b6004356000526000805160206131bf83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101d45760003660031901126101d45760206040517fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18152f35b346101d45760003660031901126101d45760206040516203f4808152f35b346101d45760003660031901126101d4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036114145760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b346101d45760403660031901126101d45760043560243590811515918281036101d4573360009081527fb323bca1072ad6c43c8a5019bad43672f13be3697b760574a9a2f43b558a3aa5602090815260409091205490919060008051602061319f8339815191529060ff1615611592575082600052600282526040600020906114c560ff60068401546114bb8282161561293e565b60081c161561297d565b8360005260038352604060002033600052835260ff6040600020541661155d57600084815260038452604080822033835285529020805460ff191660011790557fe45672636f462aa58432cc4242a5826b19ac6c35399fc5979d9cc885ac3b5d57929190156115495760040161153b81546129b5565b90555b6040519384523393a3005b60050161155681546129b5565b905561153e565b60405162461bcd60e51b815260048101849052600d60248201526c105b1c9958591e481d9bdd1959609a1b6044820152606490fd5b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346101d45760003660031901126101d4576020600454604051908152f35b60403660031901126101d4576115e26125df565b60249081356001600160401b0381116101d457366023820112156101d457806004013561160e81612855565b9261161c604051948561278f565b81845260209182850193368783830101116101d45781600092888693018737860101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115611854575b50611414577f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3806000526000805160206131bf8339815191528452604060002033600052845260ff604060002054161561183757508116936040516352d1902d60e01b81528381600481895afa60009181611808575b5061170857604051634c9c8ce360e01b8152600481018790528790fd5b8590877f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc918281036117f35750843b156117dd575080546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28151156117c2575060006104999481925190845af4903d156117b9573d61179c81612855565b906117aa604051928361278f565b8152600081943d92013e61311b565b6060925061311b565b9350505050346117ce57005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101849052fd5b60405190632a87526960e21b82526004820152fd5b9091508481813d8311611830575b611820818361278f565b810103126101d4575190886116eb565b503d611816565b866044916040519163e2517d3f60e01b8352336004840152820152fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141587611675565b346101d45760203660031901126101d45761189b6125df565b6118a3612a27565b6001600160a01b038116906118b9821515612903565b81600052600660205260ff6040600020541661195a5760055490600160401b82101561078757611914816118f68460016119329601600555612631565b90919060018060a01b038084549260031b9316831b921b1916179055565b8260005260066020526040600020600160ff19825416179055612a94565b507fe366c1c0452ed8eec96861e9e54141ebff23c9ec89fe27b996b45f5ec3884987600080a2005b60405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903b30b634b230ba37b960791b6044820152606490fd5b346101d45760203660031901126101d45760006102406040516119b581612773565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015282610160820152606061018082015260606101a0820152826101c082015260606101e08201528261020082015282610220820152015260043560005260026020526040600020600d60405191611a4c83612773565b805483526001810154611a6160ff8216612696565b60ff81811660208601526001600160a01b03600892831c811660408701526002840154606087015260038401546080870152600484015460a0870152600584015460c08701526006840154808316151560e08801529283901c82161515610100870152601083901c1661012086015290611ae560b082901c8316610140870161289d565b611af3828260b81c16612696565b60b81c16610160840152611b09600782016127b0565b610180840152611b1b600882016127b0565b6101a084015260ff6009820154166101c0840152611b3b600a82016127b0565b6101e084015260ff600b82015416610200840152600c8101546102208401520154610240820152604051809160208252805160208301526020810151611b8081612696565b604083015260018060a01b03604082015116606083015260608101516080830152608081015160a083015260a081015160c083015260c081015160e083015260e08101511515610100830152610100810151151561012083015260018060a01b0361012082015116610140830152611c0261014082015161016084019061260b565b610160810151611c1181612696565b610180830152610180810151610240611c80611c3c61026093846101a08801526102808701906126a0565b611c5a6101a086015191601f199283898303016101c08a01526126a0565b9060ff6101c0870151166101e08801526101e086015190878303016102008801526126a0565b9260ff61020082015116610220860152610220810151828601520151908301520390f35b346101d45760203660031901126101d457611cbd6125df565b611cc5612a27565b6001600160a01b0381811660008181526006602052604090205490929060ff1615611dd857611d0990836000526006602052604060002060ff198154169055612e33565b5060005b60059081549182821015611dcf57839285611d2784612631565b969054600397881b1c1614611d43575050600191925001611d0d565b9092916000199180830191908211611231576118f684611d65611d7294612631565b905490891b1c1691612631565b82548015611db9570192611d8584612631565b81939154921b1b19169055555b7fe1434e25d6611e0db941968fdc97811c982ac1602e951637d206f5fdda9dd8f1600080a2005b634e487b7160e01b600052603160045260246000fd5b50505050611d92565b60405162461bcd60e51b815260206004820152600d60248201526c2737ba103b30b634b230ba37b960991b6044820152606490fd5b346101d45760403660031901126101d457611e266125f5565b336001600160a01b03821603611e425761049990600435612edb565b60405163334bd91960e11b8152600490fd5b346101d45760203660031901126101d4576004356005548110156101d457611e7d602091612631565b905460405160039290921b1c6001600160a01b03168152f35b346101d45760203660031901126101d45760043560005260026020526040600020805460018201549060028301549260038101549060048101549260058201549060068301549060078401611eea906127b0565b611ef6600886016127b0565b91600986015460ff1693600a8701611f0d906127b0565b95600b88015460ff1699600c89015498600d0154996040519d8e809e61026097825260ff8116611f3c90612696565b60ff81166020830152600160a01b600190039060081c1660408201526060015260808d015260a08c015260c08b015260ff8116151560e08b01528060081c60ff1615156101008b0152600160a01b600190038160101c166101208b01526101408a018160b01c60ff1690611faf9161260b565b8060b81c60ff16611fbf90612696565b60b81c60ff166101608a0152806101808a01528801611fdd916126a0565b8781036101a0890152611fef916126a0565b906101c08701528581036101e0870152612008916126a0565b926102008501526102208401526102408301520390f35b346101d45760403660031901126101d4576120386125df565b6120406125f5565b3360009081527f07966f2ab141347034724e9b2a472c2f77f5cd745aeba27cacba797b8fcb708660205260409020547fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092389060ff161561159257506001600160a01b039182166000818152602081905260409020600e015460ff161561210257600052600060205260406000209160098301911681549060ff60a01b81151560a01b16916affffffffffffffffffffff60a81b1617179055601042910155600080f35b60405162461bcd60e51b815260206004820152600e60248201526d139bdd081c9959da5cdd195c995960921b6044820152606490fd5b346101d45760203660031901126101d4576121516125df565b600061026060405161216281612757565b828152826020820152826040820152606080820152606060808201528260a0820152606060c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c082015260606101e0820152826102008201528261022082015282610240820152015260018060a01b03166000526000602052604060002060106040519161220583612757565b80546001600160a01b038116845260ff9061222960a082901c83166020870161289d565b612237828260a81c16612696565b60a81c16604084015261224c600182016127b0565b606084015261225d600282016127b0565b608084015260ff60038201541660a084015261227b600482016127b0565b60c0840152600581015460ff90811660e085015260068201546101008501526007820154610120850152600882015461014085015260098201546001600160a01b03811661016086015260a01c81161515610180850152600a8201546101a0850152600b8201541615156101c08401526122f7600c82016128a9565b6101e0840152600d81015461020084015260ff600e820154161515610220840152600f810154610240840152015461026082015260405180916020825260018060a01b0381511660208301526123556020820151604084019061260b565b604081015161236381612696565b606083015261026061244e6123c86123a561238f606086015161028060808901526102a08801906126a0565b6080860151878203601f190160a08901526126a0565b60ff60a08601511660c087015260c0850151601f198783030160e08801526126a0565b60ff60e08501511661010086015261010084015161012086015261012084015161014086015261014084015161016086015260018060a01b036101608501511661018086015261018084015115156101a08601526101a08401516101c08601526101c084015115156101e08601526101e0840151601f19868303016102008701526126e0565b9161020081015161022085015261022081015115156102408501526102408101518285015201516102808301520390f35b346101d45760403660031901126101d45761049960043561249e6125f5565b90806000526000805160206131bf8339815191526020526124c6600160406000200154612a61565b612dbe565b346101d45760203660031901126101d4576004356000526000805160206131bf8339815191526020526020600160406000200154604051908152f35b346101d45760403660031901126101d457600435600a8110156101d45761253060243591612618565b80548210156101d457602091611e7d9161267e565b346101d45760203660031901126101d4576001600160a01b036125666125df565b166000526000602052602060ff60406000205460a01c1661258a604051809261260b565bf35b346101d45760203660031901126101d4576004359063ffffffff60e01b82168092036101d457602091637965db0b60e01b81149081156125ce575b5015158152f35b6301ffc9a760e01b149050836125c7565b600435906001600160a01b03821682036101d457565b602435906001600160a01b03821682036101d457565b90600a8210156112065752565b600a811015611206576000526001602052604060002090565b6005548110156126685760056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00190600090565b634e487b7160e01b600052603260045260246000fd5b80548210156126685760005260206000200190600090565b6005111561120657565b919082519283825260005b8481106126cc575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016126ab565b90815180825260208080930193019160005b828110612700575050505090565b83516001600160a01b0316855293810193928101926001016126f2565b90600182811c9216801561274d575b602083101461273757565b634e487b7160e01b600052602260045260246000fd5b91607f169161272c565b61028081019081106001600160401b0382111761078757604052565b61026081019081106001600160401b0382111761078757604052565b90601f801991011681019081106001600160401b0382111761078757604052565b906040519182600082546127c38161271d565b9081845260209460019160018116908160001461283357506001146127f4575b5050506127f29250038361278f565b565b600090815285812095935091905b81831061281b5750506127f293508201013880806127e3565b85548884018501529485019487945091830191612802565b925050506127f294925060ff191682840152151560051b8201013880806127e3565b6001600160401b03811161078757601f01601f191660200190565b9181601f840112156101d4578235916001600160401b0383116101d457602083818601950101116101d457565b600a8210156112065752565b90604051918281549182825260209260208301916000526020600020936000905b8282106128e0575050506127f29250038361278f565b85546001600160a01b0316845260019586019588955093810193909101906128ca565b1561290a57565b60405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606490fd5b1561294557565b60405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606490fd5b1561298457565b60405162461bcd60e51b815260206004820152600960248201526810d85b98d95b1b195960ba1b6044820152606490fd5b60001981146112315760010190565b9190820180921161123157565b90601f81116129df57505050565b6000916000526020600020906020601f850160051c83019410612a1d575b601f0160051c01915b828110612a1257505050565b818155600101612a06565b90925082906129fd565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604081205460ff16156115925750565b806000526000805160206131bf83398151915260205260406000203360005260205260ff60406000205416156115925750565b6001600160a01b031660008181527fb323bca1072ad6c43c8a5019bad43672f13be3697b760574a9a2f43b558a3aa5602052604081205490919060008051602061319f833981519152906000805160206131bf8339815191529060ff16612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b50505090565b6001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120549091906000805160206131bf8339815191529060ff16612bbb578280526020526040822081835260205260408220600160ff19825416179055339160008051602061317f8339815191528180a4600190565b505090565b6001600160a01b031660008181527f07966f2ab141347034724e9b2a472c2f77f5cd745aeba27cacba797b8fcb708660205260408120549091907fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c309238906000805160206131bf8339815191529060ff16612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b6001600160a01b031660008181527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf760205260408120549091907fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1906000805160206131bf8339815191529060ff16612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b6001600160a01b031660008181527fab71e3f32666744d246edff3f96e4bdafee2e9867098cdd118a979a7464786a860205260408120549091907f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3906000805160206131bf8339815191529060ff16612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b906000918083526000805160206131bf83398151915280602052604084209260018060a01b03169283855260205260ff60408520541615600014612b2c578184526020526040832082845260205260408320600160ff1982541617905560008051602061317f833981519152339380a4600190565b6001600160a01b031660008181527fb323bca1072ad6c43c8a5019bad43672f13be3697b760574a9a2f43b558a3aa5602052604081205490919060008051602061319f833981519152906000805160206131bf8339815191529060ff1615612b2c57818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b906000918083526000805160206131bf83398151915280602052604084209260018060a01b03169283855260205260ff604085205416600014612b2c57818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b9080821461303d57612f70815461271d565b906001600160401b03821161078757612f9382612f8d855461271d565b856129d1565b600090601f8311600114612fd257612fc3929160009183612fc75750508160011b916000199060031b1c19161790565b9055565b015490503880610ac0565b815260208082208483528183209291601f1985169083905b82821061302457505090846001959493921061300b575b505050811b019055565b015460001960f88460031b161c19169055388080613001565b8495819295850154815560018091019601940190612fea565b5050565b90600a82101580611206576004831480156130cd575b80156130b9575b1561306d5750505062093a8090565b61120657600382149182156130ae575b508115613099575b5015613092576203f48090565b6201518090565b600291506130a681612696565b101538613085565b60051491503861307d565b506130c382612696565b600382101561305e565b5050600060018314613057565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561310957565b604051631afcd79f60e31b8152600490fd5b90613142575080511561313057805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580613175575b613153575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561314b56fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d21702c8af46127c7fa207f89d0b0a8441bb32959a0ac7df790e9ab1a25c9892602dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220e093e2030542e0531c64790d2bf28f5ba81001074c550c3a2f224eabc5393bdb64736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}