60006002556101f4608081905260a081905260c0819052600d805465ffffffffffff19166501f401f401f4179055606460e05260c86101008181526101209190915261014091909152600e80546001600160401b0319166701f400c800c800641790556101a0604052737fd3f619bd145c7fc5aa39bb3eac63fd65a5dffc61016081905273135a6e2f1d001f0c7099c15cc638485ea24bf7d4610180819052601180546001600160a01b03199081169093179055601280549092161790556013805461ff0019169055600a601755601a805461ffff19169055601c8054610100600160a81b03191633909202919091179055466038036200012857600f8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e0017905562000223565b466061036200015f57600f8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d10017905562000223565b46600114806200016f5750466004145b806200017b5750466003145b15620001af57600f8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d0017905562000223565b4661a86a03620001e757600f8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d40017905562000223565b4660fa036200021e57600f8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c290017905562000223565b600080fd5b601c80546001600160a01b036101009182900481166000908152600660209081526040808320805460ff19908116600190811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965495909504909316825260049052208054909216179055614fac80620002b86000396000f3fe6080604052600436106103a65760003560e01c806350a8e016116101e7578063a9059cbb1161010d578063d3f6a157116100a0578063f94aa1b41161006f578063f94aa1b414610b21578063fb78680d14610b68578063fdb78c0e14610b88578063feadde9c14610ba757600080fd5b8063d3f6a15714610a86578063dd62ed3e14610aa6578063eafb5a3c14610aec578063ee5d9c2d14610b0c57600080fd5b8063b3d514fb116100dc578063b3d514fb14610600578063b7df8b36146109e1578063bfc2fc35146109fb578063cf84770614610a1b57600080fd5b8063a9059cbb14610981578063aa22b172146109a1578063ab558e4d146109c1578063b1b08f711461060057600080fd5b8063715018a611610185578063893d20e811610154578063893d20e81461091f5780638a63bd9b146109425780638a8c523c1461095757806395d89b411461096c57600080fd5b8063715018a6146108b5578063717f2d7b146108ca57806378648edf146108ea57806380c581d1146108ff57600080fd5b80635c24b074116101c15780635c24b074146108115780635cce86cd146108315780636ebd00781461086a57806370a082311461087f57600080fd5b806350a8e016146107bc578063590ffdce146107db5780635a6f0918146107fb57600080fd5b80632b112e49116102cc5780633f3cf56c1161026a5780634bbb93eb116102395780634bbb93eb146107235780634e718e48146107435780634fb2e45d146107635780634fbee1931461078357600080fd5b80633f3cf56c146106b3578063452ed4f1146106d357806346ea7ac8146106f35780634ada218b1461070957600080fd5b8063313ce567116102a6578063313ce5671461062c57806332cde6641461065357806333251a0b1461067357806336fddb041461069357600080fd5b80632b112e49146105eb5780632b28fc7a146106005780632e8fa8211461061657600080fd5b8063095ea7b31161034457806323b872dd1161031357806323b872dd1461057557806326003957146105955780632610eaca146105b557806328577751146105d557600080fd5b8063095ea7b3146104f25780630dcbcf1c146105125780630fa604e41461054b57806318160ddd1461056057600080fd5b8063069d955f11610380578063069d955f1461042b57806306fdde03146104815780630758d924146104a357806307dd79e0146104c857600080fd5b806303fd2a45146103b25780630445b667146103e5578063044df7261461040957600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103f157600080fd5b506103fb60145481565b6040519081526020016103dc565b34801561041557600080fd5b506104296104243660046145e8565b610bc7565b005b34801561043757600080fd5b50600d5461045c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103dc565b34801561048d57600080fd5b50610496610ca9565b6040516103dc9190614645565b3480156104af57600080fd5b50600f546103c89061010090046001600160a01b031681565b3480156104d457600080fd5b50600f546104e29060ff1681565b60405190151581526020016103dc565b3480156104fe57600080fd5b506104e261050d36600461468d565b610d3b565b34801561051e57600080fd5b506104e261052d3660046146b9565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055757600080fd5b506103fb610d52565b34801561056c57600080fd5b506103fb610d78565b34801561058157600080fd5b506104e26105903660046146d6565b610d90565b3480156105a157600080fd5b506104296105b0366004614717565b610e08565b3480156105c157600080fd5b506104296105d0366004614828565b610f17565b3480156105e157600080fd5b506103fb60175481565b3480156105f757600080fd5b506103fb6110e2565b34801561060c57600080fd5b506103fb6107d081565b34801561062257600080fd5b506103fb60155481565b34801561063857600080fd5b50610641611149565b60405160ff90911681526020016103dc565b34801561065f57600080fd5b5061042961066e366004614901565b611164565b34801561067f57600080fd5b5061042961068e3660046146b9565b611356565b34801561069f57600080fd5b506104296106ae366004614944565b61142b565b3480156106bf57600080fd5b506104296106ce366004614717565b6114a9565b3480156106df57600080fd5b506010546103c8906001600160a01b031681565b3480156106ff57600080fd5b506103fb6109c481565b34801561071557600080fd5b50601a546104e29060ff1681565b34801561072f57600080fd5b506103fb61073e366004614962565b6115c5565b34801561074f57600080fd5b5061042961075e366004614962565b6115f9565b34801561076f57600080fd5b5061042961077e3660046146b9565b6116a2565b34801561078f57600080fd5b506104e261079e3660046146b9565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107c857600080fd5b50601a546104e290610100900460ff1681565b3480156107e757600080fd5b506104296107f6366004614944565b6118fb565b34801561080757600080fd5b506103fb601b5481565b34801561081d57600080fd5b5061042961082c3660046146b9565b611979565b34801561083d57600080fd5b506104e261084c3660046146b9565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561087657600080fd5b506103fb611a74565b34801561088b57600080fd5b506103fb61089a3660046146b9565b6001600160a01b031660009081526020819052604090205490565b3480156108c157600080fd5b50610429611a95565b3480156108d657600080fd5b506104296108e536600461497b565b611b6e565b3480156108f657600080fd5b50610429612167565b34801561090b57600080fd5b5061042961091a366004614944565b6121c9565b34801561092b57600080fd5b50601c5461010090046001600160a01b03166103c8565b34801561094e57600080fd5b506104e26123df565b34801561096357600080fd5b5061042961245a565b34801561097857600080fd5b506104966126c1565b34801561098d57600080fd5b506104e261099c36600461468d565b6126d0565b3480156109ad57600080fd5b506104296109bc366004614901565b6126e7565b3480156109cd57600080fd5b506104296109dc3660046146b9565b612898565b3480156109ed57600080fd5b506016546104e29060ff1681565b348015610a0757600080fd5b50610429610a163660046145e8565b612a62565b348015610a2757600080fd5b50600e54610a589061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103dc565b348015610a9257600080fd5b50610429610aa13660046149c5565b612b14565b348015610ab257600080fd5b506103fb610ac13660046149c5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610af857600080fd5b50610429610b073660046146b9565b612c19565b348015610b1857600080fd5b5061042961308f565b348015610b2d57600080fd5b50601154601254610b48916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103dc565b348015610b7457600080fd5b50610429610b833660046149f3565b61317d565b348015610b9457600080fd5b506013546104e290610100900460ff1681565b348015610bb357600080fd5b50610429610bc2366004614944565b61343d565b601c5461010090046001600160a01b03163314610c1f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601a546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050505050565b606060098054610cb890614a25565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce490614a25565b8015610d315780601f10610d0657610100808354040283529160200191610d31565b820191906000526020600020905b815481529060010190602001808311610d1457829003601f168201915b5050505050905090565b6000610d483384846134bb565b5060015b92915050565b600b54600090610d669060ff16600a614b8b565b601954610d739190614b9a565b905090565b6000600c54600003610d8957600080fd5b50600c5490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610df5576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610def908490614bd5565b90915550505b610e008484846135c8565b949350505050565b601c5461010090046001600160a01b03163314610e5b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b6064600c54610e6a9190614b9a565b8183600c54610e799190614be8565b610e839190614b9a565b1015610ef75760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c16565b8082600c54610f069190614be8565b610f109190614b9a565b6019555050565b601c5461010090046001600160a01b03163314610f6a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b8051825114610fbb5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c16565b60005b82518161ffff1610156110dd57600b54610fdc9060ff16600a614b8b565b828261ffff1681518110610ff257610ff2614bff565b60200260200101516110049190614be8565b3360009081526020819052604090205410156110625760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c16565b6110ca33848361ffff168151811061107c5761107c614bff565b6020908102919091010151600b546110989060ff16600a614b8b565b858561ffff16815181106110ae576110ae614bff565b60200260200101516110c09190614be8565b6000806001613a59565b50806110d581614c2e565b915050610fbe565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461113c9190614c4f565b600c54610d739190614bd5565b6000600c5460000361115a57600080fd5b50600b5460ff1690565b601c5461010090046001600160a01b031633146111b75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b600f5460ff161561120a5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c16565b6107d08361ffff161115801561122657506107d08261ffff1611155b801561123857506107d08161ffff1611155b6112845760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c16565b6109c46112918385614c62565b61ffff1611156112e35760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c16565b600d805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b601c5461010090046001600160a01b031633146113a95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561141057600080fd5b505af1158015611424573d6000803e3d6000fd5b5050505050565b601c5461010090046001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b031633146114fc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b6103e8600c54600561150e9190614be8565b6115189190614b9a565b8183600c546115279190614be8565b6115319190614b9a565b10156115a55760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c16565b8082600c546115b49190614be8565b6115be9190614b9a565b6018555050565b6010546001600160a01b0316600090815260208190526040812054612710906115ef908490614be8565b610d4c9190614b9a565b601c5461010090046001600160a01b0316331461164c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b609681111561169d5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c16565b601755565b601c5461010090046001600160a01b031633146116f55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b6001600160a01b0381166117715760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c16565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161180f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c16565b601c5461182b9061010090046001600160a01b031660006118fb565b6118368160016118fb565b601c5461010090046001600160a01b0316600090815260208190526040812054111561188a57601c5461010090046001600160a01b0316600081815260208190526040902054611888919083906110c0565b505b601c80546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c5461010090046001600160a01b0316331461194e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b031633146119cc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b601a5460ff16156119dc57600080fd5b306001600160a01b03821603611a345760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c16565b601a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600b54600090611a889060ff16600a614b8b565b601854610d739190614b9a565b601c5461010090046001600160a01b03163314611ae85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b601c54611b049061010090046001600160a01b031660006118fb565b601c80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff81169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c5461010090046001600160a01b03163314611bc15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b601c5460ff1615611c145760405162461bcd60e51b815260206004820152600160248201527f31000000000000000000000000000000000000000000000000000000000000006044820152606401610c16565b80601a60026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601a60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af1925050508015611cb157506040513d6000823e601f3d908101601f19168201604052611cae9190810190614ce8565b60015b611cfd5760405162461bcd60e51b815260206004820152600160248201527f33000000000000000000000000000000000000000000000000000000000000006044820152606401610c16565b6009611d098582614da9565b50600a611d168482614da9565b506008829055600b805460ff191660ff8316908117909155611d3990600a614b8b565b600854611d469190614be8565b600c5550505050600f60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc49190614e69565b6001600160a01b031663c9c65396600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e499190614e69565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed19190614e69565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556000908152600160208190526040909120805460ff191682179055600c54606491611f339190614be8565b611f3d9190614b9a565b601855600c54606490611f51906001614be8565b611f5b9190614b9a565b601955601c805460ff1916600117808255600c546001600160a01b0361010092839004811660009081526020819052604080822084905594549451939094041692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611fcc9190815260200190565b60405180910390a3600f54611ff390309061010090046001600160a01b03166000196134bb565b601c54600f5461201c916001600160a01b036101009182900481169291909104166000196134bb565b61204f601c60019054906101000a90046001600160a01b0316858486600c546120459190614be8565b6110c09190614b9a565b50601c5461010090046001600160a01b031660008181526020819052604090205461207c919030906110c0565b50600f54306000818152602081905260409020546101009092046001600160a01b03169163f305d719914791601c5460405160e086901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03938416600482015260248101929092526000604483018190526064830152610100900490911660848201524260a482015260c40160606040518083038185885af1158015612131573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121569190614e86565b50505061216161245a565b50505050565b601c5461010090046001600160a01b031633146121ba5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b600f805460ff19166001179055565b601c5461010090046001600160a01b0316331461221c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b80612293576001600160a01b03828116600081815260016020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c73565b600254156122fa576203f480600254426122ad9190614bd5565b116122fa5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c16565b6001600160a01b03821660009081526001602052604090205460ff16156123635760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c16565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c73565b5050565b601c5460009061010090046001600160a01b031633146124355760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b600f5461245490309061010090046001600160a01b03166000196134bb565b50600190565b601c5461010090046001600160a01b031633146124ad5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b601a5460ff16156125005760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c16565b601a54610100900460ff166125575760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c16565b601a546201000090046001600160a01b031661259d57601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54601054600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561262e57600080fd5b505af192505050801561263f575060015b50601a805460ff191660011790556010546001600160a01b03166000908152602081905260409020546127109061267790600a614be8565b6126819190614b9a565b6014556010546001600160a01b0316600090815260208190526040902054612710906126ae90601e614be8565b6126b89190614b9a565b60155542601b55565b6060600a8054610cb890614a25565b60006126dd3384846135c8565b5060019392505050565b601c5461010090046001600160a01b0316331461273a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b600e805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416928816929092179290921716179055806127b28385614c62565b6127bc9190614c62565b600e80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600d5460009161280d9162010000810482169116614c62565b600e5461ffff918216925066010000000000009004168110156121615760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c16565b601c5461010090046001600160a01b031633146128eb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b306001600160a01b038216036129435760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c16565b601c546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa1580156129b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129db9190614eb4565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dd9190614ecd565b601c5461010090046001600160a01b03163314612ab55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b6013805461ff001916610100841515908102919091179091556016805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c5461010090046001600160a01b03163314612b675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b6001600160a01b03821615801590612b8757506001600160a01b03811615155b612bd35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c16565b601180546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560128054929093169116179055565b601c5461010090046001600160a01b03163314612c6c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b601a54610100900460ff1615612cc45760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c16565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2d9190614e69565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9e9190614e69565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e259190614e69565b6010546001600160a01b039081166000908152600160205260409020805460ff191690559091508116612feb57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190614e69565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f259190614e69565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fae9190614e69565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561301f565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03858116820292909217835560105482166000908152600160208190526040909120805460ff1916909117905591546110dd9230929104166000196134bb565b601c5461010090046001600160a01b031633146130e25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b601a54610100900460ff161561313a5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c16565b601c546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f1935050505015801561317a573d6000803e3d6000fd5b50565b601c5461010090046001600160a01b031633146131d05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b8284600c546131df9190614be8565b6131e99190614b9a565b601455600c5481906131fc908490614be8565b6132069190614b9a565b601581905560145411156132825760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c16565b6010546001600160a01b0316600090815260208190526040902054612710906132ac906096614be8565b6132b69190614b9a565b601554111561332d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610c16565b620f4240600c5461333e9190614b9a565b60155410156133b55760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c16565b620f4240600c546133c69190614b9a565b60145410156121615760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c16565b601c5461010090046001600160a01b031633146134905760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c16565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166135115760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c16565b6001600160a01b0382166135675760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c16565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166136465760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c16565b6001600160a01b0383166136c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c16565b600082116137385760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c16565b6001600160a01b0384166000908152600160205260408120548190819060ff16156137665760019250613794565b6001600160a01b03861660009081526001602052604090205460ff16156137905760019150613794565b5060015b61379e8787613d40565b156139a957601a5460ff166137f55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c16565b82806137fe5750815b156138c2576001600160a01b03871660009081526007602052604090205460ff1615801561384557506001600160a01b03861660009081526007602052604090205460ff16155b156138c2576018548511156138c25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c16565b600f546001600160a01b0387811661010090920416148015906138e3575081155b156139a9576001600160a01b03861660009081526007602052604090205460ff166139a9576019548561392b886001600160a01b031660009081526020819052604090205490565b6139359190614c4f565b11156139a95760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c16565b8115613a405760135460ff16613a4057601354610100900460ff1615613a4057306000908152602081905260409020546014548110613a3e5760155460165460ff1615613a28576017546010546001600160a01b031660009081526020819052604090205461271091613a1b91614be8565b613a259190614b9a565b90505b808210613a33578091505b613a3c82613e66565b505b505b613a4e878787868686613a59565b979650505050505050565b6000613a658787613d40565b15613b1857601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613b01575060408051601f3d908101601f19168201909252613afe91810190614ecd565b60015b613b0a57600080fd5b905080613b1657600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613b5a57506001600160a01b03871660009081526006602052604090205460ff165b15613b63575060005b6001600160a01b03881660009081526020819052604081208054889290613b8b908490614bd5565b909155506000905081613b9e5786613baa565b613baa8987878a614355565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613be09190614c4f565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c2c91815260200190565b60405180910390a3601a54610100900460ff16613d3157613c4d898961446a565b601a54610100900460ff16158015613c6a5750613c6a8989613d40565b8015613c8f57506001600160a01b03891660009081526005602052604090205460ff16155b8015613cb457506001600160a01b03881660009081526005602052604090205460ff16155b8015613cbe575083155b15613d315760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610c16565b50600198975050505050505050565b601c546000906001600160a01b038481166101009092041614801590613d795750601c546001600160a01b038381166101009092041614155b8015613d955750601c5461010090046001600160a01b03163214155b8015613dba57506001600160a01b03821660009081526004602052604090205460ff16155b8015613ddf57506001600160a01b03831660009081526004602052604090205460ff16155b8015613df657506001600160a01b03821661dead14155b8015613e0a57506001600160a01b03821615155b8015613e1f57506001600160a01b0383163014155b8015613e3f5750601a546001600160a01b03848116620100009092041614155b8015613e5f5750601a546001600160a01b03838116620100009092041614155b9392505050565b6013805460ff1916600117905560408051608081018252600e5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052600003613ec75750614348565b306000908152600360209081526040808320600f5461010090046001600160a01b0316845290915290205460001914613f2a57306000908152600360209081526040808320600f5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685613f4b9190614be8565b613f559190614b9a565b613f5f9190614b9a565b90506000613f6d8285614bd5565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613fa757613fa7614bff565b60200260200101906001600160a01b031690816001600160a01b031681525050600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561401a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403e9190614e69565b8160018151811061405157614051614bff565b6001600160a01b039283166020918202929092010152600f546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac947906140b7908590600090869030904290600401614eea565b600060405180830381600087803b1580156140d157600080fd5b505af19250505080156140e2575060015b6140ef5750505050614348565b476000836140fd8684614be8565b6141079190614b9a565b9050841561420357600f546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1935050505080156141b7575060408051601f3d908101601f191682019092526141b491810190614e86565b60015b6141c657505050505050614348565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61420d8183614bd5565b91508560000151866060018181516142259190614f5b565b61ffff908116909152606088015160408901516000935083929182169161424d911686614be8565b6142579190614b9a565b905060006142658286614bd5565b60208a015190915061ffff16156142d3576011546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146142c8576040519150601f19603f3d011682016040523d82523d6000602084013e6142cd565b606091505b50909350505b604089015161ffff161561433e576012546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114614333576040519150601f19603f3d011682016040523d82523d6000602084013e614338565b606091505b50909350505b5050505050505050505b506013805460ff19169055565b600080841561436b5750600d5461ffff16614395565b83156143845750600d5462010000900461ffff16614395565b50600d54640100000000900461ffff165b806000036143a65782915050610e00565b601a546201000090046001600160a01b0316301480156143d0575046600114806143d05750466038145b156143da57506111945b60006127106143e98386614be8565b6143f39190614b9a565b9050801561446057306000908152602081905260408120805483929061441a908490614c4f565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613a4e8185614bd5565b601a54610100900460ff16156144e85760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c16565b6144f28282613d40565b15801561450c57506010546001600160a01b038281169116145b156123db576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601a805461ff00191661010017908190556201000090041661459a57601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612b08565b801515811461317a57600080fd5b600080604083850312156145fb57600080fd5b8235614606816145da565b91506020830135614616816145da565b809150509250929050565b60005b8381101561463c578181015183820152602001614624565b50506000910152565b6020815260008251806020840152614664816040850160208701614621565b601f01601f19169190910160400192915050565b6001600160a01b038116811461317a57600080fd5b600080604083850312156146a057600080fd5b82356146ab81614678565b946020939093013593505050565b6000602082840312156146cb57600080fd5b8135613e5f81614678565b6000806000606084860312156146eb57600080fd5b83356146f681614678565b9250602084013561470681614678565b929592945050506040919091013590565b6000806040838503121561472a57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561479157614791614739565b604052919050565b600067ffffffffffffffff8211156147b3576147b3614739565b5060051b60200190565b600082601f8301126147ce57600080fd5b813560206147e36147de83614799565b614768565b82815260059290921b8401810191818101908684111561480257600080fd5b8286015b8481101561481d5780358352918301918301614806565b509695505050505050565b6000806040838503121561483b57600080fd5b823567ffffffffffffffff8082111561485357600080fd5b818501915085601f83011261486757600080fd5b813560206148776147de83614799565b82815260059290921b8401810191818101908984111561489657600080fd5b948201945b838610156148bd5785356148ae81614678565b8252948201949082019061489b565b965050860135925050808211156148d357600080fd5b506148e0858286016147bd565b9150509250929050565b803561ffff811681146148fc57600080fd5b919050565b60008060006060848603121561491657600080fd5b61491f846148ea565b925061492d602085016148ea565b915061493b604085016148ea565b90509250925092565b6000806040838503121561495757600080fd5b823561460681614678565b60006020828403121561497457600080fd5b5035919050565b6000806000806080858703121561499157600080fd5b843561499c81614678565b9350602085013592506040850135915060608501356149ba81614678565b939692955090935050565b600080604083850312156149d857600080fd5b82356149e381614678565b9150602083013561461681614678565b60008060008060808587031215614a0957600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680614a3957607f821691505b602082108103614a72577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614ae2578160001904821115614ac857614ac8614a78565b80851615614ad557918102915b93841c9390800290614aac565b509250929050565b600082614af957506001610d4c565b81614b0657506000610d4c565b8160018114614b1c5760028114614b2657614b42565b6001915050610d4c565b60ff841115614b3757614b37614a78565b50506001821b610d4c565b5060208310610133831016604e8410600b8410161715614b65575081810a610d4c565b614b6f8383614aa7565b8060001904821115614b8357614b83614a78565b029392505050565b6000613e5f60ff841683614aea565b600082614bd0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610d4c57610d4c614a78565b8082028115828204841417610d4c57610d4c614a78565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff808316818103614c4557614c45614a78565b6001019392505050565b80820180821115610d4c57610d4c614a78565b61ffff818116838216019080821115614c7d57614c7d614a78565b5092915050565b600082601f830112614c9557600080fd5b815167ffffffffffffffff811115614caf57614caf614739565b614cc26020601f19601f84011601614768565b818152846020838601011115614cd757600080fd5b610e00826020830160208701614621565b60008060008060808587031215614cfe57600080fd5b845167ffffffffffffffff80821115614d1657600080fd5b614d2288838901614c84565b95506020870151915080821115614d3857600080fd5b50614d4587828801614c84565b93505060408501519150606085015160ff811681146149ba57600080fd5b601f8211156110dd57600081815260208120601f850160051c81016020861015614d8a5750805b601f850160051c820191505b81811015610ca157828155600101614d96565b815167ffffffffffffffff811115614dc357614dc3614739565b614dd781614dd18454614a25565b84614d63565b602080601f831160018114614e0c5760008415614df45750858301515b600019600386901b1c1916600185901b178555610ca1565b600085815260208120601f198616915b82811015614e3b57888601518255948401946001909101908401614e1c565b5085821015614e595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614e7b57600080fd5b8151613e5f81614678565b600080600060608486031215614e9b57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614ec657600080fd5b5051919050565b600060208284031215614edf57600080fd5b8151613e5f816145da565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614f3a5784516001600160a01b031683529383019391830191600101614f15565b50506001600160a01b03969096166060850152505050608001529392505050565b61ffff828116828216039080821115614c7d57614c7d614a7856fea26469706673582212200f0189e50710f51659b2fd7eaf084e97c36520c4b437066de7cdbf0f641a5c9764736f6c63430008110033