0x60806040526001805461ffff60a01b19169055600060025562278d006005553480156200002b57600080fd5b5060405162001e8438038062001e848339810160408190526200004e916200017f565b81818181816200005e816200008f565b50600380546001600160a01b0319166001600160a01b039290921691909117905550504260075550620001b7915050565b600154600160a01b900460ff1615620000ee5760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015260640160405180910390fd5b620000f9816200010f565b506001805460ff60a01b1916600160a01b179055565b600080546001600160a01b0383166001600160a01b0319918216811783556001805490921690915560405190917f038720101b9ced74445432ced46c7e5e4c80202669153dd67d226c66a0aa477b91a250565b80516001600160a01b03811681146200017a57600080fd5b919050565b600080604083850312156200019357600080fd5b6200019e8362000162565b9150620001ae6020840162000162565b90509250929050565b611cbd80620001c76000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063a9059cbb11610125578063c4d8b962116100ad578063f26600271161007c578063f2660027146104ae578063f2fde38b146104c1578063f7260d3e146104d4578063fc9c8d39146104ef578063ffa1ad741461035c5761021c565b8063c4d8b96214610478578063d58c3fc314610480578063e30c397814610493578063ebbc4965146104a65761021c565b8063beb92f55116100f4578063beb92f5514610411578063c0c53b8b14610424578063c1fe3e4814610437578063c42069ec14610452578063c4d66de8146104655761021c565b8063a9059cbb146103cf578063ab231511146103e2578063b695e2ef146103eb578063bb24fe8a146103fe5761021c565b80636c0f79b6116101a85780638da5cb5b116101775780638da5cb5b14610364578063987e204e146103775780639d5228e81461038a578063a3f4df7e146103aa578063a53f6df1146103c65761021c565b80636c0f79b61461032c578063715018a6146103415780637c4c833b14610349578063890eba681461035c5761021c565b806350daa5ff116101ef57806350daa5ff146102af57806351f91066146102cb5780635c975abb146102d45780635dab2420146102f8578063619aa767146103235761021c565b806308dbebf61461025657806316c38b3c1461027457806329f6d57c14610289578063485cc9551461029c575b604080518082018252600381526245343960e81b6020820152905162461bcd60e51b815261024d9190600401611430565b60405180910390fd5b61025e610502565b60405161026b9190611430565b60405180910390f35b610287610282366004611443565b61058c565b005b61028761029736600461147c565b61061c565b6102876102aa366004611497565b6106f5565b6102bd662386f26fc1000081565b60405190815260200161026b565b6102bd60025481565b6001546102e890600160a81b900460ff1681565b604051901515815260200161026b565b60045461030b906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b6102bd60055481565b610334610749565b60405161026b91906114ca565b6102876107b6565b610287610357366004611542565b610809565b6102bd600181565b60005461030b906001600160a01b031681565b6102876103853660046115a6565b61086a565b61039d6103983660046115bf565b61090f565b60405161026b9190611647565b6102bd7129aa22aa2424b73a32b932b9ba2a30b5b2b960711b81565b6102bd60065481565b6102876103dd3660046116b3565b6109cb565b6102bd60075481565b6102876103f93660046115a6565b610ade565b69436f6d6d6f6e5479706560b01b6102bd565b61028761041f36600461147c565b610b58565b6102876104323660046116dd565b610c30565b61030b73ae7ab96520de3a18e5e111b5eaab095312d7fe8481565b61028761046036600461147c565b610c86565b61028761047336600461147c565b610d17565b6102bd610d86565b61028761048e366004611720565b610dc4565b60015461030b906001600160a01b031681565b610287610e23565b61039d6104bc366004611720565b610e4f565b6102876104cf36600461147c565b610f07565b61030b73e746ccea2a8854c8cdeb3ae05141b98622146a7481565b60035461030b906001600160a01b031681565b6060306001600160a01b031663a3f4df7e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105669190611755565b60405160200161057891815260200190565b604051602081830303815290604052905090565b60005460408051808201909152600381526245333560e81b6020820152906001600160a01b031633146105d25760405162461bcd60e51b815260040161024d9190611430565b506001805460ff60a81b1916600160a81b831515908102919091179091556040517f40db37ff5c0bdc2c427fbb2078c8f24afea940abac0e3c23bb4ea3bf2da2b21290600090a250565b60005460408051808201909152600381526245333560e81b6020820152906001600160a01b031633146106625760405162461bcd60e51b815260040161024d9190611430565b506001600160a01b0381166106ab5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081858d8dbdd5b9d608a1b604482015260640161024d565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f195359283029fbdb9a24519b1ec07caf1677655529bf99dc1634c1e8b288118090600090a250565b6106fe82610d17565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fac431eb831269b53b41991f6cbfbfc93f4baa395996a8170abac93962b5a358e90600090a25050565b6040805160018082528183019092526060916020808301908036833701905050905073ae7ab96520de3a18e5e111b5eaab095312d7fe848160008151811061079357610793611784565b60200260200101906001600160a01b031690816001600160a01b03168152505090565b60005460408051808201909152600381526245333560e81b6020820152906001600160a01b031633146107fc5760405162461bcd60e51b815260040161024d9190611430565b506108076000610f9d565b565b60038054604080518082019091529182526245323760e81b60208301526001600160a01b0316331461084e5760405162461bcd60e51b815260040161024d9190611430565b50600154600160a81b900460ff166108665761086682825b5050565b60005460408051808201909152600381526245333560e81b6020820152906001600160a01b031633146108b05760405162461bcd60e51b815260040161024d9190611430565b5060065460006108c7662386f26fc10000846117b0565b90506108da662386f26fc10000826117d2565b600681905560405183907fc9212c4b772b9e2f31aa5173690a87430c0ae8026b64f765578174e495c4937690600090a3505050565b6109346040805160608101909152806000815260200160608152602001606081525090565b60038054604080518082019091529182526245323760e81b60208301526001600160a01b031633146109795760405162461bcd60e51b815260040161024d9190611430565b50600154600160a81b900460ff16156109b65760008152604080518082019091526003815262229a1b60e91b6020808301919091528201526109c4565b6109c1848484610ff0565b90505b9392505050565b73ae7ab96520de3a18e5e111b5eaab095312d7fe846109e981611020565b333014610a205760405162461bcd60e51b815260206004820152600560248201526473656c662160d81b604482015260640161024d565b6000610a2a610d86565b905080831115610a7c5760405162461bcd60e51b815260206004820152601760248201527f4578656365656420696e74657265737420616d6f756e74000000000000000000604482015260640161024d565b6001600160a01b03841673e746ccea2a8854c8cdeb3ae05141b98622146a7414610ad45760405162461bcd60e51b815260206004820152600960248201526872656365697665722160b81b604482015260640161024d565b5050426007555050565b60005460408051808201909152600381526245333560e81b6020820152906001600160a01b03163314610b245760405162461bcd60e51b815260040161024d9190611430565b50600281905560405181907fef711e3eb06966d227e22eb4fa0302550dcd7257cf69b537cf4d37af53ea9cda90600090a250565b60005460408051808201909152600381526245333560e81b6020820152906001600160a01b03163314610b9e5760405162461bcd60e51b815260040161024d9190611430565b506001600160a01b038116610be65760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015260640161024d565b600380546001600160a01b0319166001600160a01b0383169081179091556040517fac431eb831269b53b41991f6cbfbfc93f4baa395996a8170abac93962b5a358e90600090a250565b610c3a83836106f5565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f195359283029fbdb9a24519b1ec07caf1677655529bf99dc1634c1e8b288118090600090a2505050565b60005460408051808201909152600381526245333560e81b6020820152906001600160a01b03163314610ccc5760405162461bcd60e51b815260040161024d9190611430565b50600180546001600160a01b0319166001600160a01b0383169081179091556040517f68f49b346b94582a8b5f9d10e3fe3365318fe8f191ff8dce7c59c6cad06b02f590600090a250565b600154600160a01b900460ff1615610d675760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161024d565b610d7081610f9d565b506001805460ff60a01b1916600160a01b179055565b60075460009042908290610d9a90836117e9565b9050600060055482610dac91906117b0565b905060065481610dbc91906117d2565b935050505090565b60038054604080518082019091529182526245323760e81b60208301526001600160a01b03163314610e095760405162461bcd60e51b815260040161024d9190611430565b50600154600160a81b900460ff16610e2057610e20815b50565b6001546001600160a01b03163314610e3a57600080fd5b600154610807906001600160a01b0316610f9d565b610e746040805160608101909152806000815260200160608152602001606081525090565b60038054604080518082019091529182526245323760e81b60208301526001600160a01b03163314610eb95760405162461bcd60e51b815260040161024d9190611430565b50600154600160a81b900460ff1615610ef65760008152604080518082019091526003815262229a1b60e91b602080830191909152820152919050565b610eff8261107f565b90505b919050565b60005460408051808201909152600381526245333560e81b6020820152906001600160a01b03163314610f4d5760405162461bcd60e51b815260040161024d9190611430565b506001600160a01b038116610f985760405162461bcd60e51b81526020600482015260116024820152704e6577204f776e6572206973207a65726f60781b604482015260640161024d565b610e20815b600080546001600160a01b0383166001600160a01b0319918216811783556001805490921690915560405190917f038720101b9ced74445432ced46c7e5e4c80202669153dd67d226c66a0aa477b91a250565b6110156040805160608101909152806000815260200160608152602001606081525090565b600181529392505050565b61102861114e565b606001516001600160a01b0316816001600160a01b031614610e205760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a590818dbdb9d1c9858dd60821b604482015260640161024d565b6110a46040805160608101909152806000815260200160608152602001606081525090565b6110ad82611163565b6110db576000815260408051808201909152600381526245353560e81b602080830191909152820152919050565b600080306110e8856111ea565b6040516110f591906117fc565b6000604051808303816000865af19150503d8060008114611132576040519150601f19603f3d011682016040523d82523d6000602084013e611137565b606091505b50915091506111468282611280565b949350505050565b611156611380565b61115e61132c565b905090565b600080611176608084016060850161147c565b90506000611182610749565b905060005b81518110156111df578181815181106111a2576111a2611784565b60200260200101516001600160a01b0316836001600160a01b0316036111cd57506001949350505050565b806111d781611818565b915050611187565b506000949350505050565b60606000826040516020016111ff91906118a7565b60408051601f198184030181529190529050600061122060a0850185611997565b604051611234925060200190815260200190565b60408051601f19818403018152919052905061125360a0850185611997565b838360405160200161126894939291906119de565b60405160208183030381529060405292505050919050565b6112a56040805160608101909152806000815260200160608152602001606081525090565b82156112f057815160408051808201909152600381526245333960e81b602082015290156112e65760405162461bcd60e51b815260040161024d9190611430565b5060018152611326565b6044825110156113065760208101829052611326565b600482019150818060200190518101906113209190611a9c565b60208201525b92915050565b611334611380565b36600080826113446020826117e9565b61135092859290611b0f565b81019061135d91906115a6565b905061136c3682816000611b0f565b8101906113799190611b8a565b9250505090565b60405180610100016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160006001600160a01b03168152602001600081526020016060815260200160608152602001606081525090565b60005b838110156113fb5781810151838201526020016113e3565b50506000910152565b6000815180845261141c8160208601602086016113e0565b601f01601f19169290920160200192915050565b6020815260006109c46020830184611404565b60006020828403121561145557600080fd5b813580151581146109c457600080fd5b80356001600160a01b0381168114610f0257600080fd5b60006020828403121561148e57600080fd5b6109c482611465565b600080604083850312156114aa57600080fd5b6114b383611465565b91506114c160208401611465565b90509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561150b5783516001600160a01b0316835292840192918401916001016114e6565b50909695505050505050565b6000610100828403121561152a57600080fd5b50919050565b60006060828403121561152a57600080fd5b6000806040838503121561155557600080fd5b823567ffffffffffffffff8082111561156d57600080fd5b61157986838701611517565b9350602085013591508082111561158f57600080fd5b5061159c85828601611530565b9150509250929050565b6000602082840312156115b857600080fd5b5035919050565b6000806000606084860312156115d457600080fd5b833567ffffffffffffffff808211156115ec57600080fd5b6115f887838801611517565b9450602086013591508082111561160e57600080fd5b61161a87838801611530565b9350604086013591508082111561163057600080fd5b5061163d86828701611530565b9150509250925092565b60208152600082516002811061166d57634e487b7160e01b600052602160045260246000fd5b8060208401525060208301516060604084015261168d6080840182611404565b90506040840151601f198483030160608501526116aa8282611404565b95945050505050565b600080604083850312156116c657600080fd5b6116cf83611465565b946020939093013593505050565b6000806000606084860312156116f257600080fd5b6116fb84611465565b925061170960208501611465565b915061171760408501611465565b90509250925092565b60006020828403121561173257600080fd5b813567ffffffffffffffff81111561174957600080fd5b61114684828501611517565b60006020828403121561176757600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826117cd57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176113265761132661179a565b818103818111156113265761132661179a565b6000825161180e8184602087016113e0565b9190910192915050565b60006001820161182a5761182a61179a565b5060010190565b6000808335601e1984360301811261184857600080fd5b830160208101925035905067ffffffffffffffff81111561186857600080fd5b80360382131561187757600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526118c8602082016118bb84611465565b6001600160a01b03169052565b60006118d660208401611465565b6001600160a01b038116604084015250604083013560608301526118fc60608401611465565b6001600160a01b038116608084015250608083013560a083015261192360a0840184611831565b6101008060c086015261193b6101208601838561187e565b925061194a60c0870187611831565b9250601f19808786030160e088015261196485858461187e565b945061197360e0890189611831565b945091508087860301838801525061198c84848361187e565b979650505050505050565b6000808335601e198436030181126119ae57600080fd5b83018035915067ffffffffffffffff8211156119c957600080fd5b60200191503681900382131561187757600080fd5b8385823760008482016000815284516119fb8183602089016113e0565b8451910190611a0e8183602088016113e0565b019695505050505050565b604051610100810167ffffffffffffffff81118282101715611a3d57611a3d61176e565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a6c57611a6c61176e565b604052919050565b600067ffffffffffffffff821115611a8e57611a8e61176e565b50601f01601f191660200190565b600060208284031215611aae57600080fd5b815167ffffffffffffffff811115611ac557600080fd5b8201601f81018413611ad657600080fd5b8051611ae9611ae482611a74565b611a43565b818152856020838501011115611afe57600080fd5b6116aa8260208301602086016113e0565b60008085851115611b1f57600080fd5b83861115611b2c57600080fd5b5050820193919092039150565b600082601f830112611b4a57600080fd5b8135611b58611ae482611a74565b818152846020838601011115611b6d57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611b9c57600080fd5b813567ffffffffffffffff80821115611bb457600080fd5b908301906101008286031215611bc957600080fd5b611bd1611a19565b611bda83611465565b8152611be860208401611465565b602082015260408301356040820152611c0360608401611465565b60608201526080830135608082015260a083013582811115611c2457600080fd5b611c3087828601611b39565b60a08301525060c083013582811115611c4857600080fd5b611c5487828601611b39565b60c08301525060e083013582811115611c6c57600080fd5b611c7887828601611b39565b60e0830152509594505050505056fea264697066735822122073258b9f369f737490d61665091038e686530dcbd7c23409c5adabd2810756ff64736f6c63430008130033000000000000000000000000fb614929199c92bd536d5850aea0d4d199a1f4e2000000000000000000000000cf8c429e3284e63fe8cdcf22646e187a93a473c2