0x60a06040523060805234801561001457600080fd5b5061001f6001610024565b610076565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b608051611f576100bb6000396000818161035a015281816103a30152818161043d0152818161047d015281816104f9015281816109b401526109f40152611f576000f3fe6080604052600436106101085760003560e01c806389eabf021161009557806391aa880c1161006457806391aa880c14610297578063a797533d146102b7578063b566c0da146102f0578063e78cea9214610310578063f2fde38b1461033057600080fd5b806389eabf02146102245780638da5cb5b146102445780638f283970146102625780638fd3ab801461028257600080fd5b80634f1ef286116100dc5780634f1ef286146101a157806352d1902d146101b45780635c975abb146101d7578063715018a6146101fa5780638456cb591461020f57600080fd5b80620cc9e61461010d57806320dcfbe91461014a5780633659cfe61461016a5780633f4ba83a1461018c575b600080fd5b34801561011957600080fd5b5060fc5461012d906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015657600080fd5b5060fe5461012d906001600160a01b031681565b34801561017657600080fd5b5061018a610185366004611a36565b610350565b005b34801561019857600080fd5b5061018a610421565b61018a6101af366004611a69565b610433565b3480156101c057600080fd5b506101c96104ec565b604051908152602001610141565b3480156101e357600080fd5b5060655460ff166040519015158152602001610141565b34801561020657600080fd5b5061018a61059f565b34801561021b57600080fd5b5061018a6105b1565b34801561023057600080fd5b5061018a61023f366004611b2d565b6105c1565b34801561025057600080fd5b506033546001600160a01b031661012d565b34801561026e57600080fd5b5061018a61027d366004611a36565b610747565b34801561028e57600080fd5b5061018a6107dd565b3480156102a357600080fd5b5060fd5461012d906001600160a01b031681565b3480156102c357600080fd5b5060fb546102db90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610141565b3480156102fc57600080fd5b5061018a61030b366004611bb6565b6109aa565b34801561031c57600080fd5b5060fb5461012d906001600160a01b031681565b34801561033c57600080fd5b5061018a61034b366004611a36565b610dba565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103a15760405162461bcd60e51b815260040161039890611c55565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103d3610e30565b6001600160a01b0316146103f95760405162461bcd60e51b815260040161039890611ca1565b61040281610e51565b6040805160008082526020820190925261041e91839190610e89565b50565b610429610ff9565b610431611053565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361047b5760405162461bcd60e51b815260040161039890611c55565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104ad610e30565b6001600160a01b0316146104d35760405162461bcd60e51b815260040161039890611ca1565b6104dc82610e51565b6104e882826001610e89565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461058c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610398565b50600080516020611edb83398151915290565b6105a7610ff9565b61043160006110a5565b6105b9610ff9565b6104316110f7565b6105c9611134565b6001600160a01b0384166106125760405162461bcd60e51b815260206004820152601060248201526f24a72b20a624a22fa922a1a2a4ab22a960811b6044820152606401610398565b600083116106535760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d05353d5539560921b6044820152606401610398565b80156106715760fe54610671906001600160a01b031684848461117a565b60fe54610689906001600160a01b031633308661133c565b60fd546040516340c10f1960e01b81526001600160a01b03868116600483015260248201869052909116906340c10f19906044016020604051808303816000875af11580156106dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107009190611ced565b506040518381526001600160a01b0385169033907fccfaeb3043a96a967dc036ab72e078a9632af809671bc2a1ac30a8043645f89e9060200160405180910390a350505050565b61074f61139c565b6001600160a01b0316336001600160a01b03161461077f5760405162461bcd60e51b815260040161039890611d0f565b61078761139c565b6001600160a01b0316816001600160a01b0316036107d45760405162461bcd60e51b815260206004820152600a60248201526929a0a6a2afa0a226a4a760b11b6044820152606401610398565b61041e816113c4565b6107e5611134565b60fe546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561082e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108529190611d32565b9050801561041e5760fe5460fb5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af11580156108af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d39190611ced565b5060fb5460fc5460fe5460405163cd58657960e01b8152600160a01b840463ffffffff1660048201526001600160a01b0392831660248201526044810185905290821660648201526001608482015260c060a4820152600060c482015291169063cd5865799060e401600060405180830381600087803b15801561095657600080fd5b505af115801561096a573d6000803e3d6000fd5b505050507fd5837b673ffaac69230366d3f7eb7cb2ba2b9fd8f2d4e9d0f5e92d3756b1d5468160405161099f91815260200190565b60405180910390a150565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109f25760405162461bcd60e51b815260040161039890611c55565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a24610e30565b6001600160a01b031614610a4a5760405162461bcd60e51b815260040161039890611ca1565b610a5261139c565b6001600160a01b0316336001600160a01b031614610a825760405162461bcd60e51b815260040161039890611d0f565b600054610100900460ff1615808015610aa25750600054600160ff909116105b80610abc5750303b158015610abc575060005460ff166001145b610b1f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610398565b6000805460ff191660011790558015610b42576000805461ff0019166101001790555b6001600160a01b038616610b895760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f42524944474560901b6044820152606401610398565b6001600160a01b038416610bd25760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f4c31455343524f5760801b6044820152606401610398565b6001600160a01b038316610c195760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f555344435f4560901b6044820152606401610398565b6001600160a01b038216610c615760405162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f42575f5544534360881b6044820152606401610398565b6001600160a01b038816610ca75760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b6044820152606401610398565b6001600160a01b038716610ced5760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa0a226a4a760991b6044820152606401610398565b610cf5611418565b610cfe886110a5565b610d07876113c4565b60fb80546001600160a01b038881166001600160c01b031990921691909117600160a01b63ffffffff8916021790915560fc80546001600160a01b03199081168784161790915560fd8054821686841617905560fe80549091169184169190911790558015610db0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b610dc2610ff9565b6001600160a01b038116610e275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610398565b61041e816110a5565b6000600080516020611edb8339815191525b546001600160a01b0316919050565b610e5961139c565b6001600160a01b0316336001600160a01b03161461041e5760405162461bcd60e51b815260040161039890611d0f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ec157610ebc83611457565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f1b575060408051601f3d908101601f19168201909252610f1891810190611d32565b60015b610f7e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610398565b600080516020611edb8339815191528114610fed5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610398565b50610ebc8383836114f6565b6033546001600160a01b031633146104315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610398565b61105b61151b565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6110ff611134565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110883390565b60655460ff16156104315760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610398565b63d505accf60e01b611190600460008486611d4b565b61119991611d75565b6001600160e01b031916146111c157604051637eb349ff60e11b815260040160405180910390fd5b60008080808080806111d6886004818c611d4b565b8101906111e39190611da5565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146112235760405163912ecce760e01b815260040160405180910390fd5b6001600160a01b038616301461124c5760405163750643af60e01b815260040160405180910390fd5b89851461126c576040516303fffc4b60e01b815260040160405180910390fd5b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918d16916112ea9190611e40565b6000604051808303816000865af19150503d8060008114611327576040519150601f19603f3d011682016040523d82523d6000602084013e61132c565b606091505b5050505050505050505050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611396908590611564565b50505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103610e42565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6113ed61139c565b604080516001600160a01b03928316815291841660208301520160405180910390a161041e81611639565b600054610100900460ff1661143f5760405162461bcd60e51b815260040161039890611e5c565b6114476116c5565b61144f6116f4565b610431611723565b6001600160a01b0381163b6114c45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610398565b80600080516020611edb8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6114ff8361174a565b60008251118061150c5750805b15610ebc57611396838361178a565b60655460ff166104315760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610398565b60006115b9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117b69092919063ffffffff16565b90508051600014806115da5750808060200190518101906115da9190611ced565b610ebc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610398565b6001600160a01b03811661169e5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610398565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036114d5565b600054610100900460ff166116ec5760405162461bcd60e51b815260040161039890611e5c565b6104316117cd565b600054610100900460ff1661171b5760405162461bcd60e51b815260040161039890611e5c565b6104316117fd565b600054610100900460ff166104315760405162461bcd60e51b815260040161039890611e5c565b61175381611457565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606117af8383604051806060016040528060278152602001611efb60279139611830565b9392505050565b60606117c584846000856118a8565b949350505050565b600054610100900460ff166117f45760405162461bcd60e51b815260040161039890611e5c565b610431336110a5565b600054610100900460ff166118245760405162461bcd60e51b815260040161039890611e5c565b6065805460ff19169055565b6060600080856001600160a01b03168560405161184d9190611e40565b600060405180830381855af49150503d8060008114611888576040519150601f19603f3d011682016040523d82523d6000602084013e61188d565b606091505b509150915061189e86838387611983565b9695505050505050565b6060824710156119095760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610398565b600080866001600160a01b031685876040516119259190611e40565b60006040518083038185875af1925050503d8060008114611962576040519150601f19603f3d011682016040523d82523d6000602084013e611967565b606091505b509150915061197887838387611983565b979650505050505050565b606083156119f25782516000036119eb576001600160a01b0385163b6119eb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610398565b50816117c5565b6117c58383815115611a075781518083602001fd5b8060405162461bcd60e51b81526004016103989190611ea7565b6001600160a01b038116811461041e57600080fd5b600060208284031215611a4857600080fd5b81356117af81611a21565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611a7c57600080fd5b8235611a8781611a21565b9150602083013567ffffffffffffffff80821115611aa457600080fd5b818501915085601f830112611ab857600080fd5b813581811115611aca57611aca611a53565b604051601f8201601f19908116603f01168101908382118183101715611af257611af2611a53565b81604052828152886020848701011115611b0b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060608587031215611b4357600080fd5b8435611b4e81611a21565b935060208501359250604085013567ffffffffffffffff80821115611b7257600080fd5b818701915087601f830112611b8657600080fd5b813581811115611b9557600080fd5b886020828501011115611ba757600080fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611bd157600080fd5b8735611bdc81611a21565b96506020880135611bec81611a21565b95506040880135611bfc81611a21565b9450606088013563ffffffff81168114611c1557600080fd5b93506080880135611c2581611a21565b925060a0880135611c3581611a21565b915060c0880135611c4581611a21565b8091505092959891949750929550565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611cff57600080fd5b815180151581146117af57600080fd5b6020808252600990820152682727aa2fa0a226a4a760b91b604082015260600190565b600060208284031215611d4457600080fd5b5051919050565b60008085851115611d5b57600080fd5b83861115611d6857600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611d9d5780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a031215611dc057600080fd5b8735611dcb81611a21565b96506020880135611ddb81611a21565b95506040880135945060608801359350608088013560ff81168114611dff57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60005b83811015611e37578181015183820152602001611e1f565b50506000910152565b60008251611e52818460208701611e1c565b9190910192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020815260008251806020840152611ec6816040850160208701611e1c565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220458118ab87a92ccdf55db27cb6081647be3d80d426f5a118d3c0cc556aaa41ab64736f6c63430008110033