0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6116d6806100ed6000396000f3fe6080604052600436106101345760003560e01c80636cd74aa0116100ab57806395ccea671161006f57806395ccea6714610385578063acefdfc9146103a5578063d9aa0473146103c5578063f2fde38b146103e5578063f43b361314610405578063fccc28131461042557600080fd5b80636cd74aa0146102fd5780636ecf2b221461031d578063715018a61461033d5780638456cb59146103525780638da5cb5b1461036757600080fd5b8063260cfd38116100fd578063260cfd381461021f578063289b3ca414610257578063354dfa65146102775780633f4ba83a146102b05780635c975abb146102c557806362940912146102dd57600080fd5b80625c3c1a1461013957806303b951411461015b578063078d52991461016e5780630db51c13146101bf57806318c7f5c1146101ff575b600080fd5b34801561014557600080fd5b506101596101543660046111ca565b61043b565b005b610159610169366004611235565b6104bf565b34801561017a57600080fd5b506101ac61018936600461130c565b609960209081526000938452604080852082529284528284209052825290205481565b6040519081526020015b60405180910390f35b3480156101cb57600080fd5b506101ef6101da3660046111ca565b60986020526000908152604090205460ff1681565b60405190151581526020016101b6565b34801561020b57600080fd5b5061015961021a366004611357565b6105fd565b34801561022b57600080fd5b5060975461023f906001600160a01b031681565b6040516001600160a01b0390911681526020016101b6565b34801561026357600080fd5b506101596102723660046111ca565b610647565b34801561028357600080fd5b5060c85461029b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101b6565b3480156102bc57600080fd5b506101596106c3565b3480156102d157600080fd5b5060655460ff166101ef565b3480156102e957600080fd5b506101596102f8366004611357565b6106d5565b34801561030957600080fd5b50610159610318366004611422565b61071b565b34801561032957600080fd5b5061015961033836600461143d565b61079e565b34801561034957600080fd5b5061015961091a565b34801561035e57600080fd5b5061015961092c565b34801561037357600080fd5b506033546001600160a01b031661023f565b34801561039157600080fd5b506101596103a0366004611484565b61093c565b3480156103b157600080fd5b506101596103c03660046111ca565b610a26565b3480156103d157600080fd5b506101596103e03660046114b0565b610aa2565b3480156103f157600080fd5b506101596104003660046111ca565b610abe565b34801561041157600080fd5b5060c85461023f906001600160a01b031681565b34801561043157600080fd5b5061023f61dead81565b610443610b34565b6001600160a01b03811661046a5760405163d92e233d60e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383169081179091556040519081527f9765b40bb351990b935126744a89b849586acd9fe4d10fc4a115c75d724c95d1906020015b60405180910390a150565b6104c7610b8e565b6097546001600160a01b03166104f057604051630754034160e11b815260040160405180910390fd5b6104fa8584610bd4565b3360009081526099602090815260408083206001600160a01b038681168552908352818420908916845290915281208054859190839061053b908490611519565b91829055506040516001600160a01b03808a166024830152808916604483015260648201839052336084830152861660a48201529092506105aa915060c40160408051601f198184030181529190526020810180516001600160e01b031663f3f35e8360e01b17905283610c2f565b60408051858152602081018390526001600160a01b03808616929089169133917f85d71865502710c81ce50ae117b8f33fcf97d4aa649576a4c53af701ca54d2e4910160405180910390a4505050505050565b610605610b34565b60005b81518110156106435761063382828151811061062657610626611532565b6020026020010151610a26565b61063c81611548565b9050610608565b5050565b61064f610b34565b6001600160a01b03811660009081526098602052604090205460ff16156106c0576001600160a01b038116600081815260986020908152604091829020805460ff1916905590519182527e6a93ef3eac3b90e0190c4c5cbdfd43b5c3d7847360f45949fbf384777b5f5591016104b4565b50565b6106cb610b34565b6106d3610cc8565b565b6106dd610b34565b60005b81518110156106435761070b8282815181106106fe576106fe611532565b6020026020010151610647565b61071481611548565b90506106e0565b610723610b34565b8063ffffffff1660000361074a57604051637c946ed760e01b815260040160405180910390fd5b60c8805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527f624f5899223c1be98d33b93681b46ed69e14d11812ba6ef229fc05277f05c048906020016104b4565b600054610100900460ff16158080156107be5750600054600160ff909116105b806107d85750303b1580156107d8575060005460ff166001145b6108405760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610863576000805461ff0019166101001790555b6001600160a01b03831661088a5760405163d92e233d60e01b815260040160405180910390fd5b610892610d1a565b61089a610d49565b60c8805463ffffffff8416600160a01b026001600160c01b03199091166001600160a01b038616171790556108ce84610abe565b8015610914576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610922610b34565b6106d36000610d78565b610934610b34565b6106d3610dca565b610944610b34565b81600182016109b8576040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015610991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b59190611561565b91505b6109de6109cd6033546001600160a01b031690565b6001600160a01b0383169084610e07565b826001600160a01b03167f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f2083604051610a1991815260200190565b60405180910390a2505050565b610a2e610b34565b6001600160a01b03811660009081526098602052604090205460ff166106c0576001600160a01b038116600081815260986020908152604091829020805460ff1916600117905590519182527f2e01cb430a0ca7a9caaece06ce13c2dfbc4a125d732ee242f9d11cbccbd3401091016104b4565b61091484848484604051806020016040528060008152506104bf565b610ac6610b34565b6001600160a01b038116610b2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610837565b6106c081610d78565b6033546001600160a01b031633146106d35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610837565b60655460ff16156106d35760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610837565b6001600160a01b03821660009081526098602052604090205460ff16610c1857604051634659393b60e01b81526001600160a01b0383166004820152602401610837565b6106436001600160a01b0383163361dead84610e6f565b3415610c4e5760405163dc25d79d60e01b815260040160405180910390fd5b60c854609754604051633dbb202b60e01b81526001600160a01b0380841693633dbb202b93610c92939216918791600160a01b900463ffffffff16906004016115ca565b600060405180830381600087803b158015610cac57600080fd5b505af1158015610cc0573d6000803e3d6000fd5b505050505050565b610cd0610ea7565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16610d415760405162461bcd60e51b815260040161083790611604565b6106d3610ef0565b600054610100900460ff16610d705760405162461bcd60e51b815260040161083790611604565b6106d3610f20565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610dd2610b8e565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cfd3390565b6040516001600160a01b038316602482015260448101829052610e6a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610f53565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526109149085906323b872dd60e01b90608401610e33565b60655460ff166106d35760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610837565b600054610100900460ff16610f175760405162461bcd60e51b815260040161083790611604565b6106d333610d78565b600054610100900460ff16610f475760405162461bcd60e51b815260040161083790611604565b6065805460ff19169055565b6000610fa8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110259092919063ffffffff16565b805190915015610e6a5780806020019051810190610fc6919061164f565b610e6a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610837565b6060611034848460008561103c565b949350505050565b60608247101561109d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610837565b600080866001600160a01b031685876040516110b99190611671565b60006040518083038185875af1925050503d80600081146110f6576040519150601f19603f3d011682016040523d82523d6000602084013e6110fb565b606091505b509150915061110c87838387611117565b979650505050505050565b6060831561118657825160000361117f576001600160a01b0385163b61117f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610837565b5081611034565b611034838381511561119b5781518083602001fd5b8060405162461bcd60e51b8152600401610837919061168d565b6001600160a01b03811681146106c057600080fd5b6000602082840312156111dc57600080fd5b81356111e7816111b5565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561122d5761122d6111ee565b604052919050565b600080600080600060a0868803121561124d57600080fd5b8535611258816111b5565b9450602086810135611269816111b5565b9450604087013593506060870135611280816111b5565b9250608087013567ffffffffffffffff8082111561129d57600080fd5b818901915089601f8301126112b157600080fd5b8135818111156112c3576112c36111ee565b6112d5601f8201601f19168501611204565b91508082528a848285010111156112eb57600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008060006060848603121561132157600080fd5b833561132c816111b5565b9250602084013561133c816111b5565b9150604084013561134c816111b5565b809150509250925092565b6000602080838503121561136a57600080fd5b823567ffffffffffffffff8082111561138257600080fd5b818501915085601f83011261139657600080fd5b8135818111156113a8576113a86111ee565b8060051b91506113b9848301611204565b81815291830184019184810190888411156113d357600080fd5b938501935b838510156113fd57843592506113ed836111b5565b82825293850193908501906113d8565b98975050505050505050565b803563ffffffff8116811461141d57600080fd5b919050565b60006020828403121561143457600080fd5b6111e782611409565b60008060006060848603121561145257600080fd5b833561145d816111b5565b9250602084013561146d816111b5565b915061147b60408501611409565b90509250925092565b6000806040838503121561149757600080fd5b82356114a2816111b5565b946020939093013593505050565b600080600080608085870312156114c657600080fd5b84356114d1816111b5565b935060208501356114e1816111b5565b92506040850135915060608501356114f8816111b5565b939692955090935050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561152c5761152c611503565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006001820161155a5761155a611503565b5060010190565b60006020828403121561157357600080fd5b5051919050565b60005b8381101561159557818101518382015260200161157d565b50506000910152565b600081518084526115b681602086016020860161157a565b601f01601f19169290920160200192915050565b6001600160a01b03841681526060602082018190526000906115ee9083018561159e565b905063ffffffff83166040830152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561166157600080fd5b815180151581146111e757600080fd5b6000825161168381846020870161157a565b9190910192915050565b6020815260006111e7602083018461159e56fea2646970667358221220c20d3e4ce96f874119a5a0034da59a48497a84fe4097042cd7750d516ecf921f64736f6c63430008120033