Files
smom-dbis-138/artifacts/contracts/bridge/adapters/hyperledger/FabricAdapter.sol/FabricAdapter.json
2026-03-02 12:14:09 -08:00

750 lines
44 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "FabricAdapter",
"sourceName": "contracts/bridge/adapters/hyperledger/FabricAdapter.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "string",
"name": "_fabricChannel",
"type": "string"
},
{
"internalType": "string",
"name": "_fabricChaincode",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "string",
"name": "fabricTxId",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "fabricChannel",
"type": "string"
}
],
"name": "FabricBridgeConfirmed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "fabricChannel",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "fabricChaincode",
"type": "string"
}
],
"name": "FabricBridgeInitiated",
"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": "BRIDGE_OPERATOR_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": "FABRIC_OPERATOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destination",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "recipient",
"type": "bytes"
}
],
"name": "bridge",
"outputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "bridgeRequests",
"outputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destinationData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "enum IChainAdapter.BridgeStatus",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "completedAt",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "cancelBridge",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "string",
"name": "fabricTxId",
"type": "string"
}
],
"name": "confirmFabricOperation",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destination",
"type": "bytes"
}
],
"name": "estimateFee",
"outputs": [
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fabricChaincode",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fabricChannel",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "fabricTxIds",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "getBridgeStatus",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destinationData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "enum IChainAdapter.BridgeStatus",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "completedAt",
"type": "uint256"
}
],
"internalType": "struct IChainAdapter.BridgeRequest",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getChainIdentifier",
"outputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "string",
"name": "identifier",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getChainType",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_isActive",
"type": "bool"
}
],
"name": "setIsActive",
"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": "bytes",
"name": "destination",
"type": "bytes"
}
],
"name": "validateDestination",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x608060405234620003685762001ef2803803806200001d816200036d565b92833981019060608183031262000368578051906001600160a01b0382168203620003685760208181015190916001600160401b03918281116200036857856200006991830162000393565b946040820151838111620003685762000083920162000393565b93620000ac600194858055620000998162000405565b50620000a58162000485565b5062000527565b5080519082821162000268576003918254918683811c931680156200035d575b8684101462000347578190601f93848111620002f1575b5086908483116001146200028a576000926200027e575b505060001982851b1c191690861b1782555b8551928311620002685760049384548681811c911680156200025d575b828210146200024857828111620001fd575b50809184116001146200018f57508293949560009362000183575b505082851b92600019911b1c19161790555b60ff19600254161760025560405161190d9081620005c58239f35b01519150388062000156565b9190601f198416968560005283600020936000905b898210620001e557505084879897969710620001ca575b50505050811b01905562000168565b01519060f884600019921b161c1916905538808080620001bb565b808985978294968601518155019601930190620001a4565b85600052816000208380870160051c8201928488106200023e575b0160051c019087905b828110620002315750506200013b565b6000815501879062000221565b9250819262000218565b602286634e487b7160e01b6000525260246000fd5b90607f169062000129565b634e487b7160e01b600052604160045260246000fd5b015190503880620000fa565b90889350601f1983169186600052886000209260005b8a828210620002da5750508411620002c1575b505050811b0182556200010c565b015160001983871b60f8161c19169055388080620002b3565b8385015186558c97909501949384019301620002a0565b90915084600052866000208480850160051c8201928986106200033d575b918a91869594930160051c01915b8281106200032d575050620000e3565b600081558594508a91016200031d565b925081926200030f565b634e487b7160e01b600052602260045260246000fd5b92607f1692620000cc565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176200026857604052565b919080601f84011215620003685782516001600160401b0381116200026857602090620003c9601f8201601f191683016200036d565b92818452828287010111620003685760005b818110620003f157508260009394955001015290565b8581018301518482018401528201620003db565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200048157818052816020526040822081835260205260408220600160ff19825416179055339160008051602062001ed28339815191528180a4600190565b5090565b6001600160a01b031660008181527f0d4654aaffc87c2c9a3fd6a99770bc308fad799420104834ddcca8973d00903960205260408120549091907f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15689060ff166200052257808352826020526040832082845260205260408320600160ff1982541617905560008051602062001ed2833981519152339380a4600190565b505090565b6001600160a01b031660008181527f2c2d1bf988a5d0d19c09500afedc2f53ea87e7915c070552eb437e5571d73f2c60205260408120549091907f5e981c375ca9caba3db6d34a1153b0fc8db5500357b00e47ca7e964218553a4f9060ff166200052257808352826020526040832082845260205260408320600160ff1982541617905560008051602062001ed2833981519152339380a460019056fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146112f05750806322f3e2d4146112cd578063248a9ca31461129e5780632750fc78146112175780632b368ac2146111d15780632f2ff15d1461119257806336568abe1461114b5780634be40fd1146111105780634bfc3b2e146110d55780634c35d0a71461102757806358cf58c114610dd557806360b4141114610d1c5780636cb4dfc014610cde5780637ecebe0014610ca45780638d75141514610b5557806391d1485414610b08578063941b968214610aa857806397e67c3b14610a4f578063a217fddf14610a33578063cac13ea314610964578063d02dab641461088a578063d046b4e214610712578063d547741f146106d15763f33ffba31461012757600080fd5b60803660031901126105a25761013b611343565b6044356001600160401b0381116105a25761015a90369060040161136f565b916064356001600160401b0381116105a25761017a90369060040161136f565b50506002600154146106bf57600260015560ff60025416156106875760243515610654573360005260076020526040600020805490600019821461063e5760018201905560405161022260408260208101943360601b86526bffffffffffffffffffffffff198760601b16603483015260243560488301528888606884013761020b60688a84010160008152611600565b9081524260208201520360208101845201826113f2565b519020916001600160a01b0382166105df5760243534106105a7575b6040519361024b856113d6565b3385526001600160a01b0383166020860152602435604086015261026e8161168f565b9161027c60405193846113f2565b81835236828201116105a2578160009260209283860137830101526060840152816080840152600160a08401524260c0840152600060e084015281600052600560205260406000209260018060a01b038151166bffffffffffffffffffffffff60a01b9081865416178555600185019060018060a01b03602084015116908254161790556040810151600285015560608101518051906001600160401b03821161058c5761033a82610331600389015461139c565b600389016115aa565b602090601f831160011461051a5761036b92916000918361050f575b50508160011b916000199060031b1c19161790565b60038501555b60808101516004850155600584019360a08201519160068310156104f95760e060079160209760ff199560ff87835416911617905560c081015160068501550151910155826040519260243584526060868501526103d160608501611453565b9284840360408601526000936004546103e98161139c565b80835292600182169182156104c1575050600114610444575b50506001600160a01b03169233927f431ae97c031849dc24f5852c2675ecb5b4d085eb8bb6e2ce146a9a10adb393b4919081900390a460018055604051908152f35b9291935060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b906000915b8183106104aa575050919091018501917f431ae97c031849dc24f5852c2675ecb5b4d085eb8bb6e2ce146a9a10adb393b438610402565b80548386018a015287935091880191600101610473565b16828a01525090151560051b01860192507f431ae97c031849dc24f5852c2675ecb5b4d085eb8bb6e2ce146a9a10adb393b438610402565b634e487b7160e01b600052602160045260246000fd5b015190503880610356565b9190600387016000526020600020906000935b601f1984168510610571576001945083601f19811610610558575b505050811b016003850155610371565b015160001960f88460031b161c19169055388080610548565b8181015183556020948501946001909301929091019061052d565b634e487b7160e01b600052604160045260246000fd5b600080fd5b60405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b6044820152606490fd5b6040516323b872dd60e01b60208201523360248201523060448201526024356064820152606481528060a08101106001600160401b0360a08301111761058c5760a08101604052610639906001600160a01b0384166117c3565b61023e565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f4164617074657220696e61637469766560801b6044820152606490fd5b604051633ee5aeb560e01b8152600490fd5b346105a25760403660031901126105a2576107106004356106f0611359565b9080600052600060205261070b6001604060002001546116aa565b61174e565b005b346105a2576020806003193601126105a257600435600052600581526040600020600581019060ff82541660068110156104f957801590811561087f575b501561084a5780546001600160a01b0390811633819003610810576001830154821690816107c357505060008083600282959483955416910154908282156107ba575bf1156107ae575b805460ff1916600517905560405160018152f35b6040513d6000823e3d90fd5b506108fc610793565b915091600201546040519163a9059cbb60e01b86840152602483015260448201526044815260808101918183106001600160401b0384111761058c5761080b926040526117c3565b61079a565b60405162461bcd60e51b81526004810186905260126024820152712737ba103932b8bab2b9ba1039b2b73232b960711b6044820152606490fd5b60405162461bcd60e51b815260048101849052600d60248201526c10d85b9b9bdd0818d85b98d95b609a1b6044820152606490fd5b600191501484610750565b346105a2576020806003193601126105a257600435600052600681526040600020906040519182600082546108be8161139c565b9384845260019186600182169182600014610942575050600114610903575b50506108eb925003836113f2565b6108ff604051928284938452830190611413565b0390f35b85925060005281600020906000915b85831061092a5750506108eb935082010185806108dd565b80548389018501528794508693909201918101610912565b92509350506108eb94915060ff191682840152151560051b82010185806108dd565b346105a25760003660031901126105a2576040516004546000826109878361139c565b9182825260209360019085600182169182600014610a135750506001146109b6575b506108eb925003836113f2565b84915060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b906000915b8583106109fb5750506108eb9350820101856109a9565b805483890185015287945086939092019181016109e4565b60ff1916858201526108eb95151560051b85010192508791506109a99050565b346105a25760003660031901126105a257602060405160008152f35b346105a25760003660031901126105a25760405160408101908082106001600160401b0383111761058c576108ff91604052600681526546616272696360d01b6020820152604051918291602083526020830190611413565b346105a25760003660031901126105a2576108ff604051664661627269632d60c81b6020820152610aed81610adf60278201611600565b03601f1981018352826113f2565b60405191829160008352604060208401526040830190611413565b346105a25760403660031901126105a257610b21611359565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346105a2576020806003193601126105a257600060e0604051610b77816113d6565b82815282848201528260408201526060808201528260808201528260a08201528260c082015201526004356000526005815260406000209060405190610bbc826113d6565b60018060a01b039283815416835283600182015416918084019283526002820154916040850192835260405193610c0185610bfa8160038601611507565b03866113f2565b606086019485526004820154946080870195865260ff6005840154169460a088019560068110156104f957610c95938a918852600760068701549660c08c0197885201549660e08b019788526040519b8c9b828d525116908b0152511660408901525160608801525193610c83610100958660808a0152610120890190611413565b955160a08801525160c087019061159d565b5160e085015251908301520390f35b346105a25760203660031901126105a2576001600160a01b03610cc5611343565b1660005260076020526020604060002054604051908152f35b346105a25760203660031901126105a2576004356001600160401b0381116105a257610d10602091369060040161136f565b90506040519015158152f35b346105a25760203660031901126105a2576004356000526005602052604060002060018060a01b039081815416916001820154169060028101549260405191610d7383610d6c8160038501611507565b03846113f2565b610dc7600482015493610db760ff600585015416916007600686015495015495604051998a99610100928b5260208b015260408a01528060608a0152880190611413565b94608087015260a086019061159d565b60c084015260e08301520390f35b346105a25760403660031901126105a2576001600160401b036004356024358281116105a257610e0990369060040161136f565b907f5e981c375ca9caba3db6d34a1153b0fc8db5500357b00e47ca7e964218553a4f938460005260209460008652604060002033600052865260ff6040600020541615611009575083600052600585526040600020600581019081549160ff83169260068410156104f9576001809403610fd35760029060ff19161790556007429101558460005260068652604060002091841161058c57610eb584610eaf845461139c565b846115aa565b600090601f8511600114610f435750918391610f0d837fdad5f253360778dd08050768b9ac1abb8eaabf475cc90b00751c009d96f4cfae96610f3396600091610f38575b508160011b916000199060031b1c19161790565b90555b816040519283928337810160008152039020936040519181839283528201611453565b0390a3005b90508401358a610ef9565b90601f1985168360005287600020926000905b89838310610fbb57505050918593917fdad5f253360778dd08050768b9ac1abb8eaabf475cc90b00751c009d96f4cfae96610f33969410610fa1575b5050600183811b019055610f10565b830135600019600386901b60f8161c191690558780610f92565b87850135865594810194938401939190910190610f56565b60405162461bcd60e51b8152600481018a9052600e60248201526d496e76616c69642073746174757360901b6044820152606490fd5b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346105a25760003660031901126105a25760405160035460008261104a8361139c565b9182825260209360019085600182169182600014610a1357505060011461107857506108eb925003836113f2565b84915060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000915b8583106110bd5750506108eb9350820101856109a9565b805483890185015287945086939092019181016110a6565b346105a25760003660031901126105a25760206040517f5e981c375ca9caba3db6d34a1153b0fc8db5500357b00e47ca7e964218553a4f8152f35b346105a25760003660031901126105a25760206040517f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15688152f35b346105a25760403660031901126105a257611164611359565b336001600160a01b03821603611180576107109060043561174e565b60405163334bd91960e11b8152600490fd5b346105a25760403660031901126105a2576107106004356111b1611359565b908060005260006020526111cc6001604060002001546116aa565b6116d0565b346105a25760603660031901126105a2576111ea611343565b506044356001600160401b0381116105a25761120a90369060040161136f565b5050602060405160008152f35b346105a25760203660031901126105a2576004358015158091036105a2573360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff161561127f5760ff801960025416911617600255600080f35b60405163e2517d3f60e01b815233600482015260006024820152604490fd5b346105a25760203660031901126105a25760043560005260006020526020600160406000200154604051908152f35b346105a25760003660031901126105a257602060ff600254166040519015158152f35b346105a25760203660031901126105a2576004359063ffffffff60e01b82168092036105a257602091637965db0b60e01b8114908115611332575b5015158152f35b6301ffc9a760e01b1490508361132b565b600435906001600160a01b03821682036105a257565b602435906001600160a01b03821682036105a257565b9181601f840112156105a2578235916001600160401b0383116105a257602083818601950101116105a257565b90600182811c921680156113cc575b60208310146113b657565b634e487b7160e01b600052602260045260246000fd5b91607f16916113ab565b61010081019081106001600160401b0382111761058c57604052565b90601f801991011681019081106001600160401b0382111761058c57604052565b919082519283825260005b84811061143f575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161141e565b600354600092916114638261139c565b808252916020906001908181169081156114e25750600114611486575b50505050565b9293945060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b926000935b8585106114cf575050506020925001019038808080611480565b80548585018401529382019381016114b5565b92505050602093945060ff929192191683830152151560051b01019038808080611480565b8054600093926115168261139c565b9182825260209360019160018116908160001461157e575060011461153d575b5050505050565b90939495506000929192528360002092846000945b83861061156a57505050500101903880808080611536565b805485870183015294019385908201611552565b60ff19168685015250505090151560051b010191503880808080611536565b9060068210156104f95752565b90601f81116115b857505050565b6000916000526020600020906020601f850160051c830194106115f6575b601f0160051c01915b8281106115eb57505050565b8181556001016115df565b90925082906115d6565b600354600092916116108261139c565b9160019081811690811561167c575060011461162b57505050565b909192935060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000915b848310611669575050500190565b818160209254858701520192019161165b565b60ff191683525050811515909102019150565b6001600160401b03811161058c57601f01601f191660200190565b80600052600060205260406000203360005260205260ff60406000205416156110095750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461174957808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146117495780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60018060a01b03169061180d600080836020829551910182875af13d1561186c573d906117ef8261168f565b916117fd60405193846113f2565b82523d84602084013e5b84611874565b90815191821515928361183d575b5050506118255750565b60249060405190635274afe760e01b82526004820152fd5b819293509060209181010312611868576020015190811591821503611865575038808061181b565b80fd5b5080fd5b606090611807565b9061189b575080511561188957805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806118ce575b6118ac575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156118a456fea2646970667358221220cd4b0a8829f3a2b43459277fe0a83cc184961497b96d51a23f0d57a101a58ba764736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146112f05750806322f3e2d4146112cd578063248a9ca31461129e5780632750fc78146112175780632b368ac2146111d15780632f2ff15d1461119257806336568abe1461114b5780634be40fd1146111105780634bfc3b2e146110d55780634c35d0a71461102757806358cf58c114610dd557806360b4141114610d1c5780636cb4dfc014610cde5780637ecebe0014610ca45780638d75141514610b5557806391d1485414610b08578063941b968214610aa857806397e67c3b14610a4f578063a217fddf14610a33578063cac13ea314610964578063d02dab641461088a578063d046b4e214610712578063d547741f146106d15763f33ffba31461012757600080fd5b60803660031901126105a25761013b611343565b6044356001600160401b0381116105a25761015a90369060040161136f565b916064356001600160401b0381116105a25761017a90369060040161136f565b50506002600154146106bf57600260015560ff60025416156106875760243515610654573360005260076020526040600020805490600019821461063e5760018201905560405161022260408260208101943360601b86526bffffffffffffffffffffffff198760601b16603483015260243560488301528888606884013761020b60688a84010160008152611600565b9081524260208201520360208101845201826113f2565b519020916001600160a01b0382166105df5760243534106105a7575b6040519361024b856113d6565b3385526001600160a01b0383166020860152602435604086015261026e8161168f565b9161027c60405193846113f2565b81835236828201116105a2578160009260209283860137830101526060840152816080840152600160a08401524260c0840152600060e084015281600052600560205260406000209260018060a01b038151166bffffffffffffffffffffffff60a01b9081865416178555600185019060018060a01b03602084015116908254161790556040810151600285015560608101518051906001600160401b03821161058c5761033a82610331600389015461139c565b600389016115aa565b602090601f831160011461051a5761036b92916000918361050f575b50508160011b916000199060031b1c19161790565b60038501555b60808101516004850155600584019360a08201519160068310156104f95760e060079160209760ff199560ff87835416911617905560c081015160068501550151910155826040519260243584526060868501526103d160608501611453565b9284840360408601526000936004546103e98161139c565b80835292600182169182156104c1575050600114610444575b50506001600160a01b03169233927f431ae97c031849dc24f5852c2675ecb5b4d085eb8bb6e2ce146a9a10adb393b4919081900390a460018055604051908152f35b9291935060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b906000915b8183106104aa575050919091018501917f431ae97c031849dc24f5852c2675ecb5b4d085eb8bb6e2ce146a9a10adb393b438610402565b80548386018a015287935091880191600101610473565b16828a01525090151560051b01860192507f431ae97c031849dc24f5852c2675ecb5b4d085eb8bb6e2ce146a9a10adb393b438610402565b634e487b7160e01b600052602160045260246000fd5b015190503880610356565b9190600387016000526020600020906000935b601f1984168510610571576001945083601f19811610610558575b505050811b016003850155610371565b015160001960f88460031b161c19169055388080610548565b8181015183556020948501946001909301929091019061052d565b634e487b7160e01b600052604160045260246000fd5b600080fd5b60405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b6044820152606490fd5b6040516323b872dd60e01b60208201523360248201523060448201526024356064820152606481528060a08101106001600160401b0360a08301111761058c5760a08101604052610639906001600160a01b0384166117c3565b61023e565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f4164617074657220696e61637469766560801b6044820152606490fd5b604051633ee5aeb560e01b8152600490fd5b346105a25760403660031901126105a2576107106004356106f0611359565b9080600052600060205261070b6001604060002001546116aa565b61174e565b005b346105a2576020806003193601126105a257600435600052600581526040600020600581019060ff82541660068110156104f957801590811561087f575b501561084a5780546001600160a01b0390811633819003610810576001830154821690816107c357505060008083600282959483955416910154908282156107ba575bf1156107ae575b805460ff1916600517905560405160018152f35b6040513d6000823e3d90fd5b506108fc610793565b915091600201546040519163a9059cbb60e01b86840152602483015260448201526044815260808101918183106001600160401b0384111761058c5761080b926040526117c3565b61079a565b60405162461bcd60e51b81526004810186905260126024820152712737ba103932b8bab2b9ba1039b2b73232b960711b6044820152606490fd5b60405162461bcd60e51b815260048101849052600d60248201526c10d85b9b9bdd0818d85b98d95b609a1b6044820152606490fd5b600191501484610750565b346105a2576020806003193601126105a257600435600052600681526040600020906040519182600082546108be8161139c565b9384845260019186600182169182600014610942575050600114610903575b50506108eb925003836113f2565b6108ff604051928284938452830190611413565b0390f35b85925060005281600020906000915b85831061092a5750506108eb935082010185806108dd565b80548389018501528794508693909201918101610912565b92509350506108eb94915060ff191682840152151560051b82010185806108dd565b346105a25760003660031901126105a2576040516004546000826109878361139c565b9182825260209360019085600182169182600014610a135750506001146109b6575b506108eb925003836113f2565b84915060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b906000915b8583106109fb5750506108eb9350820101856109a9565b805483890185015287945086939092019181016109e4565b60ff1916858201526108eb95151560051b85010192508791506109a99050565b346105a25760003660031901126105a257602060405160008152f35b346105a25760003660031901126105a25760405160408101908082106001600160401b0383111761058c576108ff91604052600681526546616272696360d01b6020820152604051918291602083526020830190611413565b346105a25760003660031901126105a2576108ff604051664661627269632d60c81b6020820152610aed81610adf60278201611600565b03601f1981018352826113f2565b60405191829160008352604060208401526040830190611413565b346105a25760403660031901126105a257610b21611359565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346105a2576020806003193601126105a257600060e0604051610b77816113d6565b82815282848201528260408201526060808201528260808201528260a08201528260c082015201526004356000526005815260406000209060405190610bbc826113d6565b60018060a01b039283815416835283600182015416918084019283526002820154916040850192835260405193610c0185610bfa8160038601611507565b03866113f2565b606086019485526004820154946080870195865260ff6005840154169460a088019560068110156104f957610c95938a918852600760068701549660c08c0197885201549660e08b019788526040519b8c9b828d525116908b0152511660408901525160608801525193610c83610100958660808a0152610120890190611413565b955160a08801525160c087019061159d565b5160e085015251908301520390f35b346105a25760203660031901126105a2576001600160a01b03610cc5611343565b1660005260076020526020604060002054604051908152f35b346105a25760203660031901126105a2576004356001600160401b0381116105a257610d10602091369060040161136f565b90506040519015158152f35b346105a25760203660031901126105a2576004356000526005602052604060002060018060a01b039081815416916001820154169060028101549260405191610d7383610d6c8160038501611507565b03846113f2565b610dc7600482015493610db760ff600585015416916007600686015495015495604051998a99610100928b5260208b015260408a01528060608a0152880190611413565b94608087015260a086019061159d565b60c084015260e08301520390f35b346105a25760403660031901126105a2576001600160401b036004356024358281116105a257610e0990369060040161136f565b907f5e981c375ca9caba3db6d34a1153b0fc8db5500357b00e47ca7e964218553a4f938460005260209460008652604060002033600052865260ff6040600020541615611009575083600052600585526040600020600581019081549160ff83169260068410156104f9576001809403610fd35760029060ff19161790556007429101558460005260068652604060002091841161058c57610eb584610eaf845461139c565b846115aa565b600090601f8511600114610f435750918391610f0d837fdad5f253360778dd08050768b9ac1abb8eaabf475cc90b00751c009d96f4cfae96610f3396600091610f38575b508160011b916000199060031b1c19161790565b90555b816040519283928337810160008152039020936040519181839283528201611453565b0390a3005b90508401358a610ef9565b90601f1985168360005287600020926000905b89838310610fbb57505050918593917fdad5f253360778dd08050768b9ac1abb8eaabf475cc90b00751c009d96f4cfae96610f33969410610fa1575b5050600183811b019055610f10565b830135600019600386901b60f8161c191690558780610f92565b87850135865594810194938401939190910190610f56565b60405162461bcd60e51b8152600481018a9052600e60248201526d496e76616c69642073746174757360901b6044820152606490fd5b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b346105a25760003660031901126105a25760405160035460008261104a8361139c565b9182825260209360019085600182169182600014610a1357505060011461107857506108eb925003836113f2565b84915060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000915b8583106110bd5750506108eb9350820101856109a9565b805483890185015287945086939092019181016110a6565b346105a25760003660031901126105a25760206040517f5e981c375ca9caba3db6d34a1153b0fc8db5500357b00e47ca7e964218553a4f8152f35b346105a25760003660031901126105a25760206040517f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15688152f35b346105a25760403660031901126105a257611164611359565b336001600160a01b03821603611180576107109060043561174e565b60405163334bd91960e11b8152600490fd5b346105a25760403660031901126105a2576107106004356111b1611359565b908060005260006020526111cc6001604060002001546116aa565b6116d0565b346105a25760603660031901126105a2576111ea611343565b506044356001600160401b0381116105a25761120a90369060040161136f565b5050602060405160008152f35b346105a25760203660031901126105a2576004358015158091036105a2573360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff161561127f5760ff801960025416911617600255600080f35b60405163e2517d3f60e01b815233600482015260006024820152604490fd5b346105a25760203660031901126105a25760043560005260006020526020600160406000200154604051908152f35b346105a25760003660031901126105a257602060ff600254166040519015158152f35b346105a25760203660031901126105a2576004359063ffffffff60e01b82168092036105a257602091637965db0b60e01b8114908115611332575b5015158152f35b6301ffc9a760e01b1490508361132b565b600435906001600160a01b03821682036105a257565b602435906001600160a01b03821682036105a257565b9181601f840112156105a2578235916001600160401b0383116105a257602083818601950101116105a257565b90600182811c921680156113cc575b60208310146113b657565b634e487b7160e01b600052602260045260246000fd5b91607f16916113ab565b61010081019081106001600160401b0382111761058c57604052565b90601f801991011681019081106001600160401b0382111761058c57604052565b919082519283825260005b84811061143f575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161141e565b600354600092916114638261139c565b808252916020906001908181169081156114e25750600114611486575b50505050565b9293945060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b926000935b8585106114cf575050506020925001019038808080611480565b80548585018401529382019381016114b5565b92505050602093945060ff929192191683830152151560051b01019038808080611480565b8054600093926115168261139c565b9182825260209360019160018116908160001461157e575060011461153d575b5050505050565b90939495506000929192528360002092846000945b83861061156a57505050500101903880808080611536565b805485870183015294019385908201611552565b60ff19168685015250505090151560051b010191503880808080611536565b9060068210156104f95752565b90601f81116115b857505050565b6000916000526020600020906020601f850160051c830194106115f6575b601f0160051c01915b8281106115eb57505050565b8181556001016115df565b90925082906115d6565b600354600092916116108261139c565b9160019081811690811561167c575060011461162b57505050565b909192935060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000915b848310611669575050500190565b818160209254858701520192019161165b565b60ff191683525050811515909102019150565b6001600160401b03811161058c57601f01601f191660200190565b80600052600060205260406000203360005260205260ff60406000205416156110095750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461174957808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146117495780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60018060a01b03169061180d600080836020829551910182875af13d1561186c573d906117ef8261168f565b916117fd60405193846113f2565b82523d84602084013e5b84611874565b90815191821515928361183d575b5050506118255750565b60249060405190635274afe760e01b82526004820152fd5b819293509060209181010312611868576020015190811591821503611865575038808061181b565b80fd5b5080fd5b606090611807565b9061189b575080511561188957805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806118ce575b6118ac575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156118a456fea2646970667358221220cd4b0a8829f3a2b43459277fe0a83cc184961497b96d51a23f0d57a101a58ba764736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}