60806040523480156200001157600080fd5b50600080546001600160a01b031916339081178255604051909182917f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca908290a350620000616001600a620001ee565b62000070906298968062000206565b33600081815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000b36001600a620001ee565b620000c2906298968062000206565b60405190815260200160405180910390a362000228565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000130578160001904821115620001145762000114620000d9565b808516156200012257918102915b93841c9390800290620000f4565b509250929050565b6000826200014957506001620001e8565b816200015857506000620001e8565b81600181146200017157600281146200017c576200019c565b6001915050620001e8565b60ff841115620001905762000190620000d9565b50506001821b620001e8565b5060208310610133831016604e8410600b8410161715620001c1575081810a620001e8565b620001cd8383620000ef565b8060001904821115620001e457620001e4620000d9565b0290505b92915050565b6000620001ff60ff84168362000138565b9392505050565b6000816000190483118215151615620002235762000223620000d9565b500290565b61120e80620002386000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638e32c003116100b8578063c345cf231161007c578063c345cf23146102bc578063cadc24b5146102c4578063d8fb9361146102ed578063dd62ed3e14610300578063e03504af14610224578063e156b1b61461033957600080fd5b80638e32c0031461027b57806395d89b4114610147578063a713fd531461028e578063a9059cbb14610296578063adacad8c146102a957600080fd5b806328226aa71161010a57806328226aa7146101d9578063313ce567146101fe578063416c3c9d146102135780635c01b60c1461022457806370a0823114610248578063715018a61461027157600080fd5b806306fdde0314610147578063095ea7b31461017a57806318160ddd1461019d5780631ae1ffbc146101b357806323b872dd146101c6575b600080fd5b6040805180820190915260058152640ae82ac82b60db1b60208201525b6040516101719190610bc1565b60405180910390f35b61018d610188366004610c2b565b61034c565b6040519015158152602001610171565b6101a56103b4565b604051908152602001610171565b61018d6101c1366004610d8d565b6103d4565b61018d6101d4366004610e37565b6105eb565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610171565b60015b60405160ff9091168152602001610171565b6004546001600160a01b03166101e6565b610164604051806040016040528060058152602001640ae82ac82b60db1b81525081565b6101a5610256366004610e73565b6001600160a01b031660009081526002602052604090205490565b6102796107ab565b005b610279610289366004610e73565b610825565b610201600181565b61018d6102a4366004610c2b565b610871565b6102796102b7366004610e95565b6109b3565b6101a5610a46565b6101a56102d2366004610e73565b6001600160a01b031660009081526003602052604090205490565b6102796102fb366004610f10565b610a62565b6101a561030e366004610f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018d610347366004610e37565b610b8c565b3360008181526001602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b60006103c26001600a611082565b6103cf9062989680611091565b905090565b6000805b85518110156105de578581815181106103f3576103f36110b0565b60200260200101516001600160a01b0316876001600160a01b03166000805160206111b983398151915287848151811061042f5761042f6110b0565b602002602001015160405161044691815260200190565b60405180910390a3858181518110610460576104606110b0565b60200260200101516001600160a01b0316737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228784815181106104c2576104c26110b0565b60200260200101516000808987815181106104df576104df6110b0565b6020908102919091018101516040805195865291850193909352830152606082015260800160405180910390a3826001600160a01b031663e156b1b687838151811061052d5761052d6110b0565b602002602001015189878581518110610548576105486110b0565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156105a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cb91906110c6565b50806105d6816110e8565b9150506103d8565b5060019695505050505050565b6001600160a01b03831660009081526001602090815260408083203384529091528120548211156106635760405162461bcd60e51b815260206004820152601960248201527f416c6c6f77616e6365206c696d6974207375727061737365640000000000000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526003602052604090205480156106d1578083146106d15760405162461bcd60e51b815260206004820181905260248201527f436f6d70756c736f7279207472616e736665722073756d206d69736d61746368604482015260640161065a565b6001600160a01b038516600090815260026020526040812080548592906106f9908490611101565b90915550506001600160a01b03841660009081526002602052604081208054859290610726908490611114565b90915550506001600160a01b03851660009081526001602090815260408083203384529091528120805485929061075e908490611101565b92505081905550836001600160a01b0316856001600160a01b03166000805160206111b98339815191528560405161079891815260200190565b60405180910390a3506001949350505050565b6000546001600160a01b031633146107d55760405162461bcd60e51b815260040161065a90611127565b6000805460405161dead926001600160a01b03909216917f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca91a3600080546001600160a01b03191661dead179055565b6000546001600160a01b0316331461084f5760405162461bcd60e51b815260040161065a90611127565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600260205260408120548211156108c75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161065a565b60006108d2336102d2565b90508015610929578083146109295760405162461bcd60e51b815260206004820181905260248201527f436f6d70756c736f7279207472616e736665722073756d206d69736d61746368604482015260640161065a565b3360009081526002602052604081208054859290610948908490611101565b90915550506001600160a01b03841660009081526002602052604081208054859290610975908490611114565b90915550506040518381526001600160a01b0385169033906000805160206111b9833981519152906020015b60405180910390a35060019392505050565b6004546001600160a01b031633146109dd5760405162461bcd60e51b815260040161065a90611172565b60005b82811015610a405781600360008686858181106109ff576109ff6110b0565b9050602002016020810190610a149190610e73565b6001600160a01b0316815260208101919091526040016000205580610a38816110e8565b9150506109e0565b50505050565b610a526001600a611082565b610a5f9062989680611091565b81565b6004546001600160a01b03163314610a8c5760405162461bcd60e51b815260040161065a90611172565b60005b8251811015610b87576000838281518110610aac57610aac6110b0565b6020026020010151905060006001600160a01b0316816001600160a01b031603610b185760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420616464726573732073706563696669656400000000000000604482015260640161065a565b6001600160a01b038116600081815260026020908152604091829020805490879055825181815291820187905292917fef88868e7a1bd2fac29f7b777f32f9d8ea2ac5e10c2d23234d4715ab11c84890910160405180910390a250508080610b7f906110e8565b915050610a8f565b505050565b6000826001600160a01b0316846001600160a01b03166000805160206111b9833981519152846040516109a191815260200190565b600060208083528351808285015260005b81811015610bee57858101830151858201604001528201610bd2565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c2657600080fd5b919050565b60008060408385031215610c3e57600080fd5b610c4783610c0f565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610c9457610c94610c55565b604052919050565b600067ffffffffffffffff821115610cb657610cb6610c55565b5060051b60200190565b600082601f830112610cd157600080fd5b81356020610ce6610ce183610c9c565b610c6b565b82815260059290921b84018101918181019086841115610d0557600080fd5b8286015b84811015610d2757610d1a81610c0f565b8352918301918301610d09565b509695505050505050565b600082601f830112610d4357600080fd5b81356020610d53610ce183610c9c565b82815260059290921b84018101918181019086841115610d7257600080fd5b8286015b84811015610d275780358352918301918301610d76565b600080600080600060a08688031215610da557600080fd5b610dae86610c0f565b9450602086013567ffffffffffffffff80821115610dcb57600080fd5b610dd789838a01610cc0565b95506040880135915080821115610ded57600080fd5b610df989838a01610d32565b94506060880135915080821115610e0f57600080fd5b50610e1c88828901610d32565b925050610e2b60808701610c0f565b90509295509295909350565b600080600060608486031215610e4c57600080fd5b610e5584610c0f565b9250610e6360208501610c0f565b9150604084013590509250925092565b600060208284031215610e8557600080fd5b610e8e82610c0f565b9392505050565b600080600060408486031215610eaa57600080fd5b833567ffffffffffffffff80821115610ec257600080fd5b818601915086601f830112610ed657600080fd5b813581811115610ee557600080fd5b8760208260051b8501011115610efa57600080fd5b6020928301989097509590910135949350505050565b60008060408385031215610f2357600080fd5b823567ffffffffffffffff811115610f3a57600080fd5b610f4685828601610cc0565b95602094909401359450505050565b60008060408385031215610f6857600080fd5b610f7183610c0f565b9150610f7f60208401610c0f565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610fd9578160001904821115610fbf57610fbf610f88565b80851615610fcc57918102915b93841c9390800290610fa3565b509250929050565b600082610ff0575060016103ae565b81610ffd575060006103ae565b8160018114611013576002811461101d57611039565b60019150506103ae565b60ff84111561102e5761102e610f88565b50506001821b6103ae565b5060208310610133831016604e8410600b841016171561105c575081810a6103ae565b6110668383610f9e565b806000190482111561107a5761107a610f88565b029392505050565b6000610e8e60ff841683610fe1565b60008160001904831182151516156110ab576110ab610f88565b500290565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156110d857600080fd5b81518015158114610e8e57600080fd5b6000600182016110fa576110fa610f88565b5060010190565b818103818111156103ae576103ae610f88565b808201808211156103ae576103ae610f88565b6020808252602b908201527f556e617574686f72697a65643a2053696e676c65204f776e657220616363657360408201526a39903932b8bab4b932b21760a91b606082015260800190565b60208082526026908201527f556e617574686f72697a65643a2043726561746f7220616363657373207265716040820152653ab4b932b21760d11b60608201526080019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220090e307e3c3a6e14806d1e0cbf7d0c988c1cfe914158c26cdb8a18405d1afdd464736f6c63430008100033