0x60e060405234801561001057600080fd5b5060405161404d38038061404d83398101604081905261002f916100e9565b6001600160a01b03808316608052811660a052604051610051602082016100c0565b601f1982820381018352601f9091011660408181526001600160a01b03858116602084015284169082015260600160408051601f198184030181529082905261009d929160200161014c565b60408051601f19818403018152919052805160209091012060c052506101699050565b611e0e8061223f83390190565b80516001600160a01b03811681146100e457600080fd5b919050565b600080604083850312156100fc57600080fd5b610105836100cd565b9150610113602084016100cd565b90509250929050565b6000815160005b8181101561013d5760208185018101518683015201610123565b50600093019283525090919050565b600061016161015b838661011c565b8461011c565b949350505050565b60805160a05160c0516120a161019e60003960006101a40152600061012601526000818160a4015261010501526120a16000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632b85ba381461003b57806367432cc514610077575b600080fd5b61004e610049366004610244565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610244565b61019c565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610102576040517f1d25260a0000000000000000000000000000000000000000000000000000000081526000600482015260240160405180910390fd5b817f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405161015190610237565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f5905080158015610195573d6000803e3d6000fd5b5092915050565b6000610231827f0000000000000000000000000000000000000000000000000000000000000000604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091523060601b6bffffffffffffffffffffffff191660218301526035820194909452605580820193909352815180820390930183526075019052805191012090565b92915050565b611e0e8061025e83390190565b60006020828403121561025657600080fd5b503591905056fe60c06040523480156200001157600080fd5b5060405162001e0e38038062001e0e833981016040819052620000349162000069565b6001600160a01b039182166080521660a052620000a1565b80516001600160a01b03811681146200006457600080fd5b919050565b600080604083850312156200007d57600080fd5b62000088836200004c565b915062000098602084016200004c565b90509250929050565b60805160a051611d47620000c760003960006107ca015260006110760152611d476000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80636c0360eb116100ee578063a22cb46511610097578063c87b56dd11610071578063c87b56dd14610355578063dc20c6fa14610368578063e8a3d48514610388578063e985e9c51461039057600080fd5b8063a22cb4651461031c578063b88d4fde1461032f578063c776d5831461034257600080fd5b806380f55605116100c857806380f55605146102f95780638da5cb5b1461030c57806395d89b411461031457600080fd5b80636c0360eb146102bd5780636ee5741a146102c557806370a08231146102d857600080fd5b806323b872dd116101505780634af2c2af1161012a5780634af2c2af146102845780635699b904146102975780636352211e146102aa57600080fd5b806323b872dd1461024b57806339a0c6f91461025e57806342842e0e1461027157600080fd5b8063081812fc11610181578063081812fc146101fa578063095ea7b3146102255780630f632fd31461023857600080fd5b806301ffc9a7146101a85780630513fc8b146101d057806306fdde03146101e5575b600080fd5b6101bb6101b6366004611474565b6103cc565b60405190151581526020015b60405180910390f35b6101e36101de366004611491565b610469565b005b6101ed6104fa565b6040516101c791906114fa565b61020d610208366004611491565b610588565b6040516001600160a01b0390911681526020016101c7565b6101e3610233366004611522565b6105e0565b6101e3610246366004611522565b610690565b6101e361025936600461154e565b61072c565b6101e361026c366004611664565b610761565b6101e361027f36600461154e565b6107a4565b6101e3610292366004611699565b6107bf565b6101e36102a5366004611664565b610994565b61020d6102b8366004611491565b6109d3565b6101ed610a0b565b6101e36102d3366004611734565b610a18565b6102eb6102e63660046117ac565b610ab9565b6040519081526020016101c7565b60045461020d906001600160a01b031681565b61020d610b1a565b6101ed610b29565b6101e361032a3660046117de565b610b36565b6101e361033d366004611813565b610bce565b6102eb610350366004611893565b610c0a565b6101ed610363366004611491565b610c15565b61037b610376366004611491565b610cab565b6040516101c791906118e5565b6101ed610cd1565b6101bb61039e36600461190c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061042f57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061046357507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6004546001600160a01b0316331461049c57604051630e92930560e11b8152600060048201526024015b60405180910390fd5b60006104a7826109d3565b90506104b581600084610cde565b6104be81610d47565b60405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000805461050790611945565b80601f016020809104026020016040519081016040528092919081815260200182805461053390611945565b80156105805780601f1061055557610100808354040283529160200191610580565b820191906000526020600020905b81548152906001019060200180831161056357829003601f168201915b505050505081565b6000818161059582610d78565b6001600160a01b0316036105bf57604051630e92930560e11b8152600e6004820152602401610493565b6000838152600660205260409020546001600160a01b031691505b50919050565b60006105eb826109d3565b9050806001600160a01b0316836001600160a01b03160361062257604051630e92930560e11b815260006004820152602401610493565b336001600160a01b0382161480159061065f57506001600160a01b038116600090815260076020908152604080832033845290915290205460ff16155b1561068057604051630e92930560e11b815260006004820152602401610493565b61068b818484610cde565b505050565b6004546001600160a01b031633146106be57604051630e92930560e11b815260006004820152602401610493565b6001600160a01b0382166106e757604051630e92930560e11b8152600481810152602401610493565b6106f082610dfc565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6107363382610e5a565b61075657604051630e92930560e11b815260006004820152602401610493565b61068b838383610ed9565b3361076a611035565b6001600160a01b03161461079457604051630e92930560e11b815260006004820152602401610493565b60026107a082826119c7565b5050565b61068b83838360405180602001604052806000815250610bce565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080b57604051630e92930560e11b815260006004820152602401610493565b60008267ffffffffffffffff8111156108265761082661158f565b60405190808252806020026020018201604052801561087157816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108445790505b50905060005b83811015610910576108a18686868481811061089557610895611a87565b90506020020135610e5a565b6108c157604051630e92930560e11b815260006004820152602401610493565b6108e28585838181106108d6576108d6611a87565b90506020020135610cab565b8282815181106108f4576108f4611a87565b60200260200101819052508061090990611ab3565b9050610877565b50600480546040517fdfdc93880000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163dfdc93889161095b918691869101611acc565b600060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050505050505050565b3361099d611035565b6001600160a01b0316146109c757604051630e92930560e11b815260006004820152602401610493565b60036107a082826119c7565b6000806109df83610d78565b90506001600160a01b03811661046357604051630e92930560e11b815260006004820152602401610493565b6002805461050790611945565b6004546001600160a01b031615610a4557604051630e92930560e11b815260006004820152602401610493565b6001600160a01b038116610a6e57604051630e92930560e11b8152600481810152602401610493565b6000610a7a84826119c7565b506001610a8783826119c7565b506004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b60006001600160a01b038216610ae457604051630e92930560e11b8152600481810152602401610493565b6001600160a01b03821660009081526005602052604090205480610b085780610b13565b610b13600182611b46565b9392505050565b6000610b24611035565b905090565b6001805461050790611945565b6001600160a01b0382163303610b6257604051630e92930560e11b815260006004820152602401610493565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610bd83383610e5a565b610bf857604051630e92930560e11b815260006004820152602401610493565b610c04848484846110e3565b50505050565b60006104638261111a565b6060816000610c2382610d78565b6001600160a01b031603610c4d57604051630e92930560e11b8152600e6004820152602401610493565b600060028054610c5c90611945565b905011610c785760405180602001604052806000815250610b13565b6002610c8384611133565b604051602001610c94929190611b59565b604051602081830303815290604052915050919050565b604080516060810182526000808252602082018190529181019190915261046382611268565b6003805461050790611945565b600081815260066020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6001600160a01b0381166000908152600560205260408120805460019290610d70908490611b46565b909155505050565b6004546000906001600160a01b03166399b38102610d9584610cab565b6040518263ffffffff1660e01b8152600401610db191906118e5565b606060405180830381865afa158015610dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df29190611be0565b6040015192915050565b6001600160a01b038116600090815260056020526040902054610e20576002610e23565b60015b60ff1660056000836001600160a01b03166001600160a01b031681526020019081526020016000206000828254610d709190611c4a565b600080610e66836109d3565b9050806001600160a01b0316846001600160a01b03161480610ead57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610ed15750836001600160a01b0316610ec684610588565b6001600160a01b0316145b949350505050565b826001600160a01b0316610eec826109d3565b6001600160a01b031614610f1657604051630e92930560e11b815260006004820152602401610493565b6001600160a01b038216610f3f57604051630e92930560e11b8152600481810152602401610493565b610f4b83600083610cde565b610f5483610d47565b610f5d82610dfc565b6004546001600160a01b0316633827b48b610f7783610cab565b604080516001600160e01b031960e085901b168152825115156004820152602083015161ffff16602482015291015160448201526001600160a01b0385166064820152608401600060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b5050505080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600480546040517fafdd9edc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216928101929092526000917f00000000000000000000000000000000000000000000000000000000000000009091169063afdd9edc90602401602060405180830381865afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b249190611c5d565b6110ee848484610ed9565b6110fa848484846112ff565b610c0457604051630e92930560e11b815260076004820152602401610493565b6000610463826000015183602001518460400151611404565b60608160000361117657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156111a0578061118a81611ab3565b91506111999050600a83611c90565b915061117a565b60008167ffffffffffffffff8111156111bb576111bb61158f565b6040519080825280601f01601f1916602001820160405280156111e5576020820181803683370190505b5090505b8415610ed1576111fa600183611b46565b9150611207600a86611ca4565b611212906030611c4a565b60f81b81838151811061122757611227611a87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611261600a86611c90565b94506111e9565b604080516060810182526000808252602082018190529181019190915260f882901c60e883901c8360018311156112b557604051630e92930560e11b8152600e6004820152602401610493565b6040805160608101825260ff94909416600114845261ffff9290921660208401527cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169082015292915050565b60006001600160a01b0384163b156113f957604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611343903390899088908890600401611cb8565b6020604051808303816000875af192505050801561137e575060408051601f3d908101601f1916820190925261137b91810190611cf4565b60015b6113df573d8080156113ac576040519150601f19603f3d011682016040523d82523d6000602084013e6113b1565b606091505b5080516000036113d757604051630e92930560e11b815260076004820152602401610493565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610ed1565b506001949350505050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561144757604051630e92930560e11b8152600e6004820152602401610493565b8360f81b8360e81b01820190509392505050565b6001600160e01b03198116811461147157600080fd5b50565b60006020828403121561148657600080fd5b8135610b138161145b565b6000602082840312156114a357600080fd5b5035919050565b60005b838110156114c55781810151838201526020016114ad565b50506000910152565b600081518084526114e68160208601602086016114aa565b601f01601f19169290920160200192915050565b602081526000610b1360208301846114ce565b6001600160a01b038116811461147157600080fd5b6000806040838503121561153557600080fd5b82356115408161150d565b946020939093013593505050565b60008060006060848603121561156357600080fd5b833561156e8161150d565b9250602084013561157e8161150d565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156115c8576115c861158f565b60405290565b600067ffffffffffffffff808411156115e9576115e961158f565b604051601f8501601f19908116603f011681019082821181831017156116115761161161158f565b8160405280935085815286868601111561162a57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261165557600080fd5b610b13838335602085016115ce565b60006020828403121561167657600080fd5b813567ffffffffffffffff81111561168d57600080fd5b610ed184828501611644565b600080600080606085870312156116af57600080fd5b84356116ba8161150d565b9350602085013567ffffffffffffffff808211156116d757600080fd5b818701915087601f8301126116eb57600080fd5b8135818111156116fa57600080fd5b8860208260051b850101111561170f57600080fd5b60208301955080945050505060408501356117298161150d565b939692955090935050565b60008060006060848603121561174957600080fd5b833567ffffffffffffffff8082111561176157600080fd5b61176d87838801611644565b9450602086013591508082111561178357600080fd5b5061179086828701611644565b92505060408401356117a18161150d565b809150509250925092565b6000602082840312156117be57600080fd5b8135610b138161150d565b803580151581146117d957600080fd5b919050565b600080604083850312156117f157600080fd5b82356117fc8161150d565b915061180a602084016117c9565b90509250929050565b6000806000806080858703121561182957600080fd5b84356118348161150d565b935060208501356118448161150d565b925060408501359150606085013567ffffffffffffffff81111561186757600080fd5b8501601f8101871361187857600080fd5b611887878235602084016115ce565b91505092959194509250565b6000606082840312156118a557600080fd5b6118ad6115a5565b6118b6836117c9565b8152602083013561ffff811681146118cd57600080fd5b60208201526040928301359281019290925250919050565b81511515815260208083015161ffff16908201526040808301519082015260608101610463565b6000806040838503121561191f57600080fd5b823561192a8161150d565b9150602083013561193a8161150d565b809150509250929050565b600181811c9082168061195957607f821691505b6020821081036105da57634e487b7160e01b600052602260045260246000fd5b601f82111561068b57600081815260208120601f850160051c810160208610156119a05750805b601f850160051c820191505b818110156119bf578281556001016119ac565b505050505050565b815167ffffffffffffffff8111156119e1576119e161158f565b6119f5816119ef8454611945565b84611979565b602080601f831160018114611a2a5760008415611a125750858301515b600019600386901b1c1916600185901b1785556119bf565b600085815260208120601f198616915b82811015611a5957888601518255948401946001909101908401611a3a565b5085821015611a775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ac557611ac5611a9d565b5060010190565b6000604082016001600160a01b0385168352602060408185015281855180845260609350838601915082870160005b82811015611b3857611b2884835180511515825260208082015161ffff1690830152604090810151910152565b9285019290840190600101611afb565b509198975050505050505050565b8181038181111561046357610463611a9d565b6000808454611b6781611945565b60018281168015611b7f5760018114611b9457611bc3565b60ff1984168752821515830287019450611bc3565b8860005260208060002060005b85811015611bba5781548a820152908401908201611ba1565b50505082870194505b505050508351611bd78183602088016114aa565b01949350505050565b600060608284031215611bf257600080fd5b611bfa6115a5565b825167ffffffffffffffff81168114611c1257600080fd5b8152602083015163ffffffff81168114611c2b57600080fd5b60208201526040830151611c3e8161150d565b60408201529392505050565b8082018082111561046357610463611a9d565b600060208284031215611c6f57600080fd5b8151610b138161150d565b634e487b7160e01b600052601260045260246000fd5b600082611c9f57611c9f611c7a565b500490565b600082611cb357611cb3611c7a565b500690565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611cea60808301846114ce565b9695505050505050565b600060208284031215611d0657600080fd5b8151610b138161145b56fea2646970667358221220b8153855cf9d817273d50928a90f3e180b4113364c99c6440c97d825c016662164736f6c63430008110033a2646970667358221220af93a5c594a4370896b3d4c940e0e525d20b1c8e9faa2bc87254b747c5f4598664736f6c6343000811003360c06040523480156200001157600080fd5b5060405162001e0e38038062001e0e833981016040819052620000349162000069565b6001600160a01b039182166080521660a052620000a1565b80516001600160a01b03811681146200006457600080fd5b919050565b600080604083850312156200007d57600080fd5b62000088836200004c565b915062000098602084016200004c565b90509250929050565b60805160a051611d47620000c760003960006107ca015260006110760152611d476000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80636c0360eb116100ee578063a22cb46511610097578063c87b56dd11610071578063c87b56dd14610355578063dc20c6fa14610368578063e8a3d48514610388578063e985e9c51461039057600080fd5b8063a22cb4651461031c578063b88d4fde1461032f578063c776d5831461034257600080fd5b806380f55605116100c857806380f55605146102f95780638da5cb5b1461030c57806395d89b411461031457600080fd5b80636c0360eb146102bd5780636ee5741a146102c557806370a08231146102d857600080fd5b806323b872dd116101505780634af2c2af1161012a5780634af2c2af146102845780635699b904146102975780636352211e146102aa57600080fd5b806323b872dd1461024b57806339a0c6f91461025e57806342842e0e1461027157600080fd5b8063081812fc11610181578063081812fc146101fa578063095ea7b3146102255780630f632fd31461023857600080fd5b806301ffc9a7146101a85780630513fc8b146101d057806306fdde03146101e5575b600080fd5b6101bb6101b6366004611474565b6103cc565b60405190151581526020015b60405180910390f35b6101e36101de366004611491565b610469565b005b6101ed6104fa565b6040516101c791906114fa565b61020d610208366004611491565b610588565b6040516001600160a01b0390911681526020016101c7565b6101e3610233366004611522565b6105e0565b6101e3610246366004611522565b610690565b6101e361025936600461154e565b61072c565b6101e361026c366004611664565b610761565b6101e361027f36600461154e565b6107a4565b6101e3610292366004611699565b6107bf565b6101e36102a5366004611664565b610994565b61020d6102b8366004611491565b6109d3565b6101ed610a0b565b6101e36102d3366004611734565b610a18565b6102eb6102e63660046117ac565b610ab9565b6040519081526020016101c7565b60045461020d906001600160a01b031681565b61020d610b1a565b6101ed610b29565b6101e361032a3660046117de565b610b36565b6101e361033d366004611813565b610bce565b6102eb610350366004611893565b610c0a565b6101ed610363366004611491565b610c15565b61037b610376366004611491565b610cab565b6040516101c791906118e5565b6101ed610cd1565b6101bb61039e36600461190c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061042f57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061046357507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6004546001600160a01b0316331461049c57604051630e92930560e11b8152600060048201526024015b60405180910390fd5b60006104a7826109d3565b90506104b581600084610cde565b6104be81610d47565b60405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000805461050790611945565b80601f016020809104026020016040519081016040528092919081815260200182805461053390611945565b80156105805780601f1061055557610100808354040283529160200191610580565b820191906000526020600020905b81548152906001019060200180831161056357829003601f168201915b505050505081565b6000818161059582610d78565b6001600160a01b0316036105bf57604051630e92930560e11b8152600e6004820152602401610493565b6000838152600660205260409020546001600160a01b031691505b50919050565b60006105eb826109d3565b9050806001600160a01b0316836001600160a01b03160361062257604051630e92930560e11b815260006004820152602401610493565b336001600160a01b0382161480159061065f57506001600160a01b038116600090815260076020908152604080832033845290915290205460ff16155b1561068057604051630e92930560e11b815260006004820152602401610493565b61068b818484610cde565b505050565b6004546001600160a01b031633146106be57604051630e92930560e11b815260006004820152602401610493565b6001600160a01b0382166106e757604051630e92930560e11b8152600481810152602401610493565b6106f082610dfc565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6107363382610e5a565b61075657604051630e92930560e11b815260006004820152602401610493565b61068b838383610ed9565b3361076a611035565b6001600160a01b03161461079457604051630e92930560e11b815260006004820152602401610493565b60026107a082826119c7565b5050565b61068b83838360405180602001604052806000815250610bce565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461080b57604051630e92930560e11b815260006004820152602401610493565b60008267ffffffffffffffff8111156108265761082661158f565b60405190808252806020026020018201604052801561087157816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108445790505b50905060005b83811015610910576108a18686868481811061089557610895611a87565b90506020020135610e5a565b6108c157604051630e92930560e11b815260006004820152602401610493565b6108e28585838181106108d6576108d6611a87565b90506020020135610cab565b8282815181106108f4576108f4611a87565b60200260200101819052508061090990611ab3565b9050610877565b50600480546040517fdfdc93880000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163dfdc93889161095b918691869101611acc565b600060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050505050505050565b3361099d611035565b6001600160a01b0316146109c757604051630e92930560e11b815260006004820152602401610493565b60036107a082826119c7565b6000806109df83610d78565b90506001600160a01b03811661046357604051630e92930560e11b815260006004820152602401610493565b6002805461050790611945565b6004546001600160a01b031615610a4557604051630e92930560e11b815260006004820152602401610493565b6001600160a01b038116610a6e57604051630e92930560e11b8152600481810152602401610493565b6000610a7a84826119c7565b506001610a8783826119c7565b506004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790555050565b60006001600160a01b038216610ae457604051630e92930560e11b8152600481810152602401610493565b6001600160a01b03821660009081526005602052604090205480610b085780610b13565b610b13600182611b46565b9392505050565b6000610b24611035565b905090565b6001805461050790611945565b6001600160a01b0382163303610b6257604051630e92930560e11b815260006004820152602401610493565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610bd83383610e5a565b610bf857604051630e92930560e11b815260006004820152602401610493565b610c04848484846110e3565b50505050565b60006104638261111a565b6060816000610c2382610d78565b6001600160a01b031603610c4d57604051630e92930560e11b8152600e6004820152602401610493565b600060028054610c5c90611945565b905011610c785760405180602001604052806000815250610b13565b6002610c8384611133565b604051602001610c94929190611b59565b604051602081830303815290604052915050919050565b604080516060810182526000808252602082018190529181019190915261046382611268565b6003805461050790611945565b600081815260066020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6001600160a01b0381166000908152600560205260408120805460019290610d70908490611b46565b909155505050565b6004546000906001600160a01b03166399b38102610d9584610cab565b6040518263ffffffff1660e01b8152600401610db191906118e5565b606060405180830381865afa158015610dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df29190611be0565b6040015192915050565b6001600160a01b038116600090815260056020526040902054610e20576002610e23565b60015b60ff1660056000836001600160a01b03166001600160a01b031681526020019081526020016000206000828254610d709190611c4a565b600080610e66836109d3565b9050806001600160a01b0316846001600160a01b03161480610ead57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610ed15750836001600160a01b0316610ec684610588565b6001600160a01b0316145b949350505050565b826001600160a01b0316610eec826109d3565b6001600160a01b031614610f1657604051630e92930560e11b815260006004820152602401610493565b6001600160a01b038216610f3f57604051630e92930560e11b8152600481810152602401610493565b610f4b83600083610cde565b610f5483610d47565b610f5d82610dfc565b6004546001600160a01b0316633827b48b610f7783610cab565b604080516001600160e01b031960e085901b168152825115156004820152602083015161ffff16602482015291015160448201526001600160a01b0385166064820152608401600060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b5050505080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600480546040517fafdd9edc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216928101929092526000917f00000000000000000000000000000000000000000000000000000000000000009091169063afdd9edc90602401602060405180830381865afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b249190611c5d565b6110ee848484610ed9565b6110fa848484846112ff565b610c0457604051630e92930560e11b815260076004820152602401610493565b6000610463826000015183602001518460400151611404565b60608160000361117657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156111a0578061118a81611ab3565b91506111999050600a83611c90565b915061117a565b60008167ffffffffffffffff8111156111bb576111bb61158f565b6040519080825280601f01601f1916602001820160405280156111e5576020820181803683370190505b5090505b8415610ed1576111fa600183611b46565b9150611207600a86611ca4565b611212906030611c4a565b60f81b81838151811061122757611227611a87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611261600a86611c90565b94506111e9565b604080516060810182526000808252602082018190529181019190915260f882901c60e883901c8360018311156112b557604051630e92930560e11b8152600e6004820152602401610493565b6040805160608101825260ff94909416600114845261ffff9290921660208401527cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169082015292915050565b60006001600160a01b0384163b156113f957604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611343903390899088908890600401611cb8565b6020604051808303816000875af192505050801561137e575060408051601f3d908101601f1916820190925261137b91810190611cf4565b60015b6113df573d8080156113ac576040519150601f19603f3d011682016040523d82523d6000602084013e6113b1565b606091505b5080516000036113d757604051630e92930560e11b815260076004820152602401610493565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610ed1565b506001949350505050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561144757604051630e92930560e11b8152600e6004820152602401610493565b8360f81b8360e81b01820190509392505050565b6001600160e01b03198116811461147157600080fd5b50565b60006020828403121561148657600080fd5b8135610b138161145b565b6000602082840312156114a357600080fd5b5035919050565b60005b838110156114c55781810151838201526020016114ad565b50506000910152565b600081518084526114e68160208601602086016114aa565b601f01601f19169290920160200192915050565b602081526000610b1360208301846114ce565b6001600160a01b038116811461147157600080fd5b6000806040838503121561153557600080fd5b82356115408161150d565b946020939093013593505050565b60008060006060848603121561156357600080fd5b833561156e8161150d565b9250602084013561157e8161150d565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156115c8576115c861158f565b60405290565b600067ffffffffffffffff808411156115e9576115e961158f565b604051601f8501601f19908116603f011681019082821181831017156116115761161161158f565b8160405280935085815286868601111561162a57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261165557600080fd5b610b13838335602085016115ce565b60006020828403121561167657600080fd5b813567ffffffffffffffff81111561168d57600080fd5b610ed184828501611644565b600080600080606085870312156116af57600080fd5b84356116ba8161150d565b9350602085013567ffffffffffffffff808211156116d757600080fd5b818701915087601f8301126116eb57600080fd5b8135818111156116fa57600080fd5b8860208260051b850101111561170f57600080fd5b60208301955080945050505060408501356117298161150d565b939692955090935050565b60008060006060848603121561174957600080fd5b833567ffffffffffffffff8082111561176157600080fd5b61176d87838801611644565b9450602086013591508082111561178357600080fd5b5061179086828701611644565b92505060408401356117a18161150d565b809150509250925092565b6000602082840312156117be57600080fd5b8135610b138161150d565b803580151581146117d957600080fd5b919050565b600080604083850312156117f157600080fd5b82356117fc8161150d565b915061180a602084016117c9565b90509250929050565b6000806000806080858703121561182957600080fd5b84356118348161150d565b935060208501356118448161150d565b925060408501359150606085013567ffffffffffffffff81111561186757600080fd5b8501601f8101871361187857600080fd5b611887878235602084016115ce565b91505092959194509250565b6000606082840312156118a557600080fd5b6118ad6115a5565b6118b6836117c9565b8152602083013561ffff811681146118cd57600080fd5b60208201526040928301359281019290925250919050565b81511515815260208083015161ffff16908201526040808301519082015260608101610463565b6000806040838503121561191f57600080fd5b823561192a8161150d565b9150602083013561193a8161150d565b809150509250929050565b600181811c9082168061195957607f821691505b6020821081036105da57634e487b7160e01b600052602260045260246000fd5b601f82111561068b57600081815260208120601f850160051c810160208610156119a05750805b601f850160051c820191505b818110156119bf578281556001016119ac565b505050505050565b815167ffffffffffffffff8111156119e1576119e161158f565b6119f5816119ef8454611945565b84611979565b602080601f831160018114611a2a5760008415611a125750858301515b600019600386901b1c1916600185901b1785556119bf565b600085815260208120601f198616915b82811015611a5957888601518255948401946001909101908401611a3a565b5085821015611a775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611ac557611ac5611a9d565b5060010190565b6000604082016001600160a01b0385168352602060408185015281855180845260609350838601915082870160005b82811015611b3857611b2884835180511515825260208082015161ffff1690830152604090810151910152565b9285019290840190600101611afb565b509198975050505050505050565b8181038181111561046357610463611a9d565b6000808454611b6781611945565b60018281168015611b7f5760018114611b9457611bc3565b60ff1984168752821515830287019450611bc3565b8860005260208060002060005b85811015611bba5781548a820152908401908201611ba1565b50505082870194505b505050508351611bd78183602088016114aa565b01949350505050565b600060608284031215611bf257600080fd5b611bfa6115a5565b825167ffffffffffffffff81168114611c1257600080fd5b8152602083015163ffffffff81168114611c2b57600080fd5b60208201526040830151611c3e8161150d565b60408201529392505050565b8082018082111561046357610463611a9d565b600060208284031215611c6f57600080fd5b8151610b138161150d565b634e487b7160e01b600052601260045260246000fd5b600082611c9f57611c9f611c7a565b500490565b600082611cb357611cb3611c7a565b500690565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611cea60808301846114ce565b9695505050505050565b600060208284031215611d0657600080fd5b8151610b138161145b56fea2646970667358221220b8153855cf9d817273d50928a90f3e180b4113364c99c6440c97d825c016662164736f6c6343000811003300000000000000000000000024ac0938c010fb520f1068e96d78e0458855111d000000000000000000000000fc03c0bad134a0c0151db9358ad697c5daf611ee