0 txs
0 calls
constructor
constructor()
functions
disputeEndTime
viewfunction disputeEndTime() view returns (uint256)
disputeStartTime
viewfunction disputeStartTime() view returns (uint256)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
createDispute
nonpayablefunction createDispute(uint256 dealSize, bool isLoyalty, uint256 eachUserDisputeCost, uint256 disputeParties, string disputeUri) returns (address)
initialize
nonpayablefunction initialize(address platform, address timeFeeAddress, address base, address authority, address platformOwner)
renounceOwnership
nonpayablefunction renounceOwnership()
setAuthorityAddress
nonpayablefunction setAuthorityAddress(address newAuthorityAddress)
setDisputeTimes
nonpayablefunction setDisputeTimes(uint256 startTime, uint256 proofTime, uint256 endTime)
setPlatformWallet
nonpayablefunction setPlatformWallet(address newPlatformWallet)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateBuyBackAndBurn
nonpayablefunction updateBuyBackAndBurn(uint24 fee)
updateDisputePricePerSide
nonpayablefunction updateDisputePricePerSide(uint256 newPricePerSide)
updateExistingAuthorityAddress
nonpayablefunction updateExistingAuthorityAddress(address disputeContract, address newAuthorityAddress)
updateExistingPlatformWallet
nonpayablefunction updateExistingPlatformWallet(address disputeContract, address newPlatformWallet)
updateNoOfOracles
nonpayablefunction updateNoOfOracles(uint256 newNoOfOracles)
updateTimeFeeWalletAddress
nonpayablefunction updateTimeFeeWalletAddress(address newTimeFeeWallet)
updateTimeInMinutes
nonpayablefunction updateTimeInMinutes(uint256 startTime, uint256 proofTime, uint256 endTime)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AuthorityAddressUpdated
event AuthorityAddressUpdated(address indexed previousAuthorityAddress, address indexed newAuthorityAddress)
DisputeCreated
event DisputeCreated(address contractAddress, address creator, address baseToken, address authority, uint256 userDisputeId)
DisputePriceUpdated
event DisputePriceUpdated(uint256 previousPrice, uint256 newPrice)
DisputeTimeUpdated
event DisputeTimeUpdated(uint256 startTime, uint256 endTime, uint256 proofTime, address indexed disputeContract)
ExistingAuthorityAddressUpdated
event ExistingAuthorityAddressUpdated(address indexed disputeContract, address indexed authorityAddress)
ExistingPlatformWalletUpdated
event ExistingPlatformWalletUpdated(address indexed disputeContract, address indexed platfromWallet)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PlatformWalletIsUpdated
event PlatformWalletIsUpdated(address indexed previousPlatformWallet, address indexed newPlatformWallet)
TimeFeeWalletAddressUpdated
event TimeFeeWalletAddressUpdated(address indexed previousTimeFeeWallet, address indexed newTimeFeeWallet)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidAddress
error InvalidAddress()
InvalidFee
error InvalidFee()
InvalidInitialization
error InvalidInitialization()
InvalidValue
error InvalidValue()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615f1f6100f95f395f81816111a3015281816111cc01526113070152615f1f5ff3fe60806040526004361061011b575f3560e01c80638831e9cf1161009d578063ad3cb1cc11610062578063ad3cb1cc146102d1578063bf0780db1461030e578063ea36212d1461032d578063f2fde38b1461034c578063fc0e234f1461036b575f5ffd5b80638831e9cf146102345780638da5cb5b14610253578063956d803c14610274578063958c9b9c146102935780639b8f539c146102b2575f5ffd5b80634f1ef286116100e35780634f1ef286146101bb57806352d1902d146101ce578063579812a5146101e25780635e159c5314610201578063715018a614610220575f5ffd5b80630ee195521461011f5780631459457a14610140578063225edd101461015f57806322edce20146101875780634ab31218146101a6575b5f5ffd5b34801561012a575f5ffd5b5061013e6101393660046116a6565b61038a565b005b34801561014b575f5ffd5b5061013e61015a3660046116d1565b6103ff565b34801561016a575f5ffd5b5061017460025481565b6040519081526020015b60405180910390f35b348015610192575f5ffd5b5061013e6101a136600461173e565b6105e6565b3480156101b1575f5ffd5b5061017460035481565b61013e6101c9366004611774565b61066a565b3480156101d9575f5ffd5b50610174610689565b3480156101ed575f5ffd5b5061013e6101fc366004611837565b6106a4565b34801561020c575f5ffd5b5061013e61021b366004611852565b610748565b34801561022b575f5ffd5b5061013e610857565b34801561023f575f5ffd5b5061013e61024e366004611837565b61086a565b34801561025e575f5ffd5b50610267610910565b60405161017e9190611889565b34801561027f575f5ffd5b5061013e61028e36600461189d565b61093e565b34801561029e575f5ffd5b506102676102ad3660046118c6565b610a37565b3480156102bd575f5ffd5b5061013e6102cc3660046116a6565b610e3f565b3480156102dc575f5ffd5b50610301604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161017e9190611992565b348015610319575f5ffd5b5061013e610328366004611837565b610e76565b348015610338575f5ffd5b5061013e610347366004611852565b610f1a565b348015610357575f5ffd5b5061013e610366366004611837565b611029565b348015610376575f5ffd5b5061013e61038536600461189d565b61106c565b610392611123565b8015806103a0575060015481145b156103be576040516358d620b360e01b815260040160405180910390fd5b60015460408051918252602082018390527f3e53885ee1ad89dfe02b91541df858cc255c034245d0f086c74ad6ea6ec3d9cb910160405180910390a1600155565b5f610408611155565b805490915060ff600160401b82041615906001600160401b03165f8115801561042e5750825b90505f826001600160401b031660011480156104495750303b155b905081158015610457575080155b156104755760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561049f57845460ff60401b1916600160401b1785555b6104a88661117f565b6104b0611190565b6001600160a01b038a1615806104cd57506001600160a01b038916155b806104df57506001600160a01b038816155b806104f157506001600160a01b038716155b8061050357506001600160a01b038616155b156105215760405163e6c4247b60e01b815260040160405180910390fd5b60058054600680546001600160a01b038d81166001600160a01b031992831617909255600480548d8416921691909117905560078054600f5f55623d090060015561012c600281905560038190556008556001600160a81b0319168b83161790556001600160b81b0319909116908c1617905583156105da57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6105ee611123565b600754600160a01b900460ff1615610610576007805460ff60a01b1916905550565b8062ffffff165f03610635576040516358d620b360e01b815260040160405180910390fd5b6005805462ffffff60a01b1916600160a01b62ffffff84168102919091179091556007805460ff60a01b191690911790555b50565b610672611198565b61067b8261123c565b6106858282611244565b5050565b5f6106926112fc565b505f516020615eca5f395f51905f5290565b6106ac611123565b6001600160a01b03811615806106cf57506006546001600160a01b038281169116145b156106ed5760405163e6c4247b60e01b815260040160405180910390fd5b6006546040516001600160a01b038084169216907f62f89c5f9ac38231a06486e252729814bf16bf7e1e766076dad77dcde9f41d7c905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b610750611123565b6001600160a01b038216158061076d57506001600160a01b038116155b1561078b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600b602052604090205460ff166107c35760405163e6c4247b60e01b815260040160405180910390fd5b60405163ccfc456960e01b81526001600160a01b0383169063ccfc4569906107ef908490600401611889565b5f604051808303815f87803b158015610806575f5ffd5b505af1158015610818573d5f5f3e3d5ffd5b50506040516001600160a01b038085169350851691507f1f2a1174c083e293cecbc3d063657f97b3d3fd1d84d1b6484d6cba850b6e671e905f90a35050565b61085f611123565b6108685f611345565b565b610872611123565b6005546001600160a01b0316158061089757506005546001600160a01b038281169116145b156108b55760405163e6c4247b60e01b815260040160405180910390fd5b6005546040516001600160a01b038084169216907fafdafba178415f38a81e9ce31168ffa3ce22045e659b3dbb40405bf2ac3e7078905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b610946611123565b821580610951575080155b1561096f57604051632a9ffab760e21b815260040160405180910390fd5b826002541480610980575080600354145b1561099e57604051632a9ffab760e21b815260040160405180910390fd5b8083036109be57604051632a9ffab760e21b815260040160405180910390fd5b6109cb83620151806119b8565b6002556109db81620151806119b8565b6003556109eb82620151806119b8565b600855604080518481526020810183905290810183905230907f2e911306b9e1a30bfa03b442ba14061525801114e6a628b0de1b1c07b6116e88906060015b60405180910390a2505050565b5f5f3390505f604051806101e001604052808a81526020015f5481526020015f81526020015f81526020015f8152602001891515815260200160025442610a7e91906119cf565b815260200160035460085460025442610a9791906119cf565b610aa191906119cf565b610aab91906119cf565b81526020018781526020015f815260200160018152602001878152602001836001600160a01b0316815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250938552505050602090910152905060018611610b3857604051632a9ffab760e21b815260040160405180910390fd5b8715610bd3575f610b49878b6119e2565b9050805f03610b6b576040516358d620b360e01b815260040160405180910390fd5b5f610b788b6109c46113b5565b90505f610b8589836119e2565b9050805f03610ba7576040516358d620b360e01b815260040160405180910390fd5b60808401829052600154610bbb82856119cf565b610bc591906119cf565b604085015250610bdc915050565b60015460408201525b6005546006546004546007546001545f805460085460035460405193986001600160a01b038082169981169881169790811696953094600160a01b9283900460ff16949290930462ffffff16929190610c3490611699565b6001600160a01b039b8c168152998b1660208b0152978a1660408a01529589166060890152608088019490945260a087019290925290951660c085015293151560e084015262ffffff90931661010083015261012082019290925261014081019190915261016001604051809103905ff080158015610cb5573d5f5f3e3d5ffd5b5090508160400151881015610cdd576040516358d620b360e01b815260040160405180910390fd5b6040820151600454610cfe916001600160a01b0390911690859084906113d5565b604051600162ba926b60e01b031981526001600160a01b0382169063ff456d9590610d2d908590600401611a01565b5f604051808303815f87803b158015610d44575f5ffd5b505af1158015610d56573d5f5f3e3d5ffd5b505050506001600160a01b038381165f818152600a60208181526040808420805460098452828620818752845291852080546001600160a01b03191697891697909717909655938352528254919290610dae83611ae0565b90915550506001600160a01b038281165f818152600b6020908152604091829020805460ff1916600117905560045460075483519485528986169285019290925284168383015290921660608201526080810183905290517f5a2ebdf3629a992ad1a4138811be00975016f1139be6ce0512f627827d77b2dc9160a0908290030190a1509998505050505050505050565b610e47611123565b801580610e5457505f5481145b15610e7257604051632a9ffab760e21b815260040160405180910390fd5b5f55565b610e7e611123565b6001600160a01b0381161580610ea157506007546001600160a01b038281169116145b15610ebf5760405163e6c4247b60e01b815260040160405180910390fd5b6007546040516001600160a01b038084169216907f741ee0e619c436098dff0f2be43023c24aef6c4c3134ca5db37746bb1088d0df905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b610f22611123565b6001600160a01b0382161580610f3f57506001600160a01b038116155b15610f5d5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600b602052604090205460ff16610f955760405163e6c4247b60e01b815260040160405180910390fd5b604051630ada4ef360e41b81526001600160a01b0383169063ada4ef3090610fc1908490600401611889565b5f604051808303815f87803b158015610fd8575f5ffd5b505af1158015610fea573d5f5f3e3d5ffd5b50506040516001600160a01b038085169350851691507fae03c08a3f7078bbdc6986e7f8f7fda4a75c215f0adda92c192919c27e9f92e2905f90a35050565b611031611123565b6001600160a01b038116611063575f604051631e4fbdf760e01b815260040161105a9190611889565b60405180910390fd5b61066781611345565b611074611123565b82158061107f575080155b8061108b575082600254145b80611097575080600354145b156110b557604051632a9ffab760e21b815260040160405180910390fd5b6110c083603c6119b8565b6002556110ce82603c6119b8565b6008556110dc81603c6119b8565b60035560085460408051858152602081018490529081019190915230907f2e911306b9e1a30bfa03b442ba14061525801114e6a628b0de1b1c07b6116e8890606001610a2a565b3361112c610910565b6001600160a01b031614610868573360405163118cdaa760e01b815260040161105a9190611889565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b611187611435565b6106678161145a565b610868611435565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061121e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112125f516020615eca5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108685760405163703e46dd60e11b815260040160405180910390fd5b610667611123565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561129e575060408051601f3d908101601f1916820190925261129b91810190611af8565b60015b6112bd5781604051634c9c8ce360e01b815260040161105a9190611889565b5f516020615eca5f395f51905f5281146112ed57604051632a87526960e21b81526004810182905260240161105a565b6112f78383611462565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108685760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f620f42406113c483856119b8565b6113ce91906119e2565b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261142f9085906114b7565b50505050565b61143d61151a565b61086857604051631afcd79f60e31b815260040160405180910390fd5b611031611435565b61146b82611533565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156114af576112f7828261158d565b6106856115ff565b5f5f60205f8451602086015f885af1806114d6576040513d5f823e3d81fd5b50505f513d915081156114ed5780600114156114fa565b6001600160a01b0384163b155b1561142f5783604051635274afe760e01b815260040161105a9190611889565b5f611523611155565b54600160401b900460ff16919050565b806001600160a01b03163b5f0361155f5780604051634c9c8ce360e01b815260040161105a9190611889565b5f516020615eca5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516115a99190611b0f565b5f60405180830381855af49150503d805f81146115e1576040519150601f19603f3d011682016040523d82523d5f602084013e6115e6565b606091505b50915091506115f685838361161e565b95945050505050565b34156108685760405163b398979f60e01b815260040160405180910390fd5b6060826116335761162e82611671565b6113ce565b815115801561164a57506001600160a01b0384163b155b1561166a5783604051639996b31560e01b815260040161105a9190611889565b5092915050565b80511561168057805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b6143a480611b2683390190565b5f602082840312156116b6575f5ffd5b5035919050565b6001600160a01b0381168114610667575f5ffd5b5f5f5f5f5f60a086880312156116e5575f5ffd5b85356116f0816116bd565b94506020860135611700816116bd565b93506040860135611710816116bd565b92506060860135611720816116bd565b91506080860135611730816116bd565b809150509295509295909350565b5f6020828403121561174e575f5ffd5b813562ffffff811681146113ce575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611785575f5ffd5b8235611790816116bd565b915060208301356001600160401b038111156117aa575f5ffd5b8301601f810185136117ba575f5ffd5b80356001600160401b038111156117d3576117d3611760565b604051601f8201601f19908116603f011681016001600160401b038111828210171561180157611801611760565b604052818152828201602001871015611818575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611847575f5ffd5b81356113ce816116bd565b5f5f60408385031215611863575f5ffd5b823561186e816116bd565b9150602083013561187e816116bd565b809150509250929050565b6001600160a01b0391909116815260200190565b5f5f5f606084860312156118af575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f5f5f5f60a087890312156118db575f5ffd5b86359550602087013580151581146118f1575f5ffd5b9450604087013593506060870135925060808701356001600160401b03811115611919575f5ffd5b8701601f81018913611929575f5ffd5b80356001600160401b0381111561193e575f5ffd5b89602082840101111561194f575f5ffd5b60208201935080925050509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113ce6020830184611964565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417611179576111796119a4565b80820180821115611179576111796119a4565b5f826119fc57634e487b7160e01b5f52601260045260245ffd5b500490565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a08201525f60a0830151611a4860c084018215159052565b5060c083015160e083015260e0830151610100830152610100830151610120830152610120830151610140830152610140830151610160830152610160830151610180830152610180830151611aaa6101a08401826001600160a01b03169052565b506101a08301516101e06101c0840152611ac8610200840182611964565b90506101c08401516101e08401528091505092915050565b5f60018201611af157611af16119a4565b5060010190565b5f60208284031215611b08575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe60e060405234801561000f575f5ffd5b506040516143a43803806143a483398101604081905261002e916101e8565b846001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161016b565b506001600160a01b038b16158061008357506001600160a01b038916155b8061009557506001600160a01b038816155b156100b35760405163e6c4247b60e01b815260040160405180910390fd5b865f036100d357604051630a1a738560e11b815260040160405180910390fd5b6019805462ffffff90941662ffffff199515156301000000029590951663ffffffff199094169390931793909317909155600280546001600160a01b039a8b1661010002610100600160a81b031990911617905560178054988a166001600160a01b0319998a16179055601b55948716608052506003805493909616929094169190911790935560a09290925260c0526018556102ae565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ce575f5ffd5b50565b805162ffffff811681146101e3575f5ffd5b919050565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e031215610203575f5ffd5b8b5161020e816101ba565b60208d0151909b5061021f816101ba565b60408d0151909a50610230816101ba565b60608d0151909950610241816101ba565b60808d015160a08e015160c08f0151929a509098509650610261816101ba565b60e08d01519095508015158114610276575f5ffd5b93506102856101008d016101d1565b6101208d0151610140909d01519b9e9a9d50989b979a9699959894979396949593949392505050565b60805160a05160c05161407f6103255f395f81816115900152612cc201525f8181612c9e0152612d0201525f8181610ec501528181611003015281816110970152818161160a0152818161196101528181611cec01528181611d8401528181611e9f01528181611f310152612b1c015261407f5ff3fe608060405260043610610197575f3560e01c8063ada4ef30116100df578063db0fff3711610083578063db0fff37146104bc578063e47a9d46146104d1578063ea0e51a5146104ee578063ea35e80514610503578063f1545c0f14610517578063f2fde38b14610536578063ff456d9514610555578063fff097d014610574575f5ffd5b8063ada4ef30146103a2578063b0d26168146103c1578063b557478a146103ec578063b88a802f1461041a578063ccfc45691461042e578063d5af196b1461044d578063d76a09f41461046c578063d9cf9b4b1461048e575f5ffd5b8063715018a611610146578063715018a6146102b457806373b2e80e146102c85780638a5fc0f9146102f65780638da5cb5b1461030f578063948b557a14610334578063955d7b561461035557806398c079381461036e5780639b46a16414610383575f5ffd5b806309eef43e146101a25780631973f028146101e45780631af19dd31461021c5780632c2e8faf146102555780634ab312181461027657806356069c0a1461028b578063590e1ae3146102a0575f5ffd5b3661019e57005b5f5ffd5b3480156101ad575f5ffd5b506101cf6101bc36600461380a565b602080525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156101ef575f5ffd5b506101f8610593565b6040805193845260208401929092526001600160a01b0316908201526060016101db565b348015610227575f5ffd5b5061024761023636600461380a565b60216020525f908152604090205481565b6040519081526020016101db565b348015610260575f5ffd5b5061027461026f3660046138e9565b61086d565b005b348015610281575f5ffd5b5061024760185481565b348015610296575f5ffd5b50610247601a5481565b3480156102ab575f5ffd5b50610274610c3d565b3480156102bf575f5ffd5b5061027461111e565b3480156102d3575f5ffd5b506101cf6102e236600461380a565b60236020525f908152604090205460ff1681565b348015610301575f5ffd5b506014546101cf9060ff1681565b34801561031a575f5ffd5b505f546001600160a01b03165b6040516101db9190613922565b34801561033f575f5ffd5b5061034861112f565b6040516101db9190613964565b348015610360575f5ffd5b506002546101cf9060ff1681565b348015610379575f5ffd5b5061024760135481565b34801561038e575f5ffd5b5061027461039d366004613a87565b6112d1565b3480156103ad575f5ffd5b506102746103bc36600461380a565b611a5f565b3480156103cc575f5ffd5b506102476103db366004613ace565b60226020525f908152604090205481565b3480156103f7575f5ffd5b506101cf61040636600461380a565b601e6020525f908152604090205460ff1681565b348015610425575f5ffd5b50610274611b27565b348015610439575f5ffd5b5061027461044836600461380a565b611fa9565b348015610458575f5ffd5b50610274610467366004613afd565b612061565b348015610477575f5ffd5b5060025461010090046001600160a01b0316610327565b348015610499575f5ffd5b506101cf6104a836600461380a565b601d6020525f908152604090205460ff1681565b3480156104c7575f5ffd5b5061024760015481565b3480156104dc575f5ffd5b506003546001600160a01b0316610327565b3480156104f9575f5ffd5b50610247601b5481565b34801561050e575f5ffd5b506102476123d3565b348015610522575f5ffd5b50610274610531366004613b57565b612720565b348015610541575f5ffd5b5061027461055036600461380a565b612ba9565b348015610560575f5ffd5b5061027461056f366004613b9a565b612bef565b34801561057f575f5ffd5b50601654610327906001600160a01b031681565b6002545f908190819060ff16156105bd57604051637d66929f60e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161065990613caa565b80601f016020809104026020016040519081016040528092919081815260200182805461068590613caa565b80156106d05780601f106106a7576101008083540402835291602001916106d0565b820191905f5260205f20905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001600e8201548152505090505f5f5f5f5f8561010001516001600160401b0381111561070757610707613823565b604051908082528060200260200182016040528015610730578160200160208202803683370190505b5090505f61074c87602001518861010001518960e00151613079565b9194509250905060018111156107f8575f195f805b838110156107ee575f85828151811061077c5761077c613ce2565b6020908102919091018101515f818152602490925260408220549092506107a590600190613d0a565b5f83815260246020526040812080549293509091839081106107c9576107c9613ce2565b905f5260205f2001549050858110156107e3578095508294505b505050600101610761565b5095506108159050565b815f8151811061080a5761080a613ce2565b602002602001015194505b6015610822600187613d0a565b8154811061083257610832613ce2565b5f918252602090912001546101208801516001600160a01b03909116945061085b908490613d1d565b949a9499509297509295505050505050565b600254339060ff161561089357604051637d66929f60e01b815260040160405180910390fd5b81515f036108b4576040516309bde33960e01b815260040160405180910390fd5b6001600160a01b0381166108db5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381165f908152601d602052604090205460ff1661091357604051636922322f60e11b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a08401916109af90613caa565b80601f01602080910402602001604051908101604052809291908181526020018280546109db90613caa565b8015610a265780601f106109fd57610100808354040283529160200191610a26565b820191905f5260205f20905b815481529060010190602001808311610a0957829003601f168201915b50505050508152602001600e820154815250509050601b548160c00151610a4d9190613d3c565b4210610a6c57604051637c75aa6f60e11b815260040160405180910390fd5b6001600160a01b0382165f908152601f602052604081208054610a8e90613caa565b9050118015610ac157506001600160a01b0382165f908152601f602052604081206001018054610abd90613caa565b9050115b15610adf5760405163523317c160e11b815260040160405180910390fd5b82516020808501919091206001600160a01b0384165f908152601f90925260408220909101604051610b119190613d4f565b604051809103902003610b37576040516309bde33960e01b815260040160405180910390fd5b6001600160a01b0382165f908152601f60205260409020600101610b5b8482613e0b565b5060016004600e015f828254610b719190613d3c565b909155505061016081015160125403610bed5742600a819055601854610b9691613d3c565b600b8190555f601b819055600a5460405130937fa58efc2623d1ecbe2a1fd15d8fe729d9a61661ca78d23dcefa3b37327b32bb8993610be49383526020830191909152604082015260600190565b60405180910390a25b816001600160a01b0316306001600160a01b03167f8833c4ef1be80b2c2b9885c3116db7d4219b759806d074cda5269b46a718946a85604051610c309190613ec5565b60405180910390a3505050565b610c456132f5565b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a0840191610ce190613caa565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0d90613caa565b8015610d585780601f10610d2f57610100808354040283529160200191610d58565b820191905f5260205f20905b815481529060010190602001808311610d3b57829003601f168201915b5050509183525050600e919091015460209091015261018081015190915033906001600160a01b03168103610ef2576001600160a01b0381165f908152601e602052604090205460ff1615610dc057604051630c8d9eab60e31b815260040160405180910390fd5b816101600151826101400151148015610ddc5750600154600714155b15610dfa576040516345b4917560e11b815260040160405180910390fd5b600154600703610e29578160e00151421015610e295760405163c492f0e760e01b815260040160405180910390fd5b60135415610e4a576040516356ff330b60e11b815260040160405180910390fd5b8160c00151421015610e6f576040516371dcf04960e01b815260040160405180910390fd5b60025460ff16610e87576002805460ff191660011790555b6001600160a01b038181165f908152601e6020526040908190208054600160ff199182168117909255600280549091169091179055830151610eed917f00000000000000000000000000000000000000000000000000000000000000001690839061333c565b6110c1565b600154600714158015610f08575060025460ff16155b15610f26576040516361491ef960e11b815260040160405180910390fd5b60135415610f47576040516356ff330b60e11b815260040160405180910390fd5b60025460ff16610f5f576002805460ff191660011790555b6001600160a01b0381165f908152601e602052604090205460ff1615610f9857604051630c8d9eab60e31b815260040160405180910390fd5b6001600160a01b0381165f908152601d602052604090205460ff16610fd057604051637c75aa6f60e11b815260040160405180910390fd5b6001600160a01b038082165f908152601e6020526040808220805460ff19166001179055516370a0823160e01b815290917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611038903090600401613922565b602060405180830381865afa158015611053573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110779190613ed7565b90505f611088828560400151613394565b90506110be6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361333c565b50505b806001600160a01b0316306001600160a01b03167f39bed68a008a68cbf907d7ff6bc3629912af6516cb837cfa3f871ad9f2b8a944846040015160405161110a91815260200190565b60405180910390a3505061111c6133a8565b565b6111266133bf565b61111c5f6133eb565b6111a5604051806101e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b03168152602001606081526020015f81525090565b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180549192916101a08401919061124290613caa565b80601f016020809104026020016040519081016040528092919081815260200182805461126e90613caa565b80156112b95780601f10611290576101008083540402835291602001916112b9565b820191905f5260205f20905b81548152906001019060200180831161129c57829003601f168201915b50505050508152602001600e82015481525050905090565b6112d96132f5565b600254339060ff16156112ff57604051637d66929f60e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161139b90613caa565b80601f01602080910402602001604051908101604052809291908181526020018280546113c790613caa565b80156114125780601f106113e957610100808354040283529160200191611412565b820191905f5260205f20905b8154815290600101906020018083116113f557829003601f168201915b50505050508152602001600e820154815250509050845f1480611439575080610100015185115b1561145757604051632a71953160e01b815260040160405180910390fd5b8061018001516001600160a01b0316826001600160a01b03160361148e57604051632d073dab60e21b815260040160405180910390fd5b806101600151816101400151146114b8576040516351c904c960e01b815260040160405180910390fd5b8060200151601354106114de576040516356ff330b60e11b815260040160405180910390fd5b6114ea8585858561343a565b8060e00151421061150e57604051637a19ed0560e01b815260040160405180910390fd5b806101600151816101c00151141580156115385750601b548160c001516115359190613d3c565b42105b1561155657604051633fd0090160e11b815260040160405180910390fd5b6001600160a01b0382165f90815260208052604090205460ff161561158e57604051637c9a1cf960e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060135411156115d15760405163d9421b5560e01b815260040160405180910390fd5b6013545f0361199457620f4240601c5f8282546115ee9190613d0a565b909155505060405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906116589073e592427a0aece92de3edee1f18e0157c0586156490620f424090600401613eee565b6020604051808303815f875af1158015611674573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116989190613f07565b506040805160a08101825273fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb960601b60c0820152607d60ea1b60d48201527382af49447d8a07e3bd95bd0d56f35241523fbab160601b60d7820152815160cb81830301815260eb8201835281523060208201525f91810161170f4261012c613d3c565b8152620f424060208201525f6040918201819052905163c04b8d5960e01b81529192509073e592427a0aece92de3edee1f18e0157c058615649063c04b8d599061175d908590600401613f29565b6020604051808303815f875af1158015611779573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179d9190613ed7565b604051632e1a7d4d60e01b8152600481018290529091507382af49447d8a07e3bd95bd0d56f35241523fbab190632e1a7d4d906024015f604051808303815f87803b1580156117ea575f5ffd5b505af11580156117fc573d5f5f3e3d5ffd5b50506017546040515f93506001600160a01b03909116915083908381818185875af1925050503d805f811461184c576040519150601f19603f3d011682016040523d82523d5f602084013e611851565b606091505b5050905080611873576040516371037f3160e01b815260040160405180910390fd5b6019546301000000900460ff161561194d575f6118e473fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb97382af49447d8a07e3bd95bd0d56f35241523fbab173f3eec6bd2934e7c365912c7697876a0dca8c52c9601c546101f460195f9054906101000a900462ffffff16613547565b604051630852cd8d60e31b81526004810182905290915073f3eec6bd2934e7c365912c7697876a0dca8c52c9906342966c68906024015f604051808303815f87803b158015611931575f5ffd5b505af1158015611943573d5f5f3e3d5ffd5b5050505050611990565b600254601c54611990916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692610100909204169061333c565b5050505b5f858152602460209081526040808320805460018181018355918552838520429101556001600160a01b0386168452828052818420805460ff1916909117905560218252808320889055878352602290915281208054916119f483613f80565b909155505060138054905f611a0883613f80565b9190505550816001600160a01b03167fd0e6c39f2e086dc49f1524b47725526a56945cd1ff661f37976f1725a1e5698686604051611a4891815260200190565b60405180910390a25050611a5a6133a8565b505050565b611a676133bf565b6001600160a01b038116611a8e5760405163e6c4247b60e01b815260040160405180910390fd5b6002546001600160a01b038083166101009092041603611ac1576040516313f1bf1d60e31b815260040160405180910390fd5b6002546040516001600160a01b0380841692610100900416907fafdafba178415f38a81e9ce31168ffa3ce22045e659b3dbb40405bf2ac3e7078905f90a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611b2f6132f5565b60025460ff1615611b5357604051637d66929f60e01b815260040160405180910390fd5b601454339060ff16611b6957611b676123d3565b505b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a0840191611c0590613caa565b80601f0160208091040260200160405190810160405280929190818152602001828054611c3190613caa565b8015611c7c5780601f10611c5357610100808354040283529160200191611c7c565b820191905f5260205f20905b815481529060010190602001808311611c5f57829003601f168201915b5050509183525050600e91909101546020909101526016549091505f906001600160a01b038481169116148015611cb457508160a001515b15611df8576001600160a01b038084165f90815260236020526040808220805460ff19166001179055516370a0823160e01b815290917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611d21903090600401613922565b602060405180830381865afa158015611d3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d609190613ed7565b90505f611d7082855f0151613394565b601654909150611dad906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168361333c565b60165484516040519081526001600160a01b03909116907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200160405180910390a25050611f9e565b6001600160a01b0383165f9081526023602052604090205460ff1680611e375750601a546001600160a01b0384165f9081526021602052604090205414155b15611e5557604051637c75aa6f60e11b815260040160405180910390fd5b8160200151826101200151611e6a9190613d1d565b6001600160a01b038085165f90815260236020526040808220805460ff19166001179055516370a0823160e01b8152929350917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190611ed6903090600401613922565b602060405180830381865afa158015611ef1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f159190613ed7565b90505f611f228284613394565b9050611f586001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868361333c565b846001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724184604051611f9391815260200190565b60405180910390a250505b50505061111c6133a8565b611fb16133bf565b6001600160a01b038116611fd85760405163e6c4247b60e01b815260040160405180910390fd5b6003546001600160a01b03808316911603612006576040516313f1bf1d60e31b815260040160405180910390fd5b6003546040516001600160a01b038084169216907f741ee0e619c436098dff0f2be43023c24aef6c4c3134ca5db37746bb1088d0df905f90a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6120696132f5565b60025460ff161561208d57604051637d66929f60e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161212990613caa565b80601f016020809104026020016040519081016040528092919081815260200182805461215590613caa565b80156121a05780601f10612177576101008083540402835291602001916121a0565b820191905f5260205f20905b81548152906001019060200180831161218357829003601f168201915b50505050508152602001600e820154815250509050811580156121c557506001546007145b156121e35760405163c7eff8f760e01b815260040160405180910390fd5b811561223d578060c0015142101561220e576040516338af65f760e01b815260040160405180910390fd5b806101600151816101400151036122385760405163a91acdc360e01b815260040160405180910390fd5b612262565b8060e00151421015612262576040516338af65f760e01b815260040160405180910390fd5b428511612282576040516338af65f760e01b815260040160405180910390fd5b61228e8585853361343a565b81156122bb57600a859055601854601b546122a99087613d3c565b6122b39190613d3c565b600b5561237d565b602081015160135460405163d494f49360e01b8152600481019290925260248201525f9073a12db630a09ab75de0840ef36cbe9050e7e1cf189063d494f49390604401602060405180830381865af4158015612319573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061233d9190613f07565b9050801561235e57604051633102c16960e21b815260040160405180910390fd5b600b8690556001805481905f90612376908390613d3c565b9091555050505b600a54600b5460405130927f1330a2b7f70d74408554b6e5d73c6aefa8d88e43a5cf2dde8220b95a7bb23e35926123bc92918252602082015260400190565b60405180910390a2506123cd6133a8565b50505050565b6002545f9060ff16156123f957604051637d66929f60e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161249590613caa565b80601f01602080910402602001604051908101604052809291908181526020018280546124c190613caa565b801561250c5780601f106124e35761010080835404028352916020019161250c565b820191905f5260205f20905b8154815290600101906020018083116124ef57829003601f168201915b5050509183525050600e919091015460209091015260145490915060ff16156125485760405163025cfd3760e51b815260040160405180910390fd5b5f5f8261010001516001600160401b0381111561256757612567613823565b604051908082528060200260200182016040528015612590578160200160208202803683370190505b5090505f6125ac84602001518561010001518660e00151613079565b919450925090506001811115612658575f195f805b8381101561264e575f8582815181106125dc576125dc613ce2565b6020908102919091018101515f8181526024909252604082205490925061260590600190613d0a565b5f838152602460205260408120805492935090918390811061262957612629613ce2565b905f5260205f200154905085811015612643578095508294505b5050506001016125c1565b50601a5550612679565b815f8151811061266a5761266a613ce2565b6020026020010151601a819055505b60156001601a5461268a9190613d0a565b8154811061269a5761269a613ce2565b5f91825260209091200154601680546001600160a01b0319166001600160a01b039092169190911790556014805460ff191660011790556005839055601a5460405133917f56482e870a733859b0a577d9a75f12c17bd7754ab7b2723301bfc952988b3c799161270c91815260200190565b60405180910390a2601a5494505050505090565b6127286132f5565b60025460ff161561274c57604051637d66929f60e01b815260040160405180910390fd5b80515f0361276d576040516309bde33960e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161280990613caa565b80601f016020809104026020016040519081016040528092919081815260200182805461283590613caa565b80156128805780601f1061285757610100808354040283529160200191612880565b820191905f5260205f20905b81548152906001019060200180831161286357829003601f168201915b50505050508152602001600e8201548152505090505f3390508160c0015142106128bd57604051637c75aa6f60e11b815260040160405180910390fd5b6001600160a01b0381165f908152601d602052604090205460ff16156128f65760405163ca6a758f60e01b815260040160405180910390fd5b816101600151826101400151036129205760405163a91acdc360e01b815260040160405180910390fd5b816040015184101561294557604051630a1a738560e11b815260040160405180910390fd5b6001600160a01b0381165f908152601f602052604090206129668482613e0b565b50601580546001810182555f9182527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b0319166001600160a01b03841617905560a083015115612a135761016083015183515f916129cd91613d1d565b6129d79087613d0a565b90506129e2816136ef565b91508015806129ef575081155b15612a0d57604051630b6de1b760e31b815260040160405180910390fd5b50612a3e565b612a1c856136ef565b9050805f03612a3e57604051630b6de1b760e31b815260040160405180910390fd5b600e8054905f612a4d83613f80565b919050555080601c5f828254612a639190613d3c565b90915550506001600160a01b0382165f908152601d60205260409020805460ff19166001179055610160830151600e5403612b0f5742600a819055601854601b549091612ab09190613d3c565b612aba9190613d3c565b600b819055600a54601b5460405130937fa58efc2623d1ecbe2a1fd15d8fe729d9a61661ca78d23dcefa3b37327b32bb8993612b06939083526020830191909152604082015260600190565b60405180910390a25b612b446001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683308861370b565b816001600160a01b03167fafb5cb6994f61feab63c8d681d837aeb177aa31eb978c2fb94091b403e17cb1e30868661014001516001612b839190613d3c565b604051612b9293929190613f98565b60405180910390a2505050612ba56133a8565b5050565b612bb16133bf565b6001600160a01b038116612be3575f604051631e4fbdf760e01b8152600401612bda9190613922565b60405180910390fd5b612bec816133eb565b50565b5f612bf8613744565b805490915060ff600160401b82041615906001600160401b03165f81158015612c1e5750825b90505f826001600160401b03166001148015612c395750303b155b905081158015612c47575080155b15612c655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612c8f57845460ff60401b1916600160401b1785555b612c976133bf565b60208601517f0000000000000000000000000000000000000000000000000000000000000000905f907f000000000000000000000000000000000000000000000000000000000000000014612cff5760405163d9421b5560e01b815260040160405180910390fd5b5f7f0000000000000000000000000000000000000000000000000000000000000000896101600151612d319190613fcb565b90508860a0015115612da2575f612d4d8a5f01516109c461376c565b9050612d598183613d3c565b92505f8a610160015182612d6d9190613d1d565b9050805f03612d8f57604051630b6de1b760e31b815260040160405180910390fd5b612d998186613d3c565b94505050612da6565b8091505b5f612db0836136ef565b9050805f03612dd257604051630b6de1b760e31b815260040160405180910390fd5b5f612ddd8285613d0a565b90505f620f4240612df16207a12088613fcb565b612dfb9190613d1d565b90505f8c6020015183612e0e9190613d1d565b905081601c5f828254612e219190613d3c565b909155505060608d018190526101208d018390526101408d0151600114612e5b57604051633a77796d60e01b815260040160405180910390fd5b6001601d5f8f61018001516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555060158d6101800151908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055508c6101a00151601f5f8f61018001516001600160a01b03166001600160a01b031681526020019081526020015f205f60028110612f2557612f25613ce2565b0190612f319082613e0b565b508c51600490815560208e015160055560408e015160065560608e015160075560808e015160085560a08e01516009805460ff191691151591909117905560c08e0151600a5560e08e0151600b556101008e0151600c556101208e0151600d556101408e0151600e556101608e0151600f556101808e0151601080546001600160a01b0319166001600160a01b039092169190911790556101a08e01518e9190601190612fde9082613e0b565b506101c082015181600e01559050507fa4404ae1e9c8acc948c6b61b9df8106ad50ecd0ea6429cfdb54c69d2ab0ac89d8d60405161301c9190613964565b60405180910390a150505050505050831561307157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f60605f5f73a12db630a09ab75de0840ef36cbe9050e7e1cf1863d494f493886013546040518363ffffffff1660e01b81526004016130c2929190918252602082015260400190565b602060405180830381865af41580156130dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131019190613f07565b9050801580156131145750600154600714155b156131325760405163907c5f1960e01b815260040160405180910390fd5b60405163cb7e3a1360e01b8152600481018890525f9073a12db630a09ab75de0840ef36cbe9050e7e1cf189063cb7e3a1390602401602060405180830381865af4158015613182573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a69190613ed7565b90505f60015b8881116131e0575f8181526022602052604090205483116131d057600191506131e0565b6131d981613f80565b90506131ac565b50801580156131ee57508642105b1561320c57604051633fc30bd160e11b815260040160405180910390fd5b5f5f896001600160401b0381111561322657613226613823565b60405190808252806020026020018201604052801561324f578160200160208202803683370190505b5090505f60015b8b81116132e2575f818152602260205260409020548481111561329e578094506001925081845f8151811061328d5761328d613ce2565b6020026020010181815250506132d1565b8481036132d157818484815181106132b8576132b8613ce2565b6020908102919091010152826132cd81613f80565b9350505b506132db81613f80565b9050613256565b50919b909a509098509650505050505050565b5f51602061402a5f395f51905f525c1561332257604051633ee5aeb560e01b815260040160405180910390fd5b61111c60015f51602061402a5f395f51905f525b90613785565b611a5a83846001600160a01b031663a9059cbb8585604051602401613362929190613eee565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061378c565b5f8282188284100282185b90505b92915050565b61111c5f5f51602061402a5f395f51905f52613336565b5f546001600160a01b0316331461111c573360405163118cdaa760e01b8152600401612bda9190613922565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600354604051632f34148760e11b8152600481018690526001600160a01b03838116602483015273a12db630a09ab75de0840ef36cbe9050e7e1cf189263238a4d1e929116908390635e68290e90604401602060405180830381865af41580156134a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ca9190613ed7565b86866040518563ffffffff1660e01b81526004016134eb9493929190613fe2565b602060405180830381865af4158015613506573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061352a9190613f07565b6123cd57604051638baa579f60e01b815260040160405180910390fd5b60405163095ea7b360e01b81525f906001600160a01b0388169063095ea7b39061358b9073e592427a0aece92de3edee1f18e0157c05861564908890600401613eee565b6020604051808303815f875af11580156135a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190613f07565b506040805160a081019091526bffffffffffffffffffffffff19606089811b821660c08401526001600160e81b031960e887811b821660d48601528a831b841660d786015286901b1660eb84015287901b1660ee8201525f9080610102810160408051601f19818403018152918152908252306020830152016136504261012c613d3c565b81526020018681526020015f81525090505f73e592427a0aece92de3edee1f18e0157c058615646001600160a01b031663c04b8d59836040518263ffffffff1660e01b81526004016136a29190613f29565b6020604051808303815f875af11580156136be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e29190613ed7565b9998505050505050505050565b5f620f42406137016207a12084613fcb565b6133a29190613d1d565b6040516001600160a01b0384811660248301528381166044830152606482018390526123cd9186918216906323b872dd90608401613362565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006133a2565b5f620f424061377b8385613fcb565b61339f9190613d1d565b80825d5050565b5f5f60205f8451602086015f885af1806137ab576040513d5f823e3d81fd5b50505f513d915081156137c25780600114156137cf565b6001600160a01b0384163b155b156123cd5783604051635274afe760e01b8152600401612bda9190613922565b80356001600160a01b0381168114613805575f5ffd5b919050565b5f6020828403121561381a575f5ffd5b61339f826137ef565b634e487b7160e01b5f52604160045260245ffd5b6040516101e081016001600160401b038111828210171561385a5761385a613823565b60405290565b5f82601f83011261386f575f5ffd5b81356001600160401b0381111561388857613888613823565b604051601f8201601f19908116603f011681016001600160401b03811182821017156138b6576138b6613823565b6040528181528382016020018510156138cd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156138f9575f5ffd5b81356001600160401b0381111561390e575f5ffd5b61391a84828501613860565b949350505050565b6001600160a01b0391909116815260200190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a08201525f60a08301516139ab60c084018215159052565b5060c083015160e083015260e0830151610100830152610100830151610120830152610120830151610140830152610140830151610160830152610160830151610180830152610180830151613a0d6101a08401826001600160a01b03169052565b506101a08301516101e06101c0840152613a2b610200840182613936565b90506101c08401516101e08401528091505092915050565b5f5f83601f840112613a53575f5ffd5b5081356001600160401b03811115613a69575f5ffd5b602083019150836020828501011115613a80575f5ffd5b9250929050565b5f5f5f60408486031215613a99575f5ffd5b8335925060208401356001600160401b03811115613ab5575f5ffd5b613ac186828701613a43565b9497909650939450505050565b5f60208284031215613ade575f5ffd5b5035919050565b8015158114612bec575f5ffd5b803561380581613ae5565b5f5f5f5f60608587031215613b10575f5ffd5b8435935060208501356001600160401b03811115613b2c575f5ffd5b613b3887828801613a43565b9094509250506040850135613b4c81613ae5565b939692955090935050565b5f5f60408385031215613b68575f5ffd5b8235915060208301356001600160401b03811115613b84575f5ffd5b613b9085828601613860565b9150509250929050565b5f60208284031215613baa575f5ffd5b81356001600160401b03811115613bbf575f5ffd5b82016101e08185031215613bd1575f5ffd5b613bd9613837565b8135815260208083013590820152604080830135908201526060808301359082015260808083013590820152613c1160a08301613af2565b60a082015260c0828101359082015260e080830135908201526101008083013590820152610120808301359082015261014080830135908201526101608083013590820152613c6361018083016137ef565b6101808201526101a08201356001600160401b03811115613c82575f5ffd5b613c8e86828501613860565b6101a0830152506101c091820135918101919091529392505050565b600181811c90821680613cbe57607f821691505b602082108103613cdc57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156133a2576133a2613cf6565b5f82613d3757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156133a2576133a2613cf6565b5f5f8354613d5c81613caa565b600182168015613d735760018114613d8857613db5565b60ff1983168652811515820286019350613db5565b865f5260205f205f5b83811015613dad57815488820152600190910190602001613d91565b505081860193505b509195945050505050565b601f821115611a5a57805f5260205f20601f840160051c81016020851015613de55750805b601f840160051c820191505b81811015613e04575f8155600101613df1565b5050505050565b81516001600160401b03811115613e2457613e24613823565b613e3881613e328454613caa565b84613dc0565b6020601f821160018114613e6a575f8315613e535750848201515b5f19600385901b1c1916600184901b178455613e04565b5f84815260208120601f198516915b82811015613e995787850151825560209485019460019092019101613e79565b5084821015613eb657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f61339f6020830184613936565b5f60208284031215613ee7575f5ffd5b5051919050565b6001600160a01b03929092168252602082015260400190565b5f60208284031215613f17575f5ffd5b8151613f2281613ae5565b9392505050565b602081525f825160a06020840152613f4460c0840182613936565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b5f60018201613f9157613f91613cf6565b5060010190565b6001600160a01b03841681526060602082018190525f90613fbb90830185613936565b9050826040830152949350505050565b80820281158282048414176133a2576133a2613cf6565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f19160101939250505056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122048e6d29d867d91ae3337767cf2ea8bb8940fd6be516bdf6ba42bfa258570b9d464736f6c634300081c0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212209abbe3a07962d24d419633890a6e9edf28bfd5d6063da60628a8112714ae16f364736f6c634300081c0033