{
  "_format": "hh-sol-artifact-1",
  "contractName": "TimelockControllerUpgradeable",
  "sourceName": "contracts/governance/TimelockControllerUpgradeable.sol",
  "abi": [
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "delay",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minDelay",
          "type": "uint256"
        }
      ],
      "name": "TimelockInsufficientDelay",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "targets",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "payloads",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "values",
          "type": "uint256"
        }
      ],
      "name": "TimelockInvalidOperationLength",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "TimelockUnauthorizedCaller",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "predecessorId",
          "type": "bytes32"
        }
      ],
      "name": "TimelockUnexecutedPredecessor",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "operationId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "expectedStates",
          "type": "bytes32"
        }
      ],
      "name": "TimelockUnexpectedOperationState",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "CallExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        }
      ],
      "name": "CallSalt",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "delay",
          "type": "uint256"
        }
      ],
      "name": "CallScheduled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "Cancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldDuration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newDuration",
          "type": "uint256"
        }
      ],
      "name": "MinDelayChange",
      "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"
    },
    {
      "inputs": [],
      "name": "CANCELLER_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": "EXECUTOR_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": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "cancel",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "payload",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        }
      ],
      "name": "execute",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "payloads",
          "type": "bytes[]"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        }
      ],
      "name": "executeBatch",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMinDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "getOperationState",
      "outputs": [
        {
          "internalType": "enum TimelockControllerUpgradeable.OperationState",
          "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": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "getTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        }
      ],
      "name": "hashOperation",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "payloads",
          "type": "bytes[]"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        }
      ],
      "name": "hashOperationBatch",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "minDelay",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "proposers",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "executors",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOperation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOperationDone",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOperationPending",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOperationReady",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "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": "onTRC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "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": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "delay",
          "type": "uint256"
        }
      ],
      "name": "schedule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "payloads",
          "type": "bytes[]"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "delay",
          "type": "uint256"
        }
      ],
      "name": "scheduleBatch",
      "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": "uint256",
          "name": "newDelay",
          "type": "uint256"
        }
      ],
      "name": "updateDelay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60808060405234601d57d3601d57d2601d57611d6b90816100228239f35b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806301d5062a14610e8b57806301ffc9a714610e2b57806307bd026514610dfa578063134008d314610d4d57806313bc9f2014610d25578063248a9ca314610cfd5780632ab0f52914610cd55780632f2ff15d14610c9a57806331d5075014610c7257806336568abe14610c245780635175f87814610bc5578063584b153e14610b9357806364d6235314610b0c5780637958004c14610abf5780638065657f14610a965780638f2a0bb0146109075780638f61f4f5146108c357806391d1485414610864578063a217fddf14610840578063b08e51c0146107fc578063b1c5f427146107c8578063bc197c8114610729578063c4c4c7b3146104a2578063c4d252f5146103ae578063d45c44351461036e578063d547741f1461032c578063e38335e5146101f3578063f23a6e61146101945763f27a0c920361000e573461019057d361019057d2610190575f3660031901126101905760205f80516020611ca883398151915254604051908152f35b5f80fd5b3461019057d361019057d26101905760a0366003190112610190576101b7610f40565b506101c0610f5f565b506084356001600160401b038111610190576101e090369060040161106f565b5060405163f23a6e6160e01b8152602090f35b6101fc366110e5565b5f80525f80516020611ce88339815191526020527fdd1864c1ab258d549957f6a4d7e3a5005661df58241dbbc1700fb170ef0615465492979196919593949260ff161561031e575b828214801590610314575b6102f95761026661026d91888a888789888d61144b565b9687611752565b5f5b81811061027f57610018876117fd565b8080887fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5888886102f06102d78f986001998f828e6102ca8f836102c5916102d0966113d2565b6113f6565b976113d2565b359561140a565b906102e4828287876117aa565b60405194859485611284565b0390a30161026f565b50869063ffb0321160e01b5f5260045260245260445260645ffd5b508782141561024f565b6103273361169d565b610244565b3461019057d361019057d261019057604036600319011261019057610018600435610355610f5f565b90610369610362826112c3565b33906116fd565b611b46565b3461019057d361019057d2610190576020366003190112610190576004355f525f80516020611c68833981519152602052602060405f2054604051908152f35b3461019057d361019057d261019057602036600319011261019057335f9081527ffa71e07f24c4701ef65a970775979de1292cfe909335cd18a32d2b7b7398791460205260409020546004359060ff161561046b5761040c81611310565b1561045157805f525f80516020611c688339815191526020525f60408120557fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb705f80a2005b635ead8eb560e01b5f52600452600460021760245260445ffd5b63e2517d3f60e01b5f52336004527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78360245260445ffd5b3461019057d361019057d2610190576080366003190112610190576004356024356001600160401b038111610190576104df9036906004016111c7565b906044356001600160401b038111610190576104ff9036906004016111c7565b6064356001600160a81b0381168103610190575f80516020611d0883398151915254604081901c60ff161593916001600160a01b0316906001600160401b03811680159081610721575b6001149081610717575b15908161070e575b506106ff5767ffffffffffffffff1981166001175f80516020611d0883398151915255846106d3575b5061058d611c08565b610595611c08565b61059e30611827565b50806106c3575b505f5b84518110156105f2576001906105d06001600160a01b036105c98389611c33565b51166118c3565b506105eb828060a01b036105e48389611c33565b511661197c565b50016105a8565b50825f5b83518110156106255760019061061e6001600160a01b036106178388611c33565b5116611a35565b50016105f6565b507f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5604083805f80516020611ca8833981519152558151905f82526020820152a161066c57005b68ff0000000000000000195f80516020611d0883398151915254165f80516020611d08833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b6106cc90611827565b50846105a5565b68ffffffffffffffffff191668010000000000000001175f80516020611d088339815191525585610584565b63f92ee8a960e01b5f5260045ffd5b9050158761055b565b303b159150610553565b869150610549565b3461019057d361019057d26101905760a03660031901126101905761074c610f40565b50610755610f5f565b506044356001600160401b0381116101905761077590369060040161116a565b506064356001600160401b0381116101905761079590369060040161116a565b506084356001600160401b038111610190576107b590369060040161106f565b5060405163bc197c8160e01b8152602090f35b3461019057d361019057d26101905760206107f46107e5366110e5565b9695909594919493929361144b565b604051908152f35b3461019057d361019057d2610190575f3660031901126101905760206040517ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838152f35b3461019057d361019057d2610190575f3660031901126101905760206040515f8152f35b3461019057d361019057d261019057604036600319011261019057610887610f5f565b6004355f525f80516020611c8883398151915260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461019057d361019057d2610190575f3660031901126101905760206040517fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18152f35b3461019057d361019057d26101905760c0366003190112610190576004356001600160401b038111610190576109419036906004016110b5565b906024356001600160401b038111610190576109619036906004016110b5565b6044929192356001600160401b038111610190576109839036906004016110b5565b9390916064356084359560a4359261099a33611617565b808914801590610a8c575b610a72576109b988848489858a8f8e61144b565b986109c4858b61158c565b895f5b828110610a04575089806109d757005b60207f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038791604051908152a2005b806001927f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b610a678f8c610a5a8f928e610a538f8f90610a4d6102c58f80979481956113d2565b996113d2565b359761140a565b906040519687968761124c565b0390a3018a906109c7565b908863ffb0321160e01b5f5260045260245260445260645ffd5b50818914156109a5565b3461019057d361019057d26101905760206107f4610ab336610fc8565b9493909392919261137d565b3461019057d361019057d261019057602036600319011261019057610ae5600435611339565b6040516004821015610af8576020918152f35b634e487b7160e01b5f52602160045260245ffd5b3461019057d361019057d261019057602036600319011261019057600435303303610b80577f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560405f80516020611ca8833981519152548151908152836020820152a15f80516020611ca883398151915255005b63e2850c5960e01b5f523360045260245ffd5b3461019057d361019057d2610190576020366003190112610190576020610bbb600435611310565b6040519015158152f35b3461019057d361019057d261019057608036600319011261019057610be8610f40565b50610bf1610f5f565b506064356001600160401b03811161019057610c1190369060040161106f565b50604051630a2ebf0f60e31b8152602090f35b3461019057d361019057d261019057604036600319011261019057610c47610f5f565b336001600160a01b03821603610c635761001890600435611b46565b63334bd91960e11b5f5260045ffd5b3461019057d361019057d2610190576020366003190112610190576020610bbb6004356112f9565b3461019057d361019057d261019057604036600319011261019057610018600435610cc3610f5f565b90610cd0610362826112c3565b611ab5565b3461019057d361019057d2610190576020366003190112610190576020610bbb6004356112e1565b3461019057d361019057d26101905760203660031901126101905760206107f46004356112c3565b3461019057d361019057d2610190576020366003190112610190576020610bbb6004356112ab565b610018610dd85f610de47fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58610dcf610d8436610fc8565b5f80516020611cc88339815191528a9995979299949394525f80516020611c8883398151915260205260408a208a805260205260ff60408b20541615610dec575b888484898961137d565b98899788611752565b6102e4828287876117aa565b0390a36117fd565b610df53361169d565b610dc5565b3461019057d361019057d2610190575f3660031901126101905760206040515f80516020611cc88339815191528152f35b3461019057d361019057d26101905760203660031901126101905760043563ffffffff60e01b811680910361019057602090630271189760e51b8114908115610e7a575b506040519015158152f35b6301ffc9a760e01b14905082610e6f565b3461019057d361019057d26101905760c036600319011261019057610eae610f40565b602435906044356001600160401b038111610190577f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca92610ef45f923690600401610f9b565b94909160643594610f366084359660a43590610f0f33611617565b610f1d89828c8a898961137d565b998a97610f2a848a61158c565b6040519687968761124c565b0390a3806109d757005b6004356001600160a81b0381168103610190576001600160a01b031690565b6024356001600160a81b0381168103610190576001600160a01b031690565b356001600160a81b0381168103610190576001600160a01b031690565b9181601f84011215610190578235916001600160401b038311610190576020838186019501011161019057565b60a0600319820112610190576004356001600160a81b0381168103610190576001600160a01b03169160243591604435906001600160401b0382116101905761101391600401610f9b565b90916064359060843590565b90601f801991011681019081106001600160401b0382111761104057604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161104057601f01601f191660200190565b81601f820112156101905780359061108682611054565b92611094604051948561101f565b8284526020838301011161019057815f926020809301838601378301015290565b9181601f84011215610190578235916001600160401b038311610190576020808501948460051b01011161019057565b60a0600319820112610190576004356001600160401b038111610190578161110f916004016110b5565b929092916024356001600160401b0381116101905781611131916004016110b5565b92909291604435906001600160401b03821161019057611013916004016110b5565b6001600160401b0381116110405760051b60200190565b9080601f8301121561019057813561118181611153565b9261118f604051948561101f565b81845260208085019260051b82010192831161019057602001905b8282106111b75750505090565b81358152602091820191016111aa565b9080601f830112156101905781356111de81611153565b926111ec604051948561101f565b81845260208085019260051b82010192831161019057602001905b8282106112145750505090565b6020809161122184610f7e565b815201910190611207565b908060209392818452848401375f828201840152601f01601f1916010190565b92909361127a926080959897969860018060a01b03168552602085015260a0604085015260a084019161122c565b9460608201520152565b6112a8949260609260018060a01b031682526020820152816040820152019161122c565b90565b6112b490611339565b6004811015610af85760021490565b5f525f80516020611c88833981519152602052600160405f20015490565b6112ea90611339565b6004811015610af85760031490565b61130290611339565b6004811015610af857151590565b61131990611339565b6004811015610af85760018114908115611331575090565b600291501490565b5f525f80516020611c6883398151915260205260405f205480155f1461135e57505f90565b6001810361136c5750600390565b42101561137857600190565b600290565b946113b36113cc94959293604051968795602087019960018060a01b03168a52604087015260a0606087015260c086019161122c565b91608084015260a083015203601f19810183528261101f565b51902090565b91908110156113e25760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a81b03811681036101905790565b91908110156113e25760051b81013590601e19813603018212156101905701908135916001600160401b038311610190576020018236038113610190579190565b9693949190969592956040519660208801988060c08a0160a08c525260e0890192905f5b81811061156657505050878203601f190160408901528082526001600160fb1b038111610190579087959394929160051b8092602083013701848103606086015260208101849052600584901b8101604090810194908201915f90889036829003601e1901905b848410611500575050505050506113cc9450608084015260a083015203601f19810183528261101f565b91939597909294969850601f19601f198383030101875289358381121561019057840190602082359201916001600160401b03811161019057803603831361019057611552602092839260019561122c565b9b0197019401918a989699979593916114d6565b909193602080600192838060a01b0361157e89610f7e565b16815201950192910161146f565b90611596826112f9565b6115ff575f80516020611ca8833981519152548082106115e957504201908142116115d5575f525f80516020611c6883398151915260205260405f2055565b634e487b7160e01b5f52601160045260245ffd5b90635433660960e01b5f5260045260245260445ffd5b50635ead8eb560e01b5f52600452600160245260445ffd5b6001600160a01b0381165f9081527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf7602052604090205460ff16156116595750565b63e2517d3f60e01b5f9081526001600160a01b03919091166004527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1602452604490fd5b6001600160a01b0381165f9081525f80516020611ce8833981519152602052604090205460ff16156116cc5750565b63e2517d3f60e01b5f9081526001600160a01b03919091166004525f80516020611cc8833981519152602452604490fd5b90815f525f80516020611c8883398151915260205260405f2060018060a01b0382165f5260205260ff60405f20541615611735575050565b63e2517d3f60e01b5f5260018060a01b031660045260245260445ffd5b61175b816112ab565b15611793575080151580611783575b6117715750565b63121534c360e31b5f5260045260245ffd5b5061178d816112e1565b1561176a565b635ead8eb560e01b5f52600452600460245260445ffd5b6117f2935f93928493826040519384928337810185815203925af13d156117f5573d906117d682611054565b916117e4604051938461101f565b82523d5f602084013e611be2565b50565b606090611be2565b611806816112ab565b15611793575f525f80516020611c68833981519152602052600160405f2055565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff166118be576001600160a01b03165f8181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391905f80516020611c488339815191528180a4600190565b505f90565b6001600160a01b0381165f9081527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf7602052604090205460ff166118be576001600160a01b03165f8181527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf760205260408120805460ff191660011790553391907fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1905f80516020611c488339815191529080a4600190565b6001600160a01b0381165f9081527ffa71e07f24c4701ef65a970775979de1292cfe909335cd18a32d2b7b73987914602052604090205460ff166118be576001600160a01b03165f8181527ffa71e07f24c4701ef65a970775979de1292cfe909335cd18a32d2b7b7398791460205260408120805460ff191660011790553391907ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783905f80516020611c488339815191529080a4600190565b6001600160a01b0381165f9081525f80516020611ce8833981519152602052604090205460ff166118be576001600160a01b03165f8181525f80516020611ce883398151915260205260408120805460ff191660011790553391905f80516020611cc8833981519152905f80516020611c488339815191529080a4600190565b5f8181525f80516020611c88833981519152602090815260408083206001600160a01b038616845290915290205460ff16611b40575f8181525f80516020611c88833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291905f80516020611c488339815191529080a4600190565b50505f90565b5f8181525f80516020611c88833981519152602090815260408083206001600160a01b038616845290915290205460ff1615611b40575f8181525f80516020611c88833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b15611bea5790565b805115611bf957602081519101fd5b63d6bda27560e01b5f5260045ffd5b60ff5f80516020611d088339815191525460401c1615611c2457565b631afcd79f60e31b5f5260045ffd5b80518210156113e25760209160051b01019056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb3601d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6352fce5e8a5d0d9e8d1ea29f4525e512e9c27bf92cae50374d497f918ab48f382f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a36474726f6e582212206d8a2c25ad1b754dfe22df646d12851a9935106857c6a95e65aab1e8ea5776b16c6578706572696d656e74616cf564736f6c634300081a0041",
  "deployedBytecode": "0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806301d5062a14610e8b57806301ffc9a714610e2b57806307bd026514610dfa578063134008d314610d4d57806313bc9f2014610d25578063248a9ca314610cfd5780632ab0f52914610cd55780632f2ff15d14610c9a57806331d5075014610c7257806336568abe14610c245780635175f87814610bc5578063584b153e14610b9357806364d6235314610b0c5780637958004c14610abf5780638065657f14610a965780638f2a0bb0146109075780638f61f4f5146108c357806391d1485414610864578063a217fddf14610840578063b08e51c0146107fc578063b1c5f427146107c8578063bc197c8114610729578063c4c4c7b3146104a2578063c4d252f5146103ae578063d45c44351461036e578063d547741f1461032c578063e38335e5146101f3578063f23a6e61146101945763f27a0c920361000e573461019057d361019057d2610190575f3660031901126101905760205f80516020611ca883398151915254604051908152f35b5f80fd5b3461019057d361019057d26101905760a0366003190112610190576101b7610f40565b506101c0610f5f565b506084356001600160401b038111610190576101e090369060040161106f565b5060405163f23a6e6160e01b8152602090f35b6101fc366110e5565b5f80525f80516020611ce88339815191526020527fdd1864c1ab258d549957f6a4d7e3a5005661df58241dbbc1700fb170ef0615465492979196919593949260ff161561031e575b828214801590610314575b6102f95761026661026d91888a888789888d61144b565b9687611752565b5f5b81811061027f57610018876117fd565b8080887fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5888886102f06102d78f986001998f828e6102ca8f836102c5916102d0966113d2565b6113f6565b976113d2565b359561140a565b906102e4828287876117aa565b60405194859485611284565b0390a30161026f565b50869063ffb0321160e01b5f5260045260245260445260645ffd5b508782141561024f565b6103273361169d565b610244565b3461019057d361019057d261019057604036600319011261019057610018600435610355610f5f565b90610369610362826112c3565b33906116fd565b611b46565b3461019057d361019057d2610190576020366003190112610190576004355f525f80516020611c68833981519152602052602060405f2054604051908152f35b3461019057d361019057d261019057602036600319011261019057335f9081527ffa71e07f24c4701ef65a970775979de1292cfe909335cd18a32d2b7b7398791460205260409020546004359060ff161561046b5761040c81611310565b1561045157805f525f80516020611c688339815191526020525f60408120557fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb705f80a2005b635ead8eb560e01b5f52600452600460021760245260445ffd5b63e2517d3f60e01b5f52336004527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78360245260445ffd5b3461019057d361019057d2610190576080366003190112610190576004356024356001600160401b038111610190576104df9036906004016111c7565b906044356001600160401b038111610190576104ff9036906004016111c7565b6064356001600160a81b0381168103610190575f80516020611d0883398151915254604081901c60ff161593916001600160a01b0316906001600160401b03811680159081610721575b6001149081610717575b15908161070e575b506106ff5767ffffffffffffffff1981166001175f80516020611d0883398151915255846106d3575b5061058d611c08565b610595611c08565b61059e30611827565b50806106c3575b505f5b84518110156105f2576001906105d06001600160a01b036105c98389611c33565b51166118c3565b506105eb828060a01b036105e48389611c33565b511661197c565b50016105a8565b50825f5b83518110156106255760019061061e6001600160a01b036106178388611c33565b5116611a35565b50016105f6565b507f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5604083805f80516020611ca8833981519152558151905f82526020820152a161066c57005b68ff0000000000000000195f80516020611d0883398151915254165f80516020611d08833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b6106cc90611827565b50846105a5565b68ffffffffffffffffff191668010000000000000001175f80516020611d088339815191525585610584565b63f92ee8a960e01b5f5260045ffd5b9050158761055b565b303b159150610553565b869150610549565b3461019057d361019057d26101905760a03660031901126101905761074c610f40565b50610755610f5f565b506044356001600160401b0381116101905761077590369060040161116a565b506064356001600160401b0381116101905761079590369060040161116a565b506084356001600160401b038111610190576107b590369060040161106f565b5060405163bc197c8160e01b8152602090f35b3461019057d361019057d26101905760206107f46107e5366110e5565b9695909594919493929361144b565b604051908152f35b3461019057d361019057d2610190575f3660031901126101905760206040517ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838152f35b3461019057d361019057d2610190575f3660031901126101905760206040515f8152f35b3461019057d361019057d261019057604036600319011261019057610887610f5f565b6004355f525f80516020611c8883398151915260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461019057d361019057d2610190575f3660031901126101905760206040517fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18152f35b3461019057d361019057d26101905760c0366003190112610190576004356001600160401b038111610190576109419036906004016110b5565b906024356001600160401b038111610190576109619036906004016110b5565b6044929192356001600160401b038111610190576109839036906004016110b5565b9390916064356084359560a4359261099a33611617565b808914801590610a8c575b610a72576109b988848489858a8f8e61144b565b986109c4858b61158c565b895f5b828110610a04575089806109d757005b60207f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038791604051908152a2005b806001927f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b610a678f8c610a5a8f928e610a538f8f90610a4d6102c58f80979481956113d2565b996113d2565b359761140a565b906040519687968761124c565b0390a3018a906109c7565b908863ffb0321160e01b5f5260045260245260445260645ffd5b50818914156109a5565b3461019057d361019057d26101905760206107f4610ab336610fc8565b9493909392919261137d565b3461019057d361019057d261019057602036600319011261019057610ae5600435611339565b6040516004821015610af8576020918152f35b634e487b7160e01b5f52602160045260245ffd5b3461019057d361019057d261019057602036600319011261019057600435303303610b80577f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560405f80516020611ca8833981519152548151908152836020820152a15f80516020611ca883398151915255005b63e2850c5960e01b5f523360045260245ffd5b3461019057d361019057d2610190576020366003190112610190576020610bbb600435611310565b6040519015158152f35b3461019057d361019057d261019057608036600319011261019057610be8610f40565b50610bf1610f5f565b506064356001600160401b03811161019057610c1190369060040161106f565b50604051630a2ebf0f60e31b8152602090f35b3461019057d361019057d261019057604036600319011261019057610c47610f5f565b336001600160a01b03821603610c635761001890600435611b46565b63334bd91960e11b5f5260045ffd5b3461019057d361019057d2610190576020366003190112610190576020610bbb6004356112f9565b3461019057d361019057d261019057604036600319011261019057610018600435610cc3610f5f565b90610cd0610362826112c3565b611ab5565b3461019057d361019057d2610190576020366003190112610190576020610bbb6004356112e1565b3461019057d361019057d26101905760203660031901126101905760206107f46004356112c3565b3461019057d361019057d2610190576020366003190112610190576020610bbb6004356112ab565b610018610dd85f610de47fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58610dcf610d8436610fc8565b5f80516020611cc88339815191528a9995979299949394525f80516020611c8883398151915260205260408a208a805260205260ff60408b20541615610dec575b888484898961137d565b98899788611752565b6102e4828287876117aa565b0390a36117fd565b610df53361169d565b610dc5565b3461019057d361019057d2610190575f3660031901126101905760206040515f80516020611cc88339815191528152f35b3461019057d361019057d26101905760203660031901126101905760043563ffffffff60e01b811680910361019057602090630271189760e51b8114908115610e7a575b506040519015158152f35b6301ffc9a760e01b14905082610e6f565b3461019057d361019057d26101905760c036600319011261019057610eae610f40565b602435906044356001600160401b038111610190577f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca92610ef45f923690600401610f9b565b94909160643594610f366084359660a43590610f0f33611617565b610f1d89828c8a898961137d565b998a97610f2a848a61158c565b6040519687968761124c565b0390a3806109d757005b6004356001600160a81b0381168103610190576001600160a01b031690565b6024356001600160a81b0381168103610190576001600160a01b031690565b356001600160a81b0381168103610190576001600160a01b031690565b9181601f84011215610190578235916001600160401b038311610190576020838186019501011161019057565b60a0600319820112610190576004356001600160a81b0381168103610190576001600160a01b03169160243591604435906001600160401b0382116101905761101391600401610f9b565b90916064359060843590565b90601f801991011681019081106001600160401b0382111761104057604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161104057601f01601f191660200190565b81601f820112156101905780359061108682611054565b92611094604051948561101f565b8284526020838301011161019057815f926020809301838601378301015290565b9181601f84011215610190578235916001600160401b038311610190576020808501948460051b01011161019057565b60a0600319820112610190576004356001600160401b038111610190578161110f916004016110b5565b929092916024356001600160401b0381116101905781611131916004016110b5565b92909291604435906001600160401b03821161019057611013916004016110b5565b6001600160401b0381116110405760051b60200190565b9080601f8301121561019057813561118181611153565b9261118f604051948561101f565b81845260208085019260051b82010192831161019057602001905b8282106111b75750505090565b81358152602091820191016111aa565b9080601f830112156101905781356111de81611153565b926111ec604051948561101f565b81845260208085019260051b82010192831161019057602001905b8282106112145750505090565b6020809161122184610f7e565b815201910190611207565b908060209392818452848401375f828201840152601f01601f1916010190565b92909361127a926080959897969860018060a01b03168552602085015260a0604085015260a084019161122c565b9460608201520152565b6112a8949260609260018060a01b031682526020820152816040820152019161122c565b90565b6112b490611339565b6004811015610af85760021490565b5f525f80516020611c88833981519152602052600160405f20015490565b6112ea90611339565b6004811015610af85760031490565b61130290611339565b6004811015610af857151590565b61131990611339565b6004811015610af85760018114908115611331575090565b600291501490565b5f525f80516020611c6883398151915260205260405f205480155f1461135e57505f90565b6001810361136c5750600390565b42101561137857600190565b600290565b946113b36113cc94959293604051968795602087019960018060a01b03168a52604087015260a0606087015260c086019161122c565b91608084015260a083015203601f19810183528261101f565b51902090565b91908110156113e25760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a81b03811681036101905790565b91908110156113e25760051b81013590601e19813603018212156101905701908135916001600160401b038311610190576020018236038113610190579190565b9693949190969592956040519660208801988060c08a0160a08c525260e0890192905f5b81811061156657505050878203601f190160408901528082526001600160fb1b038111610190579087959394929160051b8092602083013701848103606086015260208101849052600584901b8101604090810194908201915f90889036829003601e1901905b848410611500575050505050506113cc9450608084015260a083015203601f19810183528261101f565b91939597909294969850601f19601f198383030101875289358381121561019057840190602082359201916001600160401b03811161019057803603831361019057611552602092839260019561122c565b9b0197019401918a989699979593916114d6565b909193602080600192838060a01b0361157e89610f7e565b16815201950192910161146f565b90611596826112f9565b6115ff575f80516020611ca8833981519152548082106115e957504201908142116115d5575f525f80516020611c6883398151915260205260405f2055565b634e487b7160e01b5f52601160045260245ffd5b90635433660960e01b5f5260045260245260445ffd5b50635ead8eb560e01b5f52600452600160245260445ffd5b6001600160a01b0381165f9081527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf7602052604090205460ff16156116595750565b63e2517d3f60e01b5f9081526001600160a01b03919091166004527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1602452604490fd5b6001600160a01b0381165f9081525f80516020611ce8833981519152602052604090205460ff16156116cc5750565b63e2517d3f60e01b5f9081526001600160a01b03919091166004525f80516020611cc8833981519152602452604490fd5b90815f525f80516020611c8883398151915260205260405f2060018060a01b0382165f5260205260ff60405f20541615611735575050565b63e2517d3f60e01b5f5260018060a01b031660045260245260445ffd5b61175b816112ab565b15611793575080151580611783575b6117715750565b63121534c360e31b5f5260045260245ffd5b5061178d816112e1565b1561176a565b635ead8eb560e01b5f52600452600460245260445ffd5b6117f2935f93928493826040519384928337810185815203925af13d156117f5573d906117d682611054565b916117e4604051938461101f565b82523d5f602084013e611be2565b50565b606090611be2565b611806816112ab565b15611793575f525f80516020611c68833981519152602052600160405f2055565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff166118be576001600160a01b03165f8181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391905f80516020611c488339815191528180a4600190565b505f90565b6001600160a01b0381165f9081527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf7602052604090205460ff166118be576001600160a01b03165f8181527f5a8734c34b98d7c96eb2ea25f298989407e1f25da116ec139bcce0887bcb7cf760205260408120805460ff191660011790553391907fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1905f80516020611c488339815191529080a4600190565b6001600160a01b0381165f9081527ffa71e07f24c4701ef65a970775979de1292cfe909335cd18a32d2b7b73987914602052604090205460ff166118be576001600160a01b03165f8181527ffa71e07f24c4701ef65a970775979de1292cfe909335cd18a32d2b7b7398791460205260408120805460ff191660011790553391907ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783905f80516020611c488339815191529080a4600190565b6001600160a01b0381165f9081525f80516020611ce8833981519152602052604090205460ff166118be576001600160a01b03165f8181525f80516020611ce883398151915260205260408120805460ff191660011790553391905f80516020611cc8833981519152905f80516020611c488339815191529080a4600190565b5f8181525f80516020611c88833981519152602090815260408083206001600160a01b038616845290915290205460ff16611b40575f8181525f80516020611c88833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291905f80516020611c488339815191529080a4600190565b50505f90565b5f8181525f80516020611c88833981519152602090815260408083206001600160a01b038616845290915290205460ff1615611b40575f8181525f80516020611c88833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b15611bea5790565b805115611bf957602081519101fd5b63d6bda27560e01b5f5260045ffd5b60ff5f80516020611d088339815191525460401c1615611c2457565b631afcd79f60e31b5f5260045ffd5b80518210156113e25760209160051b01019056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb360002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009a37c2aa9d186a0969ff8a8267bf4e07e864c2f2768f5040949e28a624fb3601d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6352fce5e8a5d0d9e8d1ea29f4525e512e9c27bf92cae50374d497f918ab48f382f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a36474726f6e582212206d8a2c25ad1b754dfe22df646d12851a9935106857c6a95e65aab1e8ea5776b16c6578706572696d656e74616cf564736f6c634300081a0041",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
