@q-dev/gdk-sdk
Version:
Typescript Library to interact with GDK Contracts
597 lines • 57.9 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ICPTreasuryModule",
"sourceName": "contracts/presets/ICP/ICPTreasuryModule.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "token",
"type": "string"
},
{
"internalType": "string",
"name": "to",
"type": "string"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"indexed": false,
"internalType": "struct ICPTreasuryModule.ICPMessageData",
"name": "action",
"type": "tuple"
}
],
"name": "MessageSentICP",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "MODULE_RESOURCE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "resource_",
"type": "string"
},
{
"internalType": "string",
"name": "relatedExpertPanelName_",
"type": "string"
}
],
"name": "__ICPTreasuryModule_init",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registry_",
"type": "address"
},
{
"internalType": "string",
"name": "resource_",
"type": "string"
},
{
"internalType": "string",
"name": "relatedExpertPanelName_",
"type": "string"
}
],
"name": "__ICPTreasuryModule_initAndSetDeps",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "member_",
"type": "address"
},
{
"internalType": "string",
"name": "permission_",
"type": "string"
}
],
"name": "checkPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "messageId_",
"type": "uint256"
}
],
"name": "getICPMessage",
"outputs": [
{
"components": [
{
"internalType": "string",
"name": "token",
"type": "string"
},
{
"internalType": "string",
"name": "to",
"type": "string"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct ICPTreasuryModule.ICPMessageData",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getInjector",
"outputs": [
{
"internalType": "address",
"name": "injector_",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNextICPMessageId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account_",
"type": "address"
},
{
"internalType": "uint256",
"name": "proposalId_",
"type": "uint256"
}
],
"name": "getProposalKey",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account_",
"type": "address"
},
{
"internalType": "uint256",
"name": "proposalId_",
"type": "uint256"
}
],
"name": "getProposalMessageId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getResource",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getResourceRecords",
"outputs": [
{
"components": [
{
"internalType": "string",
"name": "existingRole",
"type": "string"
},
{
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"internalType": "string[]",
"name": "permissions",
"type": "string[]"
}
],
"internalType": "struct IDAOIntegration.ResourceRecords[]",
"name": "records_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "messageId",
"type": "uint256"
}
],
"name": "icpMessages",
"outputs": [
{
"internalType": "string",
"name": "token",
"type": "string"
},
{
"internalType": "string",
"name": "to",
"type": "string"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "newModuleAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nextICPMessageId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "permissionManager",
"outputs": [
{
"internalType": "contract PermissionManager",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "proposalKey",
"type": "bytes32"
}
],
"name": "proposalToMessageId",
"outputs": [
{
"internalType": "uint256",
"name": "messageId",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
},
{
"internalType": "uint256",
"name": "value_",
"type": "uint256"
}
],
"name": "redeemTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "to_",
"type": "string"
},
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
}
],
"name": "sendICPTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "token_",
"type": "string"
},
{
"internalType": "string",
"name": "to_",
"type": "string"
},
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
}
],
"name": "sendICRCTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newModuleAddress_",
"type": "address"
}
],
"name": "setCanisterModuleAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registry_",
"type": "address"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "setDependencies",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "injector_",
"type": "address"
}
],
"name": "setInjector",
"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": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"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"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612bd861004c60003960008181610755015281816107950152818161085001528181610890015261090c0152612bd86000f3fe6080604052600436106101a05760003560e01c80636c80f346116100ec578063b7dfe4921161008a578063d8ad4e1c11610064578063d8ad4e1c146104b1578063dad7f110146104d1578063ee0d8c79146104f1578063f13bdd4d1461051157600080fd5b8063b7dfe4921461044f578063bb65dc831461046f578063cc7a20491461048457600080fd5b80638cb941cc116100c65780638cb941cc146103c05780638d350d04146103e05780639b2e86921461040f578063a5a60e691461042f57600080fd5b80636c80f3461461035e57806373dee9301461038b578063837ac99b146103ab57600080fd5b80633fe59bff1161015957806352d1902d1161013357806352d1902d146102f45780635c60da1b1461030957806367c650a81461031e578063691304511461033e57600080fd5b80633fe59bff1461029e5780634f1ef286146102b457806351ce28af146102c757600080fd5b806301ffc9a7146101ac5780632b5c06bc146101e25780632fd4435f146102045780633659cfe6146102265780633e3b5b19146102465780633ea0ae681461027157600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101cc6101c7366004611cb0565b610533565b6040516101d99190611cdb565b60405180910390f35b3480156101ee57600080fd5b506101f76105a0565b6040516101d99190611d3f565b34801561021057600080fd5b5061022461021f366004611e71565b61062e565b005b34801561023257600080fd5b50610224610241366004611ef7565b61074b565b34801561025257600080fd5b50600080516020612b3c833981519152545b6040516101d99190611f21565b34801561027d57600080fd5b5061029161028c366004611f40565b610813565b6040516101d99190611f83565b3480156102aa57600080fd5b5061029160025481565b6102246102c2366004611f91565b610846565b3480156102d357600080fd5b506102916102e2366004611fdf565b60066020526000908152604090205481565b34801561030057600080fd5b506102916108ff565b34801561031557600080fd5b5061026461095c565b34801561032a57600080fd5b50610224610339366004612000565b61096b565b34801561034a57600080fd5b50610224610359366004611f91565b610a4e565b34801561036a57600080fd5b5061037e610379366004611fdf565b610af3565b6040516101d99190612083565b34801561039757600080fd5b506102246103a6366004612094565b610c64565b3480156103b757600080fd5b50600254610291565b3480156103cc57600080fd5b506102246103db366004611ef7565b610cb4565b3480156103ec57600080fd5b506104006103fb366004611fdf565b610cd2565b6040516101d9939291906120d0565b34801561041b57600080fd5b5061022461042a366004612104565b610e04565b34801561043b57600080fd5b50600354610264906001600160a01b031681565b34801561045b57600080fd5b5061022461046a366004611ef7565b610e36565b34801561047b57600080fd5b506101f7610e7f565b34801561049057600080fd5b506004546104a4906001600160a01b031681565b6040516101d991906121c1565b3480156104bd57600080fd5b506101cc6104cc366004611f91565b610f11565b3480156104dd57600080fd5b506102246104ec366004611f40565b610f90565b3480156104fd57600080fd5b5061029161050c366004611f40565b611033565b34801561051d57600080fd5b5061052661105a565b6040516101d991906122fe565b60006001600160e01b031982166363c8929f60e01b148061056457506001600160e01b0319821663f13bdd4d60e01b145b8061057f57506001600160e01b031982166336e447a160e21b145b8061059a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600180546105ad90612325565b80601f01602080910402602001604051908101604052809291908181526020018280546105d990612325565b80156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505081565b600054610100900460ff161580801561064e5750600054600160ff909116105b806106685750303b158015610668575060005460ff166001145b61068d5760405162461bcd60e51b81526004016106849061239c565b60405180910390fd5b6000805460ff1916600117905580156106b0576000805461ff0019166101001790555b6040805160008152602081019091526106ca908590610a4e565b6106e084600080516020612b3c83398151915255565b60076106ec8382612444565b5060016106f98482612444565b508015610745576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061073c90600190612518565b60405180910390a15b50505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107935760405162461bcd60e51b81526004016106849061256d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107c56115d0565b6001600160a01b0316146107eb5760405162461bcd60e51b8152600401610684906125c4565b6107f4816115ec565b60408051600080825260208201909252610810918391906116f0565b50565b600082826040516020016108289291906125fc565b60405160208183030381529060405280519060200120905092915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361088e5760405162461bcd60e51b81526004016106849061256d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108c06115d0565b6001600160a01b0316146108e65760405162461bcd60e51b8152600401610684906125c4565b6108ef826115ec565b6108fb828260016116f0565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109495760405162461bcd60e51b81526004016106849061266b565b50600080516020612b5c83398151915290565b60006109666115d0565b905090565b600054610100900460ff161580801561098b5750600054600160ff909116105b806109a55750303b1580156109a5575060005460ff166001145b6109c15760405162461bcd60e51b81526004016106849061239c565b6000805460ff1916600117905580156109e4576000805461ff0019166101001790555b60076109f08382612444565b5060016109fd8482612444565b508015610a49576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610a4090600190612518565b60405180910390a15b505050565b610a566117d2565b6000829050806001600160a01b0316639a06df506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abd9190612686565b600480546001600160a01b0319166001600160a01b03929092169190911790555033600080516020612b3c833981519152555050565b610b1760405180606001604052806060815260200160608152602001600081525090565b60008281526005602052604090819020815160608101909252805482908290610b3f90612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6b90612325565b8015610bb85780601f10610b8d57610100808354040283529160200191610bb8565b820191906000526020600020905b815481529060010190602001808311610b9b57829003601f168201915b50505050508152602001600182018054610bd190612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfd90612325565b8015610c4a5780601f10610c1f57610100808354040283529160200191610c4a565b820191906000526020600020905b815481529060010190602001808311610c2d57829003601f168201915b505050505081526020016002820154815250509050919050565b610c8b6040518060400160405280600681526020016555504441544560d01b815250611826565b6108fb604051806040016040528060068152602001656e617469766560d01b815250838361184c565b610cbc6117d2565b61081081600080516020612b3c83398151915255565b600560205260009081526040902080548190610ced90612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1990612325565b8015610d665780601f10610d3b57610100808354040283529160200191610d66565b820191906000526020600020905b815481529060010190602001808311610d4957829003601f168201915b505050505090806001018054610d7b90612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610da790612325565b8015610df45780601f10610dc957610100808354040283529160200191610df4565b820191906000526020600020905b815481529060010190602001808311610dd757829003601f168201915b5050505050908060020154905083565b610e2b6040518060400160405280600681526020016555504441544560d01b815250611826565b610a4983838361184c565b610e5d6040518060400160405280600681526020016555504441544560d01b815250611826565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b606060018054610e8e90612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610eba90612325565b8015610f075780601f10610edc57610100808354040283529160200191610f07565b820191906000526020600020905b815481529060010190602001808311610eea57829003601f168201915b5050505050905090565b60048054604051633ca8e36d60e11b81526000926001600160a01b0390921691637951c6da91610f48918791600191889101612721565b602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190612768565b9392505050565b610fb76040518060400160405280600681526020016555504441544560d01b815250611826565b6000826001600160a01b031682604051610fd090612789565b60006040518083038185875af1925050503d806000811461100d576040519150601f19603f3d011682016040523d82523d6000602084013e611012565b606091505b5050905080610a495760405162461bcd60e51b8152600401610684906127ce565b6000600660006110438585610813565b815260200190815260200160002054905092915050565b60408051600380825260808201909252606091816020015b61109660405180606001604052806060815260200160608152602001606081525090565b815260200190600190039081611072579050509050600061110f60405180604001604052806040518060400160405280600d81526020016c4352454154455f564f54494e4760981b8152508152602001604051806040016040528060088152602001672b27aa22afa327a960c11b81525081525061198d565b905060405180606001604052806111af6007805461112c90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461115890612325565b80156111a55780601f1061117a576101008083540402835291602001916111a5565b820191906000526020600020905b81548152906001019060200180831161118857829003601f168201915b5050505050611a06565b6000815181106111c1576111c16127de565b60200260200101518152602001600180546111db90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461120790612325565b80156112545780601f1061122957610100808354040283529160200191611254565b820191906000526020600020905b81548152906001019060200180831161123757829003601f168201915b505050505081526020018281525082600081518110611275576112756127de565b602002602001018190525060006112b760405180602001604052806040518060400160405280600681526020016511561411549560d21b815250815250611a3a565b90506040518060600160405280611357600780546112d490612325565b80601f016020809104026020016040519081016040528092919081815260200182805461130090612325565b801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b5050505050611a7e565b600081518110611369576113696127de565b602002602001015181526020016001805461138390612325565b80601f01602080910402602001604051908101604052809291908181526020018280546113af90612325565b80156113fc5780601f106113d1576101008083540402835291602001916113fc565b820191906000526020600020905b8154815290600101906020018083116113df57829003601f168201915b50505050508152602001828152508360018151811061141d5761141d6127de565b602002602001018190525060405180606001604052806114c66007805461144390612325565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90612325565b80156114bc5780601f10611491576101008083540402835291602001916114bc565b820191906000526020600020905b81548152906001019060200180831161149f57829003601f168201915b5050505050611a9f565b6000815181106114d8576114d86127de565b60200260200101518152602001600180546114f290612325565b80601f016020809104026020016040519081016040528092919081815260200182805461151e90612325565b801561156b5780601f106115405761010080835404028352916020019161156b565b820191906000526020600020905b81548152906001019060200180831161154e57829003601f168201915b505050505081526020016115aa60405180602001604052806040518060400160405280600681526020016555504441544560d01b815250815250611a3a565b815250836002815181106115c0576115c06127de565b6020026020010181905250505090565b600080516020612b5c833981519152546001600160a01b031690565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316638412ccd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190612813565b6001600160a01b031663d10611fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c69190612686565b9050336001600160a01b038216146108fb5760405162461bcd60e51b815260040161068490612877565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561172357610a4983611ac0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561177d575060408051601f3d908101601f1916820190925261177a91810190612892565b60015b6117995760405162461bcd60e51b8152600401610684906128fc565b600080516020612b5c83398151915281146117c65760405162461bcd60e51b815260040161068490612950565b50610a49838383611b16565b60006117ea600080516020612b3c8339815191525490565b90506001600160a01b038116158061180a57506001600160a01b03811633145b6108105760405162461bcd60e51b815260040161068490612992565b6118303382610f11565b6108105760405162461bcd60e51b8152600401610684906129e2565b600060405180606001604052808581526020018481526020018381525090506000336001600160a01b031663ab663d0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf9190612892565b9050600254600660006118e23385610813565b81526020019081526020016000208190555081600560006002600081548092919061190c90612a08565b90915550815260208101919091526040016000208151819061192e9082612444565b50602082015160018201906119439082612444565b50604091820151600290910155517f01aba909869a87e09dd70759fceedbfa9171043ff2e1dc86cff2b3b86aefb8459061197e908490612083565b60405180910390a15050505050565b6040805160028082526060828101909352816020015b60608152602001906001900390816119a3575050825181519192509082906000906119d0576119d06127de565b60209081029190910101528160016020020151816001815181106119f6576119f66127de565b6020026020010181905250919050565b606061059a604051806020016040528084604051602001611a279190612a43565b6040516020818303038152906040528152505b604080516001808252818301909252606091816020015b6060815260200190600190039081611a51575050825181519192509082906000906119f6576119f66127de565b606061059a604051806020016040528084604051602001611a279190612a65565b606061059a604051806020016040528084604051602001611a279190612a7e565b6001600160a01b0381163b611ae75760405162461bcd60e51b815260040161068490612adf565b600080516020612b5c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611b1f83611b3b565b600082511180611b2c5750805b15610a49576107458383611b7b565b611b4481611ac0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610f898383604051806060016040528060278152602001612b7c602791396060600080856001600160a01b031685604051611bb89190612aef565b600060405180830381855af49150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150611c0986838387611c13565b9695505050505050565b60608315611c52578251600003611c4b576001600160a01b0385163b611c4b5760405162461bcd60e51b815260040161068490612b2b565b5081611c5c565b611c5c8383611c64565b949350505050565b815115611c745781518083602001fd5b8060405162461bcd60e51b81526004016106849190611d3f565b6001600160e01b031981165b811461081057600080fd5b803561059a81611c8e565b600060208284031215611cc557611cc5600080fd5b6000611c5c8484611ca5565b8015155b82525050565b6020810161059a8284611cd1565b60005b83811015611d04578181015183820152602001611cec565b50506000910152565b6000611d17825190565b808452602084019350611d2e818560208601611ce9565b601f01601f19169290920192915050565b60208082528101610f898184611d0d565b60006001600160a01b03821661059a565b611c9a81611d50565b803561059a81611d61565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715611db157611db1611d75565b6040525050565b6000611dc360405190565b9050611dcf8282611d8b565b919050565b600067ffffffffffffffff821115611dee57611dee611d75565b601f19601f8301165b60200192915050565b82818337506000910152565b6000611e1f611e1a84611dd4565b611db8565b905082815260208101848484011115611e3a57611e3a600080fd5b611e45848285611e00565b509392505050565b600082601f830112611e6157611e61600080fd5b8135611c5c848260208601611e0c565b600080600060608486031215611e8957611e89600080fd5b6000611e958686611d6a565b935050602084013567ffffffffffffffff811115611eb557611eb5600080fd5b611ec186828701611e4d565b925050604084013567ffffffffffffffff811115611ee157611ee1600080fd5b611eed86828701611e4d565b9150509250925092565b600060208284031215611f0c57611f0c600080fd5b6000611c5c8484611d6a565b611cd581611d50565b6020810161059a8284611f18565b80611c9a565b803561059a81611f2f565b60008060408385031215611f5657611f56600080fd5b6000611f628585611d6a565b9250506020611f7385828601611f35565b9150509250929050565b80611cd5565b6020810161059a8284611f7d565b60008060408385031215611fa757611fa7600080fd5b6000611fb38585611d6a565b925050602083013567ffffffffffffffff811115611fd357611fd3600080fd5b611f7385828601611e4d565b600060208284031215611ff457611ff4600080fd5b6000611c5c8484611f35565b6000806040838503121561201657612016600080fd5b823567ffffffffffffffff81111561203057612030600080fd5b611fb385828601611e4d565b80516060808452600091908401906120548282611d0d565b9150506020830151848203602086015261206e8282611d0d565b9150506040830151611e456040860182611f7d565b60208082528101610f89818461203c565b600080604083850312156120aa576120aa600080fd5b823567ffffffffffffffff8111156120c4576120c4600080fd5b611f6285828601611e4d565b606080825281016120e18186611d0d565b905081810360208301526120f58185611d0d565b9050611c5c6040830184611f7d565b60008060006060848603121561211c5761211c600080fd5b833567ffffffffffffffff81111561213657612136600080fd5b61214286828701611e4d565b935050602084013567ffffffffffffffff81111561216257612162600080fd5b61216e86828701611e4d565b9250506040611eed86828701611f35565b600061059a6001600160a01b038316612196565b90565b6001600160a01b031690565b600061059a8261217f565b600061059a826121a2565b611cd5816121ad565b6020810161059a82846121b8565b6000610f898383611d0d565b60200190565b60006121eb825190565b808452602084019350836020820285016122058560200190565b60005b84811015612239578383038852815161222184826121cf565b93505060208201602098909801979150600101612208565b50909695505050505050565b805160608084526000919084019061225d8282611d0d565b915050602083015184820360208601526122778282611d0d565b9150506040830151848203604086015261229182826121e1565b95945050505050565b6000610f898383612245565b60006122b0825190565b808452602084019350836020820285016122ca8560200190565b60005b8481101561223957838303885281516122e6848261229a565b935050602082016020989098019791506001016122cd565b60208082528101610f8981846122a6565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061233957607f821691505b60208210810361234b5761234b61230f565b50919050565b602e8152602081017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015290505b60400190565b6020808252810161059a81612351565b600061059a6121938381565b6123c1836123ac565b815460001960089490940293841b1916921b91909117905550565b6000610a498184846123b8565b818110156108fb576123fc6000826123dc565b6001016123e9565b601f821115610a49576000818152602090206020601f8501048101602085101561242b5750805b61243d6020601f8601048301826123e9565b5050505050565b815167ffffffffffffffff81111561245e5761245e611d75565b6124688254612325565b612473828285612404565b506020601f8211600181146124a857600083156124905750848201515b600019600885021c198116600285021785555061243d565b600084815260208120601f198516915b828110156124d857878501518255602094850194600190920191016124b8565b50848210156124f55783870151600019601f87166008021c191681555b50505050600202600101905550565b600060ff821661059a565b611cd581612504565b6020810161059a828461250f565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b19195b1959d85d1958d85b1b60a21b60208201529050612396565b6020808252810161059a81612526565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b6163746976652070726f787960a01b60208201529050612396565b6020808252810161059a8161257d565b600061059a8260601b90565b600061059a826125d4565b611cd56125f782611d50565b6125e0565b61260681846125eb565b601401611df78183611f7d565b60388152602081017f555550535570677261646561626c653a206d757374206e6f742062652063616c81527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060208201529050612396565b6020808252810161059a81612613565b805161059a81611d61565b60006020828403121561269b5761269b600080fd5b6000611c5c848461267b565b600081546126b481612325565b8085526020850194506001821680156126d457600181146126ea57612718565b60ff198316865260208215150286019350612718565b60008581526020902060005b83811015612712578154888201526001909101906020016126f6565b87019450505b50505092915050565b6060810161272f8286611f18565b818103602083015261274181856126a7565b905081810360408301526122918184611d0d565b801515611c9a565b805161059a81612755565b60006020828403121561277d5761277d600080fd5b6000611c5c848461275d565b611dcf81612193565b60218152602081017f49435054726561737572794d6f64756c653a2073656e64696e67206572726f728152601760f91b60208201529050612396565b6020808252810161059a81612792565b634e487b7160e01b600052603260045260246000fd5b600061059a82611d50565b611c9a816127f4565b805161059a816127ff565b60006020828403121561282857612828600080fd5b6000611c5c8484612808565b60288152602081017f5b5147444b2d3030363030355d2d4e6f7420617574686f72697a656420746f208152673ab833b930b2329760c11b60208201529050612396565b6020808252810161059a81612834565b805161059a81611f2f565b6000602082840312156128a7576128a7600080fd5b6000611c5c8484612887565b602e8152602081017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b60208201529050612396565b6020808252810161059a816128b3565b60298152602081017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b60208201529050612396565b6020808252810161059a8161290c565b601a8152602081017f446570656e64616e743a206e6f7420616e20696e6a6563746f72000000000000815290506121db565b6020808252810161059a81612960565b60258152602081017f49435054726561737572794d6f64756c653a207065726d697373696f6e2064658152643734b2b21760d91b60208201529050612396565b6020808252810161059a816129a2565b634e487b7160e01b600052601160045260246000fd5b600060018201612a1a57612a1a6129f2565b5060010190565b6000612a2b825190565b612a39818560208601611ce9565b9290920192915050565b6d2220a7a6b2b6b132b92937b6329d60911b81525b600e0161059a8183612a21565b6d2220a7a2bc3832b93a2937b6329d60911b8152612a58565b6d2220a7ab37ba34b733a937b6329d60911b8152612a58565b602d8152602081017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529050612396565b6020808252810161059a81612a97565b61059a8183612a21565b601d8152602081017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815290506121db565b6020808252810161059a81612af956fe3d1f25f1ac447e55e7fec744471c4dab1c6a2b6ffb897825f9ea3d2e8c9be583360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f68f35094dee61501ebea409fda7a51488b581d2fae346407323f3fd00ee957f64736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106101a05760003560e01c80636c80f346116100ec578063b7dfe4921161008a578063d8ad4e1c11610064578063d8ad4e1c146104b1578063dad7f110146104d1578063ee0d8c79146104f1578063f13bdd4d1461051157600080fd5b8063b7dfe4921461044f578063bb65dc831461046f578063cc7a20491461048457600080fd5b80638cb941cc116100c65780638cb941cc146103c05780638d350d04146103e05780639b2e86921461040f578063a5a60e691461042f57600080fd5b80636c80f3461461035e57806373dee9301461038b578063837ac99b146103ab57600080fd5b80633fe59bff1161015957806352d1902d1161013357806352d1902d146102f45780635c60da1b1461030957806367c650a81461031e578063691304511461033e57600080fd5b80633fe59bff1461029e5780634f1ef286146102b457806351ce28af146102c757600080fd5b806301ffc9a7146101ac5780632b5c06bc146101e25780632fd4435f146102045780633659cfe6146102265780633e3b5b19146102465780633ea0ae681461027157600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101cc6101c7366004611cb0565b610533565b6040516101d99190611cdb565b60405180910390f35b3480156101ee57600080fd5b506101f76105a0565b6040516101d99190611d3f565b34801561021057600080fd5b5061022461021f366004611e71565b61062e565b005b34801561023257600080fd5b50610224610241366004611ef7565b61074b565b34801561025257600080fd5b50600080516020612b3c833981519152545b6040516101d99190611f21565b34801561027d57600080fd5b5061029161028c366004611f40565b610813565b6040516101d99190611f83565b3480156102aa57600080fd5b5061029160025481565b6102246102c2366004611f91565b610846565b3480156102d357600080fd5b506102916102e2366004611fdf565b60066020526000908152604090205481565b34801561030057600080fd5b506102916108ff565b34801561031557600080fd5b5061026461095c565b34801561032a57600080fd5b50610224610339366004612000565b61096b565b34801561034a57600080fd5b50610224610359366004611f91565b610a4e565b34801561036a57600080fd5b5061037e610379366004611fdf565b610af3565b6040516101d99190612083565b34801561039757600080fd5b506102246103a6366004612094565b610c64565b3480156103b757600080fd5b50600254610291565b3480156103cc57600080fd5b506102246103db366004611ef7565b610cb4565b3480156103ec57600080fd5b506104006103fb366004611fdf565b610cd2565b6040516101d9939291906120d0565b34801561041b57600080fd5b5061022461042a366004612104565b610e04565b34801561043b57600080fd5b50600354610264906001600160a01b031681565b34801561045b57600080fd5b5061022461046a366004611ef7565b610e36565b34801561047b57600080fd5b506101f7610e7f565b34801561049057600080fd5b506004546104a4906001600160a01b031681565b6040516101d991906121c1565b3480156104bd57600080fd5b506101cc6104cc366004611f91565b610f11565b3480156104dd57600080fd5b506102246104ec366004611f40565b610f90565b3480156104fd57600080fd5b5061029161050c366004611f40565b611033565b34801561051d57600080fd5b5061052661105a565b6040516101d991906122fe565b60006001600160e01b031982166363c8929f60e01b148061056457506001600160e01b0319821663f13bdd4d60e01b145b8061057f57506001600160e01b031982166336e447a160e21b145b8061059a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600180546105ad90612325565b80601f01602080910402602001604051908101604052809291908181526020018280546105d990612325565b80156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505081565b600054610100900460ff161580801561064e5750600054600160ff909116105b806106685750303b158015610668575060005460ff166001145b61068d5760405162461bcd60e51b81526004016106849061239c565b60405180910390fd5b6000805460ff1916600117905580156106b0576000805461ff0019166101001790555b6040805160008152602081019091526106ca908590610a4e565b6106e084600080516020612b3c83398151915255565b60076106ec8382612444565b5060016106f98482612444565b508015610745576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061073c90600190612518565b60405180910390a15b50505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107935760405162461bcd60e51b81526004016106849061256d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107c56115d0565b6001600160a01b0316146107eb5760405162461bcd60e51b8152600401610684906125c4565b6107f4816115ec565b60408051600080825260208201909252610810918391906116f0565b50565b600082826040516020016108289291906125fc565b60405160208183030381529060405280519060200120905092915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361088e5760405162461bcd60e51b81526004016106849061256d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108c06115d0565b6001600160a01b0316146108e65760405162461bcd60e51b8152600401610684906125c4565b6108ef826115ec565b6108fb828260016116f0565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109495760405162461bcd60e51b81526004016106849061266b565b50600080516020612b5c83398151915290565b60006109666115d0565b905090565b600054610100900460ff161580801561098b5750600054600160ff909116105b806109a55750303b1580156109a5575060005460ff166001145b6109c15760405162461bcd60e51b81526004016106849061239c565b6000805460ff1916600117905580156109e4576000805461ff0019166101001790555b60076109f08382612444565b5060016109fd8482612444565b508015610a49576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610a4090600190612518565b60405180910390a15b505050565b610a566117d2565b6000829050806001600160a01b0316639a06df506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abd9190612686565b600480546001600160a01b0319166001600160a01b03929092169190911790555033600080516020612b3c833981519152555050565b610b1760405180606001604052806060815260200160608152602001600081525090565b60008281526005602052604090819020815160608101909252805482908290610b3f90612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6b90612325565b8015610bb85780601f10610b8d57610100808354040283529160200191610bb8565b820191906000526020600020905b815481529060010190602001808311610b9b57829003601f168201915b50505050508152602001600182018054610bd190612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfd90612325565b8015610c4a5780601f10610c1f57610100808354040283529160200191610c4a565b820191906000526020600020905b815481529060010190602001808311610c2d57829003601f168201915b505050505081526020016002820154815250509050919050565b610c8b6040518060400160405280600681526020016555504441544560d01b815250611826565b6108fb604051806040016040528060068152602001656e617469766560d01b815250838361184c565b610cbc6117d2565b61081081600080516020612b3c83398151915255565b600560205260009081526040902080548190610ced90612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1990612325565b8015610d665780601f10610d3b57610100808354040283529160200191610d66565b820191906000526020600020905b815481529060010190602001808311610d4957829003601f168201915b505050505090806001018054610d7b90612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610da790612325565b8015610df45780601f10610dc957610100808354040283529160200191610df4565b820191906000526020600020905b815481529060010190602001808311610dd757829003601f168201915b5050505050908060020154905083565b610e2b6040518060400160405280600681526020016555504441544560d01b815250611826565b610a4983838361184c565b610e5d6040518060400160405280600681526020016555504441544560d01b815250611826565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b606060018054610e8e90612325565b80601f0160208091040260200160405190810160405280929190818152602001828054610eba90612325565b8015610f075780601f10610edc57610100808354040283529160200191610f07565b820191906000526020600020905b815481529060010190602001808311610eea57829003601f168201915b5050505050905090565b60048054604051633ca8e36d60e11b81526000926001600160a01b0390921691637951c6da91610f48918791600191889101612721565b602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190612768565b9392505050565b610fb76040518060400160405280600681526020016555504441544560d01b815250611826565b6000826001600160a01b031682604051610fd090612789565b60006040518083038185875af1925050503d806000811461100d576040519150601f19603f3d011682016040523d82523d6000602084013e611012565b606091505b5050905080610a495760405162461bcd60e51b8152600401610684906127ce565b6000600660006110438585610813565b815260200190815260200160002054905092915050565b60408051600380825260808201909252606091816020015b61109660405180606001604052806060815260200160608152602001606081525090565b815260200190600190039081611072579050509050600061110f60405180604001604052806040518060400160405280600d81526020016c4352454154455f564f54494e4760981b8152508152602001604051806040016040528060088152602001672b27aa22afa327a960c11b81525081525061198d565b905060405180606001604052806111af6007805461112c90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461115890612325565b80156111a55780601f1061117a576101008083540402835291602001916111a5565b820191906000526020600020905b81548152906001019060200180831161118857829003601f168201915b5050505050611a06565b6000815181106111c1576111c16127de565b60200260200101518152602001600180546111db90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461120790612325565b80156112545780601f1061122957610100808354040283529160200191611254565b820191906000526020600020905b81548152906001019060200180831161123757829003601f168201915b505050505081526020018281525082600081518110611275576112756127de565b602002602001018190525060006112b760405180602001604052806040518060400160405280600681526020016511561411549560d21b815250815250611a3a565b90506040518060600160405280611357600780546112d490612325565b80601f016020809104026020016040519081016040528092919081815260200182805461130090612325565b801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b5050505050611a7e565b600081518110611369576113696127de565b602002602001015181526020016001805461138390612325565b80601f01602080910402602001604051908101604052809291908181526020018280546113af90612325565b80156113fc5780601f106113d1576101008083540402835291602001916113fc565b820191906000526020600020905b8154815290600101906020018083116113df57829003601f168201915b50505050508152602001828152508360018151811061141d5761141d6127de565b602002602001018190525060405180606001604052806114c66007805461144390612325565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90612325565b80156114bc5780601f10611491576101008083540402835291602001916114bc565b820191906000526020600020905b81548152906001019060200180831161149f57829003601f168201915b5050505050611a9f565b6000815181106114d8576114d86127de565b60200260200101518152602001600180546114f290612325565b80601f016020809104026020016040519081016040528092919081815260200182805461151e90612325565b801561156b5780601f106115405761010080835404028352916020019161156b565b820191906000526020600020905b81548152906001019060200180831161154e57829003601f168201915b505050505081526020016115aa60405180602001604052806040518060400160405280600681526020016555504441544560d01b815250815250611a3a565b815250836002815181106115c0576115c06127de565b6020026020010181905250505090565b600080516020612b5c833981519152546001600160a01b031690565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316638412ccd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190612813565b6001600160a01b031663d10611fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c69190612686565b9050336001600160a01b038216146108fb5760405162461bcd60e51b815260040161068490612877565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561172357610a4983611ac0565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561177d575060408051601f3d908101601f1916820190925261177a91810190612892565b60015b6117995760405162461bcd60e51b8152600401610684906128fc565b600080516020612b5c83398151915281146117c65760405162461bcd60e51b815260040161068490612950565b50610a49838383611b16565b60006117ea600080516020612b3c8339815191525490565b90506001600160a01b038116158061180a57506001600160a01b03811633145b6108105760405162461bcd60e51b815260040161068490612992565b6118303382610f11565b6108105760405162461bcd60e51b8152600401610684906129e2565b600060405180606001604052808581526020018481526020018381525090506000336001600160a01b031663ab663d0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf9190612892565b9050600254600660006118e23385610813565b81526020019081526020016000208190555081600560006002600081548092919061190c90612a08565b90915550815260208101919091526040016000208151819061192e9082612444565b50602082015160018201906119439082612444565b50604091820151600290910155517f01aba909869a87e09dd70759fceedbfa9171043ff2e1dc86cff2b3b86aefb8459061197e908490612083565b60405180910390a15050505050565b6040805160028082526060828101909352816020015b60608152602001906001900390816119a3575050825181519192509082906000906119d0576119d06127de565b60209081029190910101528160016020020151816001815181106119f6576119f66127de565b6020026020010181905250919050565b606061059a604051806020016040528084604051602001611a279190612a43565b6040516020818303038152906040528152505b604080516001808252818301909252606091816020015b6060815260200190600190039081611a51575050825181519192509082906000906119f6576119f66127de565b606061059a604051806020016040528084604051602001611a279190612a65565b606061059a604051806020016040528084604051602001611a279190612a7e565b6001600160a01b0381163b611ae75760405162461bcd60e51b815260040161068490612adf565b600080516020612b5c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611b1f83611b3b565b600082511180611b2c5750805b15610a49576107458383611b7b565b611b4481611ac0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610f898383604051806060016040528060278152602001612b7c602791396060600080856001600160a01b031685604051611bb89190612aef565b600060405180830381855af49150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150611c0986838387611c13565b9695505050505050565b60608315611c52578251600003611c4b576001600160a01b0385163b611c4b5760405162461bcd60e51b815260040161068490612b2b565b5081611c5c565b611c5c8383611c64565b949350505050565b815115611c745781518083602001fd5b8060405162461bcd60e51b8152600