0 txs
1 call
constructor
No constructor.
functions
bridgeContract
viewfunction bridgeContract() view returns (address)
dailyLimit
viewfunction dailyLimit() view returns (uint256)
decimalShift
viewfunction decimalShift() view returns (int256)
erc677token
viewfunction erc677token() view returns (address)
executionDailyLimit
viewfunction executionDailyLimit() view returns (uint256)
executionMaxPerTx
viewfunction executionMaxPerTx() view returns (uint256)
getBridgeInterfacesVersion
purefunction getBridgeInterfacesVersion() pure returns (uint64 major, uint64 minor, uint64 patch)
getBridgeMode
purefunction getBridgeMode() pure returns (bytes4 _data)
getCurrentDay
viewfunction getCurrentDay() view returns (uint256)
isInitialized
viewfunction isInitialized() view returns (bool)
maxAvailablePerTx
viewfunction maxAvailablePerTx() view returns (uint256)
maxPerTx
viewfunction maxPerTx() view returns (uint256)
mediatorBalance
viewfunction mediatorBalance() view returns (uint256)
mediatorContractOnOtherSide
viewfunction mediatorContractOnOtherSide() view returns (address)
messageFixed
viewfunction messageFixed(bytes32 _messageId) view returns (bool)
minPerTx
viewfunction minPerTx() view returns (uint256)
outOfLimitAmount
viewfunction outOfLimitAmount() view returns (uint256)
owner
viewfunction owner() view returns (address)
requestGasLimit
viewfunction requestGasLimit() view returns (uint256)
totalExecutedPerDay
viewfunction totalExecutedPerDay(uint256 _day) view returns (uint256)
totalSpentPerDay
viewfunction totalSpentPerDay(uint256 _day) view returns (uint256)
withinExecutionLimit
viewfunction withinExecutionLimit(uint256 _amount) view returns (bool)
withinLimit
viewfunction withinLimit(uint256 _amount) view returns (bool)
claimTokens
nonpayablefunction claimTokens(address _token, address _to)
fixAssetsAboveLimits
nonpayablefunction fixAssetsAboveLimits(bytes32 messageId, bool unlockOnOtherSide, uint256 valueToUnlock)
fixFailedMessage
nonpayablefunction fixFailedMessage(bytes32 _messageId)
fixMediatorBalance
nonpayablefunction fixMediatorBalance(address _receiver)
handleBridgedTokens
nonpayablefunction handleBridgedTokens(address _recipient, uint256 _value)
initialize
nonpayablefunction initialize(address _bridgeContract, address _mediatorContract, address _erc677token, uint256[3] _dailyLimitMaxPerTxMinPerTxArray, uint256[2] _executionDailyLimitExecutionMaxPerTxArray, uint256 _requestGasLimit, int256 _decimalShift, address _owner) returns (bool)
onTokenTransfer
nonpayablefunction onTokenTransfer(address _from, uint256 _value, bytes _data) returns (bool)
relayTokens
nonpayablefunction relayTokens(address _receiver, uint256 _value)
requestFailedMessageFix
nonpayablefunction requestFailedMessageFix(bytes32 _messageId)
setBridgeContract
nonpayablefunction setBridgeContract(address _bridgeContract)
setDailyLimit
nonpayablefunction setDailyLimit(uint256 _dailyLimit)
setExecutionDailyLimit
nonpayablefunction setExecutionDailyLimit(uint256 _dailyLimit)
setExecutionMaxPerTx
nonpayablefunction setExecutionMaxPerTx(uint256 _maxPerTx)
setMaxPerTx
nonpayablefunction setMaxPerTx(uint256 _maxPerTx)
setMediatorContractOnOtherSide
nonpayablefunction setMediatorContractOnOtherSide(address _mediatorContract)
setMinPerTx
nonpayablefunction setMinPerTx(uint256 _minPerTx)
setRequestGasLimit
nonpayablefunction setRequestGasLimit(uint256 _requestGasLimit)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AmountLimitExceeded
event AmountLimitExceeded(address recipient, uint256 value, bytes32 indexed transactionHash, bytes32 messageId)
AssetAboveLimitsFixed
event AssetAboveLimitsFixed(bytes32 indexed messageId, uint256 value, uint256 remaining)
DailyLimitChanged
event DailyLimitChanged(uint256 newLimit)
ExecutionDailyLimitChanged
event ExecutionDailyLimitChanged(uint256 newLimit)
FailedMessageFixed
event FailedMessageFixed(bytes32 indexed messageId, address recipient, uint256 value)
MediatorAmountLimitExceeded
event MediatorAmountLimitExceeded(address recipient, uint256 value, bytes32 indexed messageId)
OwnershipTransferred
event OwnershipTransferred(address previousOwner, address newOwner)
TokensBridged
event TokensBridged(address indexed recipient, uint256 value, bytes32 indexed messageId)
TokensBridgingInitiated
event TokensBridgingInitiated(address indexed sender, uint256 value, bytes32 indexed messageId)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506134cf806100206000396000f3006080604052600436106101df5763ffffffff60e060020a60003504166301e4f53a81146101e45780630950d5151461020a5780630b26cf661461022257806318d8f9c9146102435780632bd0bb0514610274578063392e53cd1461029e5780633dd95d1b146102c75780633e6968b6146102df578063437764df146102f457806343b37dd31461033e5780634b94f815146103535780634fb3fef71461036857806358bf7c791461038057806359339982146103a157806367eeba0c146103b957806369ffa08a146103ce5780636e5d6bea146103f5578063871c076014610416578063879ce6761461042b5780638aa1949a146104435780638b6c0354146104585780638da5cb5b1461047c57806395e54a17146104915780639a4a4395146104a65780639cb7595a146104be578063a0189345146104ff578063a2a6ca2714610514578063a4c0ed361461052c578063a7444c0d1461055d578063b20d30a91461057d578063be3b625b14610595578063c0b0d022146105aa578063c6f6f2161461063f578063cd59658314610657578063dae5f0fd1461066c578063df25f3f014610681578063ea9f496814610696578063f20151e1146106ae578063f2fde38b146106c6578063f3b83791146106e7578063f968adbe146106ff575b600080fd5b3480156101f057600080fd5b50610208600160a060020a0360043516602435610714565b005b34801561021657600080fd5b506102086004356107d6565b34801561022e57600080fd5b50610208600160a060020a03600435166108a5565b34801561024f57600080fd5b506102586108cd565b60408051600160a060020a039092168252519081900360200190f35b34801561028057600080fd5b5061028c6004356108dc565b60408051918252519081900360200190f35b3480156102aa57600080fd5b506102b3610999565b604080519115158252519081900360200190f35b3480156102d357600080fd5b506102086004356109ea565b3480156102eb57600080fd5b5061028c610aaa565b34801561030057600080fd5b50610309610ab3565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561034a57600080fd5b5061028c610ad7565b34801561035f57600080fd5b5061028c610b25565b34801561037457600080fd5b5061028c600435610b72565b34801561038c57600080fd5b50610208600160a060020a0360043516610bed565b3480156103ad57600080fd5b506102b3600435610d91565b3480156103c557600080fd5b5061028c610e5a565b3480156103da57600080fd5b50610208600160a060020a0360043581169060243516610ea8565b34801561040157600080fd5b50610208600160a060020a0360043516610f54565b34801561042257600080fd5b50610258610f79565b34801561043757600080fd5b506102b3600435610fd0565b34801561044f57600080fd5b5061028c61101a565b34801561046457600080fd5b50610208600160a060020a0360043516602435611068565b34801561048857600080fd5b506102586110e8565b34801561049d57600080fd5b5061028c61113f565b3480156104b257600080fd5b50610208600435611199565b3480156104ca57600080fd5b506104d36114ea565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b34801561050b57600080fd5b5061028c6114f5565b34801561052057600080fd5b50610208600435611543565b34801561053857600080fd5b506102b360048035600160a060020a03169060248035916044359182019101356115df565b34801561056957600080fd5b50610208600435602435151560443561167c565b34801561058957600080fd5b506102086004356117d7565b3480156105a157600080fd5b5061028c611897565b3480156105b657600080fd5b506040805160608181019092526102b391600160a060020a03600480358216936024358316936044359093169236929160c49160649060039083908390808284375050604080518082018252949796958181019594509250600291508390839080828437509396505083359450505060208201359160400135600160a060020a031690506118e5565b34801561064b57600080fd5b50610208600435611ab1565b34801561066357600080fd5b50610258611b49565b34801561067857600080fd5b5061028c611ba0565b34801561068d57600080fd5b5061028c611bee565b3480156106a257600080fd5b506102b3600435611c3c565b3480156106ba57600080fd5b50610208600435611c87565b3480156106d257600080fd5b50610208600160a060020a0360043516611d03565b3480156106f357600080fd5b50610208600435611d28565b34801561070b57600080fd5b5061028c611d4d565b600061071e611d9b565b1561072857600080fd5b6107306108cd565b905061073b82611c3c565b151561074657600080fd5b610757610751610aaa565b83611dc0565b6107616001611e89565b61077b600160a060020a038216338463ffffffff611ead16565b6107856000611e89565b6107d1813384866040516020018082600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401915050604051602081830303815290604052611f50565b505050565b6000806107e1611b49565b600160a060020a031633146107f557600080fd5b6107fd610f79565b600160a060020a031661080e611f87565b600160a060020a03161461082157600080fd5b61082a83610d91565b1561083457600080fd5b61083d83611fff565b9150610848836120ce565b905061085383612151565b61085d8282612223565b60408051600160a060020a038416815260208101839052815185927f06297b0797e3363e96e454edd4ab62862051bf559a7a431ce09415306771d133928290030190a2505050565b6108ad6110e8565b600160a060020a031633146108c157600080fd5b6108ca81612255565b50565b60006108d76122e0565b905090565b60008060008360405160200180807f746f74616c5370656e74506572446179000000000000000000000000000000008152506010018281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106109585780518252601f199092019160209182019101610939565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc5460ff1690565b6109f26110e8565b600160a060020a03163314610a0657600080fd5b610a0e61101a565b811180610a19575080155b1515610a2457600080fd5b7f21dbcab260e413c20dc13c28b7db95e2b423d1135f42bb8b7d5214a92270d237600090815260209081527fadd938dbd083a16bae12238cd914fca0afc7a30edb55b1cd5c7f1823f1b0e4218290556040805183815290517f9bebf928b90863f24cc31f726a3a7545efd409f1dcf552301b1ee3710da70d3b929181900390910190a150565b62015180420490565b7f76595b560000000000000000000000000000000000000000000000000000000090565b7f21dbcab260e413c20dc13c28b7db95e2b423d1135f42bb8b7d5214a92270d23760009081526020527fadd938dbd083a16bae12238cd914fca0afc7a30edb55b1cd5c7f1823f1b0e4215490565b7f3db340e280667ee926fa8c51e8f9fcf88a0ff221a66d84d63b4778127d97d13960009081526020527ef98556deae64bbaa11436ee534ae029e85ed112aff9b71330af4c2d320eac95490565b60008060008360405160200180807f746f74616c457865637574656450657244617900000000000000000000000000815250601301828152602001915050604051602081830303815290604052604051808280519060200190808383602083106109585780518252601f199092019160209182019101610939565b60008060008030600160a060020a0316636fde82026040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050506040513d6020811015610c5b57600080fd5b5051600160a060020a03163314610c7157600080fd5b84600160a060020a0381161515610c8757600080fd5b610c8f6122e0565b600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610ce957600080fd5b505af1158015610cfd573d6000803e3d6000fd5b505050506040513d6020811015610d1357600080fd5b50519450610d1f610b25565b9350838511610d2d57600080fd5b8385039250610d3a61113f565b915060008211610d4957600080fd5b81831115610d55578192505b610d66610d60610aaa565b84611dc0565b610d7e610d79858563ffffffff61233716565b61234a565b610d89868785612396565b505050505050565b6000600460008360405160200180807f6d65737361676546697865640000000000000000000000000000000000000000815250600c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310610e165780518252601f199092019160209182019101610df7565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1695945050505050565b7f4a6a899679f26b73530d8cf1001e83b6f7702e04b6fdb98f3c62dc7e47e041a560009081526020527f1ab29a5cca988aee50edccdd61c5bcaa7ad4b29a03b7ee50f298ceccfe14cc4e5490565b30600160a060020a0316636fde82026040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d6020811015610f1057600080fd5b5051600160a060020a03163314610f2657600080fd5b610f2e6122e0565b600160a060020a0383811691161415610f4657600080fd5b610f50828261257d565b5050565b610f5c6110e8565b600160a060020a03163314610f7057600080fd5b6108ca816125bb565b7f98aa806e31e94a687a31c65769cb99670064dd7f5a87526da075c5fb4eab988060005260026020527f0c1206883be66049a02d4937078367c00b3d71dd1a9465df969363c6ddeac96d54600160a060020a031690565b600080610ff383610fe7610fe2610aaa565b610b72565b9063ffffffff61233716565b905080610ffe610ad7565b10158015611013575061100f61101a565b8311155b9392505050565b7fc0ed44c192c86d1cc1ba51340b032c2766b4a2b0041031de13c46dd7104888d560009081526020527ff8e983ee86e5e377e9e34c9131b266382c3f04113d20de077f9e12663c7a646b5490565b611070611b49565b600160a060020a0316331461108457600080fd5b61108c610f79565b600160a060020a031661109d611f87565b600160a060020a0316146110b057600080fd5b6110b981610fd0565b156110de576110cf6110c9610aaa565b82612632565b6110d982826126b8565b610f50565b610f508282612732565b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e54600160a060020a031690565b600080600080600061114f611d4d565b9350611159610e5a565b925061116b611166610aaa565b6108dc565b915081831161117b57600061117f565b8183035b905080841061118e5780611190565b835b94505050505090565b600060606111a5611b49565b600160a060020a031663cb08a10c846040518263ffffffff1660e060020a028152600401808260001916600019168152602001915050602060405180830381600087803b1580156111f557600080fd5b505af1158015611209573d6000803e3d6000fd5b505050506040513d602081101561121f57600080fd5b50511561122b57600080fd5b30611234611b49565b600160a060020a0316633f9a8e7e856040518263ffffffff1660e060020a028152600401808260001916600019168152602001915050602060405180830381600087803b15801561128457600080fd5b505af1158015611298573d6000803e3d6000fd5b505050506040513d60208110156112ae57600080fd5b5051600160a060020a0316146112c357600080fd5b6112cb610f79565b600160a060020a03166112dc611b49565b600160a060020a0316634a610b04856040518263ffffffff1660e060020a028152600401808260001916600019168152602001915050602060405180830381600087803b15801561132c57600080fd5b505af1158015611340573d6000803e3d6000fd5b505050506040513d602081101561135657600080fd5b5051600160a060020a03161461136b57600080fd5b50506040805160248082018490528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0950d51500000000000000000000000000000000000000000000000000000000908117909152906113df611b49565b600160a060020a031663dc8601b36113f5610f79565b836113fe611897565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561146b578181015183820152602001611453565b50505050905090810190601f1680156114985780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b505050506040513d60208110156114e357600080fd5b5050505050565b600160046000909192565b7f145286dc85799b6fb9fe322391ba2d95683077b2adf34dd576dedc437e537ba760009081526020527fba10c7a68bf463c41368d64adcf7df23c0de931ea3b09f061e2dfec302fef95f5490565b61154b6110e8565b600160a060020a0316331461155f57600080fd5b6000811180156115755750611572610e5a565b81105b80156115875750611584611d4d565b81105b151561159257600080fd5b7fbbb088c505d18e049d114c7c91f11724e69c55ad6c5397e2b929e68b41fa05d160009081526020527f8df5c48c6b6e11d97548adc824ba0c99103ec09830fa5d53a179984085e6eaa055565b6000806115ea6108cd565b905033600160a060020a0382161461160157600080fd5b611609611d9b565b15156116345761161885611c3c565b151561162357600080fd5b61163461162e610aaa565b86611dc0565b61167081878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843750611f50945050505050565b50600195945050505050565b600080600030600160a060020a0316636fde82026040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d60208110156116e957600080fd5b5051600160a060020a031633146116ff57600080fd5b611708866127d3565b9093509150600160a060020a038316158015906117255750600082115b80156117315750838210155b151561173c57600080fd5b61175c6117578561174b6114f5565b9063ffffffff61295a16565b61296c565b61176c828563ffffffff61295a16565b905061177881876129b9565b6040805185815260208101839052815188927f5bcec6564fe8d2cbb4e4eb8237510ceb6b291a5c2ee2e429948d25e9c924c1fa928290030190a28415610d89576117c0611d4d565b8411156117cc57600080fd5b610d89838486612396565b6117df6110e8565b600160a060020a031633146117f357600080fd5b6117fb611d4d565b811180611806575080155b151561181157600080fd5b7f4a6a899679f26b73530d8cf1001e83b6f7702e04b6fdb98f3c62dc7e47e041a5600090815260209081527f1ab29a5cca988aee50edccdd61c5bcaa7ad4b29a03b7ee50f298ceccfe14cc4e8290556040805183815290517fad4123ae17c414d9c6d2fec478b402e6b01856cc250fd01fbfd252fda0089d3c929181900390910190a150565b7f2dfd6c9f781bb6bbb5369c114e949b69ebb440ef3d4dd6b2836225eb1dc3a2be60009081526020527f2de0d2cdc19d356cb53b5984f91bfd3b31fe0c678a0d190a6db39274bb34753f5490565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6fde8202000000000000000000000000000000000000000000000000000000001781529151815160009330939291829190808383895b8381101561196657818101518382015260200161194e565b50505050905090810190601f1680156119935780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af19150501580611a25575030600160a060020a0316636fde82026040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156119ed57600080fd5b505af1158015611a01573d6000803e3d6000fd5b505050506040513d6020811015611a1757600080fd5b5051600160a060020a031633145b80611a2f57503330145b1515611a3a57600080fd5b611a42610999565b15611a4c57600080fd5b611a5589612255565b611a5e886125bb565b611a6787612a3b565b611a7086612ac6565b611a7985612c23565b611a8284612cf8565b611a8b83612d59565b611a9482612dc2565b611a9c612e99565b611aa4610999565b9998505050505050505050565b611ab96110e8565b600160a060020a03163314611acd57600080fd5b801580611af15750611add611bee565b81118015611af15750611aee610e5a565b81105b1515611afc57600080fd5b7f0f8803acad17c63ee38bf2de71e1888bc7a079a6f73658e274b08018bea4e29c60009081526020527f9de0f81379b4d8e60fe509315d071b56e7b732abaf193e74e0d15808b0951d0955565b7f811bbb11e8899da471f0e69a3ed55090fc90215227fc5fb1cb0d6e962ea7b74f60005260026020527fb4ed64697d3ef8518241966f7c6f28b0d72f20f51198717d198d2d55076c593d54600160a060020a031690565b7f1e8ecaafaddea96ed9ac6d2642dcdfe1bebe58a930b1085842d8fc122b371ee560009081526020527fd5c78dd9468716ca9bb96be25d56436811b20aab3523a9904b12deef1cab239d5490565b7fbbb088c505d18e049d114c7c91f11724e69c55ad6c5397e2b929e68b41fa05d160009081526020527f8df5c48c6b6e11d97548adc824ba0c99103ec09830fa5d53a179984085e6eaa05490565b600080611c4e83610fe7611166610aaa565b905080611c59610e5a565b10158015611c6e5750611c6a611d4d565b8311155b80156110135750611c7d611bee565b9092101592915050565b611c8f6110e8565b600160a060020a03163314611ca357600080fd5b611cab610ad7565b8110611cb657600080fd5b7fc0ed44c192c86d1cc1ba51340b032c2766b4a2b0041031de13c46dd7104888d560009081526020527ff8e983ee86e5e377e9e34c9131b266382c3f04113d20de077f9e12663c7a646b55565b611d0b6110e8565b600160a060020a03163314611d1f57600080fd5b6108ca81612dc2565b611d306110e8565b600160a060020a03163314611d4457600080fd5b6108ca81612cf8565b7f0f8803acad17c63ee38bf2de71e1888bc7a079a6f73658e274b08018bea4e29c60009081526020527f9de0f81379b4d8e60fe509315d071b56e7b732abaf193e74e0d15808b0951d095490565b7f6168652c307c1e813ca11cfb3a601f1cf3b22452021a5052d8b05f1f1f8a3e925490565b611dcd81610fe7846108dc565b6000808460405160200180807f746f74616c5370656e74506572446179000000000000000000000000000000008152506010018281526020019150506040516020818303038152906040526040518082805190602001908083835b60208310611e475780518252601f199092019160209182019101611e28565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b7f6168652c307c1e813ca11cfb3a601f1cf3b22452021a5052d8b05f1f1f8a3e9255565b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152306024830152604482018490529151918516916323b872dd9160648082019260009290919082900301818387803b158015611f1e57600080fd5b505af1158015611f32573d6000803e3d6000fd5b505050503d156107d15760206000803e60005115156107d157600080fd5b611f58611d9b565b1515611f8157611f6d610d7983610fe7610b25565b611f8183611f7b8584612ef0565b84612396565b50505050565b6000611f91611b49565b600160a060020a031663d67bdd256040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611fce57600080fd5b505af1158015611fe2573d6000803e3d6000fd5b505050506040513d6020811015611ff857600080fd5b5051905090565b6000600260008360405160200180807f6d657373616765526563697069656e740000000000000000000000000000000081525060100182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106120845780518252601f199092019160209182019101612065565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528501959095529290920160002054600160a060020a031695945050505050565b60008060008360405160200180807f6d65737361676556616c75650000000000000000000000000000000000000000815250600c018260001916600019168152602001915050604051602081830303815290604052604051808280519060200190808383602083106109585780518252601f199092019160209182019101610939565b6001600460008360405160200180807f6d65737361676546697865640000000000000000000000000000000000000000815250600c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106121d65780518252601f1990920191602091820191016121b7565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805460ff19169415159490941790935550505050565b612232610d798261174b610b25565b610f50828261223f6108cd565b600160a060020a0316919063ffffffff612f4a16565b61225e81612fad565b151561226957600080fd5b7f811bbb11e8899da471f0e69a3ed55090fc90215227fc5fb1cb0d6e962ea7b74f60005260026020527fb4ed64697d3ef8518241966f7c6f28b0d72f20f51198717d198d2d55076c593d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b7fa8b0ade3e2b734f043ce298aca4cc8d19d74270223f34531d0988b7d00cba21d60005260026020527f603cd9dcbfa185d5c37504f4c8b3f16117ed744fba48d08b7aad44a162af1c9354600160a060020a031690565b8181018281101561234457fe5b92915050565b7f3db340e280667ee926fa8c51e8f9fcf88a0ff221a66d84d63b4778127d97d13960009081526020527ef98556deae64bbaa11436ee534ae029e85ed112aff9b71330af4c2d320eac955565b60408051600160a060020a038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8b6c035400000000000000000000000000000000000000000000000000000000908117909152906000612419611b49565b600160a060020a031663dc8601b361242f610f79565b84612438611897565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156124a557818101518382015260200161248d565b50505050905090810190601f1680156124d25780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156124f357600080fd5b505af1158015612507573d6000803e3d6000fd5b505050506040513d602081101561251d57600080fd5b5051905061252b8185612fb5565b6125358187613037565b6040805185815290518291600160a060020a038916917f3a5557a7cf72d28e8da836aeff2de822440d01a036e571c12c4c48611a0a41799181900360200190a3505050505050565b80600160a060020a038116151561259357600080fd5b600160a060020a03831615156125b1576125ac82613125565b6107d1565b6107d18383613131565b7f98aa806e31e94a687a31c65769cb99670064dd7f5a87526da075c5fb4eab988060005260026020527f0c1206883be66049a02d4937078367c00b3d71dd1a9465df969363c6ddeac96d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b61263f81610fe784610b72565b6000808460405160200180807f746f74616c45786563757465645065724461790000000000000000000000000081525060130182815260200191505060405160208183030381529060405260405180828051906020019080838360208310611e475780518252601f199092019160209182019101611e28565b6000806126c4836131de565b91506126ce6131f4565b90506126df610d798361174b610b25565b6126ec848361223f6108cd565b6040805183815290518291600160a060020a038716917f2f9a6098d4503a127779ba975f5f6b04f842362b1809f346989e9abc0b4dedb69181900360200190a350505050565b600080600061273f6131f4565b925061274a836127d3565b9092509050600160a060020a038216158015612764575080155b151561276f57600080fd5b61277e61175785610fe76114f5565b61278985858561323b565b60408051600160a060020a038716815260208101869052815185927f3344bbb992063ed4b833dabd5d5e55fc18df085bb96654e83aafbfe22e4116ff928290030190a25050505050565b600080600260008460405160200180807f74784f75744f664c696d6974526563697069656e74000000000000000000000081525060150182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106128595780518252601f19909201916020918201910161283a565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652858101969096525092830160009081205484517f74784f75744f664c696d697456616c75650000000000000000000000000000008188015260318082018b9052865180830390910181526051909101958690528051600160a060020a0390921698509195869592945091925082918401908083835b602083106129175780518252601f1990920191602091820191016128f8565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912086528501959095529290920160002054949694955050505050565b60008282111561296657fe5b50900390565b7f145286dc85799b6fb9fe322391ba2d95683077b2adf34dd576dedc437e537ba760009081526020527fba10c7a68bf463c41368d64adcf7df23c0de931ea3b09f061e2dfec302fef95f55565b816000808360405160200180807f74784f75744f664c696d697456616c7565000000000000000000000000000000815250601101826000191660001916815260200191505060405160208183030381529060405260405180828051906020019080838360208310611e475780518252601f199092019160209182019101611e28565b612a4481612fad565b1515612a4f57600080fd5b7fa8b0ade3e2b734f043ce298aca4cc8d19d74270223f34531d0988b7d00cba21d60005260026020527f603cd9dcbfa185d5c37504f4c8b3f16117ed744fba48d08b7aad44a162af1c93805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60408101516000108015612ae1575060408101516020820151115b8015612af1575060208101518151115b1515612afc57600080fd5b80517f4a6a899679f26b73530d8cf1001e83b6f7702e04b6fdb98f3c62dc7e47e041a5600090815260208181527f1ab29a5cca988aee50edccdd61c5bcaa7ad4b29a03b7ee50f298ceccfe14cc4e92909255908201517f0f8803acad17c63ee38bf2de71e1888bc7a079a6f73658e274b08018bea4e29c82527f9de0f81379b4d8e60fe509315d071b56e7b732abaf193e74e0d15808b0951d095560408201517fbbb088c505d18e049d114c7c91f11724e69c55ad6c5397e2b929e68b41fa05d182527f8df5c48c6b6e11d97548adc824ba0c99103ec09830fa5d53a179984085e6eaa0557fad4123ae17c414d9c6d2fec478b402e6b01856cc250fd01fbfd252fda0089d3c9082905b60200201516040518082815260200191505060405180910390a150565b8051602082015110612c3457600080fd5b80517f21dbcab260e413c20dc13c28b7db95e2b423d1135f42bb8b7d5214a92270d237600090815260208181527fadd938dbd083a16bae12238cd914fca0afc7a30edb55b1cd5c7f1823f1b0e42192909255908201517fc0ed44c192c86d1cc1ba51340b032c2766b4a2b0041031de13c46dd7104888d582527ff8e983ee86e5e377e9e34c9131b266382c3f04113d20de077f9e12663c7a646b557f9bebf928b90863f24cc31f726a3a7545efd409f1dcf552301b1ee3710da70d3b908290612c06565b612d00613331565b811115612d0c57600080fd5b7f2dfd6c9f781bb6bbb5369c114e949b69ebb440ef3d4dd6b2836225eb1dc3a2be60009081526020527f2de0d2cdc19d356cb53b5984f91bfd3b31fe0c678a0d190a6db39274bb34753f55565b604c1981138015612d6a5750604d81125b1515612d7557600080fd5b7f1e8ecaafaddea96ed9ac6d2642dcdfe1bebe58a930b1085842d8fc122b371ee560009081526020527fd5c78dd9468716ca9bb96be25d56436811b20aab3523a9904b12deef1cab239d55565b600160a060020a0381161515612dd757600080fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0612e006110e8565b60408051600160a060020a03928316815291841660208301528051918290030190a17f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc805460ff19166001179055565b8051829060001015612344578151601414612f0a57600080fd5b612f1382613378565b9050600160a060020a0381161515612f2a57600080fd5b612f3261337f565b600160a060020a038281169116141561234457600080fd5b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015611f1e57600080fd5b6000903b1190565b806000808460405160200180807f6d65737361676556616c75650000000000000000000000000000000000000000815250600c01826000191660001916815260200191505060405160208183030381529060405260405180828051906020019080838360208310611e475780518252601f199092019160209182019101611e28565b80600260008460405160200180807f6d657373616765526563697069656e740000000000000000000000000000000081525060100182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106130bb5780518252601f19909201916020918201910161309c565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0395909516949094179093555050505050565b3031610f508282613389565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290518391600091600160a060020a038416916370a0823191602480830192602092919082900301818787803b15801561319657600080fd5b505af11580156131aa573d6000803e3d6000fd5b505050506040513d60208110156131c057600080fd5b50519050611f81600160a060020a038516848363ffffffff612f4a16565b6000612344826131ec611ba0565b6000036133ea565b60006131fe611b49565b600160a060020a031663669f618b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611fce57600080fd5b82600260008360405160200180807f74784f75744f664c696d6974526563697069656e74000000000000000000000081525060150182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083106132bf5780518252601f1990920191602091820191016132a0565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039590951694909417909355506107d19150839050826129b9565b600061333b611b49565b600160a060020a031663e5789d036040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611fce57600080fd5b6014015190565b60006108d7610f79565b604051600160a060020a0383169082156108fc029083906000818181858888f193505050501515610f505780826133be613473565b600160a060020a039091168152604051908190036020019082f0801580156114e3573d6000803e3d6000fd5b60008115156133fa575081612344565b600082131561341e5761341783600a84900a63ffffffff61343516565b9050612344565b611013836000849003600a0a63ffffffff61345e16565b600082151561344657506000612344565b5081810281838281151561345657fe5b041461234457fe5b6000818381151561346b57fe5b049392505050565b604051602180613483833901905600608060405260405160208060218339810160405251600160a060020a038116ff00a165627a7a72305820d0249942549c9a6939d1d15f3ddd1b3024af19d5fa9c01bcde1e348ab6fdf4a00029