0x60a060405234801561001057600080fd5b50604051611aa9380380611aa983398101604081905261002f91610083565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b0319166080526100b1565b600060208284031215610094578081fd5b81516001600160a01b03811681146100aa578182fd5b9392505050565b60805160601c6119bd6100ec600039806104f0528061058552806108d152806109665280610b2f5280610bc65280610c4852506119bd6000f3fe6080604052600436106101095760003560e01c80638da5cb5b11610095578063a88a5c1611610064578063a88a5c16146102b9578063c1ea3868146102db578063d63b3c49146102fb578063e30c397814610329578063f7c618c11461033e57610109565b80638da5cb5b1461024b5780638f10369a1461026057806393f1a40b14610275578063a8594dab146102a457610109565b80634e71e0c8116100dc5780634e71e0c8146101a757806351eb05a6146101bc5780635a894421146101e957806366da58151461020b5780638bf637421461022b57610109565b8063078dfbe71461010e5780631526fe271461013057806348e43af4146101675780634ddf47d414610194575b600080fd5b34801561011a57600080fd5b5061012e6101293660046112b2565b610353565b005b34801561013c57600080fd5b5061015061014b366004611430565b610442565b60405161015e9291906118f4565b60405180910390f35b34801561017357600080fd5b50610187610182366004611460565b610470565b60405161015e9190611917565b61012e6101a2366004611355565b6106e5565b3480156101b357600080fd5b5061012e6107dc565b3480156101c857600080fd5b506101dc6101d7366004611430565b610869565b60405161015e91906118ca565b3480156101f557600080fd5b506101fe610b2d565b60405161015e919061158a565b34801561021757600080fd5b5061012e610226366004611430565b610b51565b34801561023757600080fd5b5061012e61024636600461148f565b610bbb565b34801561025757600080fd5b506101fe610ebe565b34801561026c57600080fd5b50610187610ecd565b34801561028157600080fd5b50610295610290366004611460565b610ed3565b60405161015e93929190611920565b3480156102b057600080fd5b506101fe610eff565b3480156102c557600080fd5b506102ce610f0e565b60405161015e9190611617565b3480156102e757600080fd5b5061012e6102f63660046112fc565b610f53565b34801561030757600080fd5b5061031b6103163660046114e0565b610fdb565b60405161015e9291906115b7565b34801561033557600080fd5b506101fe611086565b34801561034a57600080fd5b506101fe611095565b6000546001600160a01b031633146103865760405162461bcd60e51b815260040161037d9061176e565b60405180910390fd5b8115610421576001600160a01b0383161515806103a05750805b6103bc5760405162461bcd60e51b815260040161037d906116d1565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b03199182161790915560018054909116905561043d565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6003602052600090815260409020546001600160801b03811690600160801b900467ffffffffffffffff1682565b600061047a61129b565b5060008381526003602090815260408083208151808301835290546001600160801b038082168352600160801b90910467ffffffffffffffff168285015287855260048085528386206001600160a01b0389811688529552838620835194516378ed5d1f60e01b815293969095949092169391927f0000000000000000000000000000000000000000000000000000000000000000909216916378ed5d1f91610525918b9101611917565b60206040518083038186803b15801561053d57600080fd5b505afa158015610551573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057591906113c2565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105c0919061158a565b60206040518083038186803b1580156105d857600080fd5b505afa1580156105ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106109190611448565b9050836020015167ffffffffffffffff164211801561062e57508015155b15610699576000610656856020015167ffffffffffffffff16426110a490919063ffffffff16565b9050600061066f600554836110cd90919063ffffffff16565b9050610694836106848364e8d4a510006110cd565b8161068b57fe5b86919004611104565b935050505b6106da83600201546106d4856001015464e8d4a510006106c68789600001546110cd90919063ffffffff16565b816106cd57fe5b04906110a4565b90611104565b979650505050505050565b6002546001600160a01b03161561070e5760405162461bcd60e51b815260040161037d90611866565b61071a818301836113de565b600680546001600160a01b03199081166001600160a01b0393841617909155600592909255600080548316938216939093179092556002805490911692821692909217918290551661077e5760405162461bcd60e51b815260040161037d9061189d565b60016007556006546002546000546005546040516001600160a01b0394851694938416937f4df6005d9c1e62d1d95592850d1c3256ee902631dd819a342f1756ab83489439936107d09391169161159e565b60405180910390a35050565b6001546001600160a01b03163381146108075760405162461bcd60e51b815260040161037d906117a3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61087161129b565b506000818152600360209081526040918290208251808401909352546001600160801b0381168352600160801b900467ffffffffffffffff16908201819052421115610b28576040516378ed5d1f60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f90610906908690600401611917565b60206040518083038186803b15801561091e57600080fd5b505afa158015610932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095691906113c2565b6001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016109a1919061158a565b60206040518083038186803b1580156109b957600080fd5b505afa1580156109cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f19190611448565b90508015610a79576000610a1c836020015167ffffffffffffffff16426110a490919063ffffffff16565b90506000610a35600554836110cd90919063ffffffff16565b9050610a6b610a5a84610a4d8464e8d4a510006110cd565b81610a5457fe5b04611127565b85516001600160801b031690611154565b6001600160801b0316845250505b610a8242611183565b67ffffffffffffffff9081166020848101918252600086815260039091526040908190208551815493516fffffffffffffffffffffffffffffffff199094166001600160801b0382161767ffffffffffffffff60801b1916600160801b958516959095029490941790555185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610b1e9290918691611936565b60405180910390a2505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03163314610b7b5760405162461bcd60e51b815260040161037d9061176e565b60058190556040517fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a27890610bb0908390611917565b60405180910390a150565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c035760405162461bcd60e51b815260040161037d90611690565b600754600114610c255760405162461bcd60e51b815260040161037d9061180f565b60026007556006546040516378ed5d1f60e01b81526001600160a01b03918216917f000000000000000000000000000000000000000000000000000000000000000016906378ed5d1f90610c7d908990600401611917565b60206040518083038186803b158015610c9557600080fd5b505afa158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd91906113c2565b6001600160a01b031614610ce057600080fd5b610ce861129b565b610cf186610869565b60008781526004602090815260408083206001600160a01b038a168452909152812080549293509115610e2d57610d5882600201546106d4846001015464e8d4a510006106c688600001516001600160801b031688600001546110cd90919063ffffffff16565b6002546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190610d8e90309060040161158a565b60206040518083038186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde9190611448565b905080821115610e0c57600254610dff906001600160a01b031688836111ad565b8082036002840155610e2b565b600254610e23906001600160a01b031688846111ad565b600060028401555b505b838255825164e8d4a5100090610e4d9086906001600160801b03166110cd565b81610e5457fe5b048260010181905550856001600160a01b031688886001600160a01b03167f2ece88ca2bc08dd018db50e1d25a20bf1241e5fab1c396caa51f01a54bd2f75b85600201548503604051610ea79190611917565b60405180910390a450506001600755505050505050565b6000546001600160a01b031681565b60055481565b600460209081526000928352604080842090915290825290208054600182015460029092015490919083565b6006546001600160a01b031681565b6040805160018082528183019092526060918291906020808301908036833701905050905060055481600081518110610f4357fe5b6020908102919091010152905090565b6000546001600160a01b03163314610f7d5760405162461bcd60e51b815260040161037d9061176e565b6001600160a01b038316610fc7576040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610fc1573d6000803e3d6000fd5b5061043d565b61043d6001600160a01b03841682846111ad565b6040805160018082528183019092526060918291829160208083019080368337505060025482519293506001600160a01b03169183915060009061101b57fe5b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090506110628787610470565b8160008151811061106f57fe5b602090810291909101015290969095509350505050565b6001546001600160a01b031681565b6002546001600160a01b031681565b808203828111156110c75760405162461bcd60e51b815260040161037d9061162a565b92915050565b60008115806110e8575050808202828282816110e557fe5b04145b6110c75760405162461bcd60e51b815260040161037d9061182f565b818101818110156110c75760405162461bcd60e51b815260040161037d90611737565b60006001600160801b038211156111505760405162461bcd60e51b815260040161037d90611700565b5090565b8181016001600160801b0380831690821610156110c75760405162461bcd60e51b815260040161037d90611737565b600067ffffffffffffffff8211156111505760405162461bcd60e51b815260040161037d906117d8565b60006060846001600160a01b031663a9059cbb85856040516024016111d392919061159e565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161120c9190611551565b6000604051808303816000865af19150503d8060008114611249576040519150601f19603f3d011682016040523d82523d6000602084013e61124e565b606091505b50915091508180156112785750805115806112785750808060200190518101906112789190611332565b6112945760405162461bcd60e51b815260040161037d90611659565b5050505050565b604080518082019091526000808252602082015290565b6000806000606084860312156112c6578283fd5b83356112d181611961565b925060208401356112e181611979565b915060408401356112f181611979565b809150509250925092565b600080600060608486031215611310578283fd5b833561131b81611961565b92506020840135915060408401356112f181611961565b600060208284031215611343578081fd5b815161134e81611979565b9392505050565b60008060208385031215611367578182fd5b823567ffffffffffffffff8082111561137e578384fd5b818501915085601f830112611391578384fd5b81358181111561139f578485fd5b8660208285010111156113b0578485fd5b60209290920196919550909350505050565b6000602082840312156113d3578081fd5b815161134e81611961565b600080600080608085870312156113f3578081fd5b84356113fe81611961565b9350602085013561140e81611961565b925060408501359150606085013561142581611961565b939692955090935050565b600060208284031215611441578081fd5b5035919050565b600060208284031215611459578081fd5b5051919050565b60008060408385031215611472578182fd5b82359150602083013561148481611961565b809150509250929050565b600080600080600060a086880312156114a6578081fd5b8535945060208601356114b881611961565b935060408601356114c881611961565b94979396509394606081013594506080013592915050565b6000806000606084860312156114f4578283fd5b83359250602084013561150681611961565b929592945050506040919091013590565b6000815180845260208085019450808401835b838110156115465781518752958201959082019060010161152a565b509495945050505050565b60008251815b818110156115715760208186018101518583015201611557565b8181111561157f5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156115f95781516001600160a01b0316845292840192908401906001016115d4565b5050508381038285015261160d8186611517565b9695505050505050565b60006020825261134e6020830184611517565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e6040820152601760f91b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b6020808252601d908201527f52657761726465723a20616c726561647920696e697469616c697a6564000000604082015260600190565b6020808252601390820152722932bbb0b93232b91d103130b2103a37b5b2b760691b604082015260600190565b81516001600160801b0316815260209182015167ffffffffffffffff169181019190915260400190565b6001600160801b0392909216825267ffffffffffffffff16602082015260400190565b90815260200190565b9283526020830191909152604082015260600190565b67ffffffffffffffff93909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b038116811461197657600080fd5b50565b801515811461197657600080fdfea2646970667358221220d3206efa85586d82b06e6f0ed10578cbacce2febe87b2a3a0976984ae1e3b0b464736f6c634300060c0033000000000000000000000000ef0881ec094552b2e128cf945ef17a6752b4ec5d