0x60806040526004361061037a5760003560e01c80634fbee193116101d1578063a9059cbb11610102578063dd62ed3e116100a0578063fb78680d1161006f578063fb78680d14610b48578063fdb78c0e14610b68578063fe575a8714610b87578063feadde9c14610ba757600080fd5b8063dd62ed3e14610a76578063eafb5a3c14610abc578063ee5d9c2d14610adc578063f94aa1b414610af157600080fd5b8063b7df8b36116100dc578063b7df8b361461099a578063bfc2fc35146109b4578063c6a276c2146109d4578063cf847706146109f457600080fd5b8063a9059cbb14610964578063b1b08f7114610984578063b3d514fb1461098457600080fd5b8063715018a61161016f578063893d20e811610149578063893d20e8146108d65780638a63bd9b146108f45780638a8c523c1461090957806395d89b411461091e57600080fd5b8063715018a61461088157806375cb1bd11461089657806380c581d1146108b657600080fd5b80635c24b074116101ab5780635c24b074146107dd5780635cce86cd146107fd5780636ebd00781461083657806370a082311461084b57600080fd5b80634fbee1931461076557806350a8e0161461079e578063590ffdce146107bd57600080fd5b80632610eaca116102ab57806336fddb041161024957806346ea7ac81161022357806346ea7ac8146106f55780634ada218b1461070b5780634e718e48146107255780634fb2e45d1461074557600080fd5b806336fddb04146106955780633f3cf56c146106b5578063452ed4f1146106d557600080fd5b80632e8fa821116102855780632e8fa82114610623578063313ce5671461063957806332cde6641461065557806333251a0b1461067557600080fd5b80632610eaca146105d757806328577751146105f75780632b28fc7a1461060d57600080fd5b8063095ea7b3116103185780630fa604e4116102f25780630fa604e41461056d57806318160ddd1461058257806323b872dd1461059757806326003957146105b757600080fd5b8063095ea7b3146104e4578063098f8b02146105145780630dcbcf1c1461053457600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630712d165146104a45780630758d924146104c457600080fd5b806303fd2a45146103865780630445b667146103b9578063044df726146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60115481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f8366004613f01565b610bc7565b005b34801561040b57600080fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152600d81527f5343524f20486f6c64696e67730000000000000000000000000000000000000060208201525b6040516103b09190613f3a565b3480156104b057600080fd5b506103fd6104bf366004613fa6565b610ca4565b3480156104d057600080fd5b50600b5461039c906001600160a01b031681565b3480156104f057600080fd5b506105046104ff36600461400f565b610e95565b60405190151581526020016103b0565b34801561052057600080fd5b506103fd61052f36600461403b565b610eac565b34801561054057600080fd5b5061050461054f366004614054565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561057957600080fd5b506103cf611379565b34801561058e57600080fd5b506103cf611399565b3480156105a357600080fd5b506105046105b2366004614071565b6113b5565b3480156105c357600080fd5b506103fd6105d23660046140b2565b61142d565b3480156105e357600080fd5b506103fd6105f23660046141c3565b61157c565b34801561060357600080fd5b506103cf60145481565b34801561061957600080fd5b506103cf61076c81565b34801561062f57600080fd5b506103cf60125481565b34801561064557600080fd5b50604051601281526020016103b0565b34801561066157600080fd5b506103fd610670366004614285565b6116e9565b34801561068157600080fd5b506103fd610690366004614054565b611883565b3480156106a157600080fd5b506103fd6106b03660046142c8565b61194d565b3480156106c157600080fd5b506103fd6106d03660046140b2565b6119c6565b3480156106e157600080fd5b50600c5461039c906001600160a01b031681565b34801561070157600080fd5b506103cf610bb881565b34801561071757600080fd5b506017546105049060ff1681565b34801561073157600080fd5b506103fd61074036600461403b565b611b16565b34801561075157600080fd5b506103fd610760366004614054565b611bba565b34801561077157600080fd5b50610504610780366004614054565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107aa57600080fd5b5060175461050490610100900460ff1681565b3480156107c957600080fd5b506103fd6107d83660046142c8565b611dea565b3480156107e957600080fd5b506103fd6107f8366004614054565b611e63565b34801561080957600080fd5b50610504610818366004614054565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561084257600080fd5b506103cf611f59565b34801561085757600080fd5b506103cf610866366004614054565b6001600160a01b031660009081526001602052604090205490565b34801561088d57600080fd5b506103fd611f74565b3480156108a257600080fd5b506103fd6108b13660046142e6565b612033565b3480156108c257600080fd5b506103fd6108d13660046142c8565b6120cd565b3480156108e257600080fd5b506000546001600160a01b031661039c565b34801561090057600080fd5b50610504612277565b34801561091557600080fd5b506103fd6122e6565b34801561092a57600080fd5b5060408051808201909152600581527f5343524f480000000000000000000000000000000000000000000000000000006020820152610497565b34801561097057600080fd5b5061050461097f36600461400f565b61254e565b34801561099057600080fd5b506103cf6107d081565b3480156109a657600080fd5b506013546105049060ff1681565b3480156109c057600080fd5b506103fd6109cf366004613f01565b612565565b3480156109e057600080fd5b506103fd6109ef366004614054565b612612565b348015610a0057600080fd5b50600a54610a419061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103b0565b348015610a8257600080fd5b506103cf610a91366004614331565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610ac857600080fd5b506103fd610ad7366004614054565b6126b2565b348015610ae857600080fd5b506103fd612a61565b348015610afd57600080fd5b50600d54600e54600f54610b1e926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103b0565b348015610b5457600080fd5b506103fd610b6336600461435f565b612b41565b348015610b7457600080fd5b5060105461050490610100900460ff1681565b348015610b9357600080fd5b50610504610ba2366004614054565b612c74565b348015610bb357600080fd5b506103fd610bc23660046142c8565b612d02565b6000546001600160a01b03163314610c1a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6017546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c8857600080fd5b505af1158015610c9c573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cf25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600a805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610d9a85876143c0565b610da491906143c0565b610dae91906143c0565b600a80547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff166801000000000000000061ffff93841602179055600954600091610e0191620100008104821691166143c0565b600a5461ffff918216925068010000000000000000900416811015610e8e5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c11565b5050505050565b6000610ea2338484612d7b565b5060015b92915050565b6000546001600160a01b03163314610efa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b601754760100000000000000000000000000000000000000000000900460ff1615610f675760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610c11565b60004711610fb75760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d7573742068617665204554482e0000000000000000006044820152606401610c11565b610fc36012600a6144ca565b610fcd90826144d9565b33600090815260016020526040902054101561102b5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610c11565b600b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a291906144f8565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112791906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af91906144f8565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b54611209929182169116600019612d7b565b600b546112239030906001600160a01b0316600019612d7b565b601780547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556112706012600a6144ca565b61127a90826144d9565b905061128c3330836000806001612e88565b50600b546001600160a01b031663f305d71947306112bf816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af1158015611346573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061136b9190614515565b5050506113766122e6565b50565b60006113876012600a6144ca565b6016546113949190614543565b905090565b60006113a76012600a6144ca565b611394906359682f006144d9565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000191461141a576001600160a01b03841660009081526004602090815260408083203384529091528120805484929061141490849061457e565b90915550505b611425848484613167565b949350505050565b6000546001600160a01b0316331461147b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60646114896012600a6144ca565b611497906359682f006144d9565b6114a19190614543565b81836114af6012600a6144ca565b6114bd906359682f006144d9565b6114c791906144d9565b6114d19190614543565b10156115455760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c11565b80826115536012600a6144ca565b611561906359682f006144d9565b61156b91906144d9565b6115759190614543565b6016555050565b6000546001600160a01b031633146115ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b805182511461161b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c11565b60005b82518160ff1610156116e457818160ff168151811061163f5761163f614595565b6020026020010151611666336001600160a01b031660009081526001602052604090205490565b101561167157600080fd5b6116d133848360ff168151811061168a5761168a614595565b60200260200101516012600a6116a091906144ca565b858560ff16815181106116b5576116b5614595565b60200260200101516116c791906144d9565b6000806001612e88565b50806116dc816145c4565b91505061161e565b505050565b6000546001600160a01b031633146117375760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b61076c8361ffff161115801561175357506107d08261ffff1611155b801561176557506107d08161ffff1611155b6117b15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c11565b610bb86117be83856143c0565b61ffff1611156118105760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c11565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146118d15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6017546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561193957600080fd5b505af1158015610e8e573d6000803e3d6000fd5b6000546001600160a01b0316331461199b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a145760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6103e8611a236012600a6144ca565b611a31906359682f006144d9565b611a3b9190614543565b8183611a496012600a6144ca565b611a57906359682f006144d9565b611a6191906144d9565b611a6b9190614543565b1015611adf5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c11565b8082611aed6012600a6144ca565b611afb906359682f006144d9565b611b0591906144d9565b611b0f9190614543565b6015555050565b6000546001600160a01b03163314611b645760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60c8811115611bb55760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652032252e0000000000000000000000006044820152606401610c11565b601455565b6000546001600160a01b03163314611c085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b038116611c845760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c11565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611d225760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c11565b60008054611d3b916001600160a01b0390911690611dea565b611d46816001611dea565b600080546001600160a01b031681526001602052604090205415611d8d57600080546001600160a01b03168082526001602052604090912054611d8b919083906116c7565b505b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314611e385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611eb15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60175460ff1615611ec157600080fd5b306001600160a01b03821603611f195760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c11565b601780546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611f676012600a6144ca565b6015546113949190614543565b6000546001600160a01b03163314611fc25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60008054611fdb916001600160a01b0390911690611dea565b6000805473ffffffffffffffffffffffffffffffffffffffff19811682556040516001600160a01b03909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146120815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600d80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600e805493851693821693909317909255600f8054919093169116179055565b6000546001600160a01b0316331461211b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b80612192576001600160a01b03828116600081815260026020526040808220805460ff1916905560175490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c6e565b600354156121f9576203f480600354426121ac919061457e565b116121f95760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610c11565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560175491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c6e565b5050565b600080546001600160a01b031633146122c65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600b546122e09030906001600160a01b0316600019612d7b565b50600190565b6000546001600160a01b031633146123345760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60175460ff16156123875760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c11565b601754610100900460ff166123de5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c11565b6017546201000090046001600160a01b031661242457601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601754600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156124af57600080fd5b505af19250505080156124c0575060015b506017805460ff19166001179055600c54612710906124fd906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61250890600a6144d9565b6125129190614543565b601155600c546001600160a01b03166000908152600160205260409020546127109061253f90601e6144d9565b6125499190614543565b601255565b600061255b338484613167565b5060019392505050565b6000546001600160a01b031633146125b35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6000546001600160a01b031633146126605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6017546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c29060240161191f565b6000546001600160a01b031633146127005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612745573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276991906144f8565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127da91906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561283d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286191906144f8565b90506001600160a01b0381166129ff57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d391906144f8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612920573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294491906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156129a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cd91906144f8565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612a28565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556116e4903090600019612d7b565b6000546001600160a01b03163314612aaf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b601754610100900460ff1615612b075760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c11565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611376573d6000803e3d6000fd5b6000546001600160a01b03163314612b8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b8284612b9d6012600a6144ca565b612bab906359682f006144d9565b612bb591906144d9565b612bbf9190614543565b6011558082612bd06012600a6144ca565b612bde906359682f006144d9565b612be891906144d9565b612bf29190614543565b60128190556011541115612c6e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c11565b50505050565b6017546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea691906145e3565b6000546001600160a01b03163314612d505760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b038316612dd15760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c11565b6001600160a01b038216612e275760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c11565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601754600090610100900460ff16612f8857612ea4878761365f565b601754610100900460ff16158015612ec15750612ec187876137cf565b8015612ee657506001600160a01b03871660009081526006602052604090205460ff16155b8015612f0b57506001600160a01b03861660009081526006602052604090205460ff16155b8015612f15575081155b15612f885760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610c11565b612f9287876137cf565b15613045576017546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561302e575060408051601f3d908101601f1916820190925261302b918101906145e3565b60015b61303757600080fd5b90508061304357600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061308757506001600160a01b03871660009081526007602052604090205460ff165b15613090575060005b6001600160a01b038816600090815260016020526040812080548892906130b890849061457e565b9091555060009050816130cb57866130d7565b6130d78987878a6138a4565b6001600160a01b038916600090815260016020526040812080549293508392909190613104908490614600565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161315091815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166131e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c11565b6001600160a01b0383166132615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c11565b600082116132d75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c11565b601754760100000000000000000000000000000000000000000000900460ff166133435760405162461bcd60e51b815260206004820152601c60248201527f4c50206d75737420666972737420626520696e7469616c697a65642e000000006044820152606401610c11565b6001600160a01b0384166000908152600260205260408120548190819060ff1615613371576001925061339f565b6001600160a01b03861660009081526002602052604090205460ff161561339b576001915061339f565b5060015b6133a987876137cf565b156135af5760175460ff166134005760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c11565b82806134095750815b156134cd576001600160a01b03871660009081526008602052604090205460ff1615801561345057506001600160a01b03861660009081526008602052604090205460ff16155b156134cd576015548511156134cd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c11565b600b546001600160a01b038781169116148015906134e9575081155b156135af576001600160a01b03861660009081526008602052604090205460ff166135af5760165485613531886001600160a01b031660009081526001602052604090205490565b61353b9190614600565b11156135af5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c11565b81156136465760105460ff1661364657601054610100900460ff1615613646573060009081526001602052604090205460115481106136445760125460135460ff161561362e57601454600c546001600160a01b031660009081526001602052604090205461271091613621916144d9565b61362b9190614543565b90505b808210613639578091505b61364282613970565b505b505b613654878787868686612e88565b979650505050505050565b601754610100900460ff16156136dd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c11565b6136e782826137cf565b1580156137015750600c546001600160a01b038281169116145b15612273576001600160a01b038083166000908152600560209081526040808320805460ff19908116600190811790925560079093529220805490911690911790556017805461ff00191661010017908190556201000090041661378f57601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612606565b600080546001600160a01b038481169116148015906137fc57506000546001600160a01b03838116911614155b801561381357506000546001600160a01b03163214155b801561383857506001600160a01b03821660009081526005602052604090205460ff16155b801561385d57506001600160a01b03831660009081526005602052604090205460ff16155b801561387457506001600160a01b03821661dead14155b801561388857506001600160a01b03821615155b801561389d57506001600160a01b0383163014155b9392505050565b60008084156138ba575060095461ffff166138e4565b83156138d3575060095462010000900461ffff166138e4565b50600954640100000000900461ffff165b60006127106138f383866144d9565b6138fd9190614543565b30600090815260016020526040812080549293508392909190613921908490614600565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613654818561457e565b6010805460ff191660011790556040805160a081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000009004909116608082018190526000036139e45750613ee6565b306000908152600460209081526040808320600b546001600160a01b0316845290915290205460001914613a3d57306000908152600460209081526040808320600b546001600160a01b03168452909152902060001990555b60006002826080015161ffff16836000015161ffff1685613a5e91906144d9565b613a689190614543565b613a729190614543565b90506000613a80828561457e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613aba57613aba614595565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5091906144f8565b81600181518110613b6357613b63614595565b6001600160a01b039283166020918202929092010152600b546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613bc2908590600090869030904290600401614618565b600060405180830381600087803b158015613bdc57600080fd5b505af1158015613bf0573d6000803e3d6000fd5b5047925060009150849050613c0586846144d9565b613c0f9190614543565b90508415613d0057600b546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613c9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cc39190614515565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613d0a818361457e565b9150856000015186608001818151613d229190614689565b61ffff9081169091526080880151604089015160009350839291821691613d4a9116866144d9565b613d549190614543565b90506000886080015161ffff16896060015161ffff1686613d7591906144d9565b613d7f9190614543565b90506000613d8d8284614600565b613d97908761457e565b60608b015190915061ffff1615613e0557600f546040516001600160a01b03909116906188b89084906000818181858888f193505050503d8060008114613dfa576040519150601f19603f3d011682016040523d82523d6000602084013e613dff565b606091505b50909450505b60408a015161ffff1615613e7057600e546040516001600160a01b03909116906188b89085906000818181858888f193505050503d8060008114613e65576040519150601f19603f3d011682016040523d82523d6000602084013e613e6a565b606091505b50909450505b60208a015161ffff1615613edb57600d546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114613ed0576040519150601f19603f3d011682016040523d82523d6000602084013e613ed5565b606091505b50909450505b505050505050505050505b506010805460ff19169055565b801515811461137657600080fd5b60008060408385031215613f1457600080fd5b8235613f1f81613ef3565b91506020830135613f2f81613ef3565b809150509250929050565b600060208083528351808285015260005b81811015613f6757858101830151858201604001528201613f4b565b81811115613f79576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff81168114613fa157600080fd5b919050565b60008060008060808587031215613fbc57600080fd5b613fc585613f8f565b9350613fd360208601613f8f565b9250613fe160408601613f8f565b9150613fef60608601613f8f565b905092959194509250565b6001600160a01b038116811461137657600080fd5b6000806040838503121561402257600080fd5b823561402d81613ffa565b946020939093013593505050565b60006020828403121561404d57600080fd5b5035919050565b60006020828403121561406657600080fd5b813561389d81613ffa565b60008060006060848603121561408657600080fd5b833561409181613ffa565b925060208401356140a181613ffa565b929592945050506040919091013590565b600080604083850312156140c557600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561412c5761412c6140d4565b604052919050565b600067ffffffffffffffff82111561414e5761414e6140d4565b5060051b60200190565b600082601f83011261416957600080fd5b8135602061417e61417983614134565b614103565b82815260059290921b8401810191818101908684111561419d57600080fd5b8286015b848110156141b857803583529183019183016141a1565b509695505050505050565b600080604083850312156141d657600080fd5b823567ffffffffffffffff808211156141ee57600080fd5b818501915085601f83011261420257600080fd5b8135602061421261417983614134565b82815260059290921b8401810191818101908984111561423157600080fd5b948201945b8386101561425857853561424981613ffa565b82529482019490820190614236565b9650508601359250508082111561426e57600080fd5b5061427b85828601614158565b9150509250929050565b60008060006060848603121561429a57600080fd5b6142a384613f8f565b92506142b160208501613f8f565b91506142bf60408501613f8f565b90509250925092565b600080604083850312156142db57600080fd5b8235613f1f81613ffa565b6000806000606084860312156142fb57600080fd5b833561430681613ffa565b9250602084013561431681613ffa565b9150604084013561432681613ffa565b809150509250925092565b6000806040838503121561434457600080fd5b823561434f81613ffa565b91506020830135613f2f81613ffa565b6000806000806080858703121561437557600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff8083168185168083038211156143dd576143dd614391565b01949350505050565b600181815b8085111561442157816000190482111561440757614407614391565b8085161561441457918102915b93841c93908002906143eb565b509250929050565b60008261443857506001610ea6565b8161444557506000610ea6565b816001811461445b576002811461446557614481565b6001915050610ea6565b60ff84111561447657614476614391565b50506001821b610ea6565b5060208310610133831016604e8410600b84101617156144a4575081810a610ea6565b6144ae83836143e6565b80600019048211156144c2576144c2614391565b029392505050565b600061389d60ff841683614429565b60008160001904831182151516156144f3576144f3614391565b500290565b60006020828403121561450a57600080fd5b815161389d81613ffa565b60008060006060848603121561452a57600080fd5b8351925060208401519150604084015190509250925092565b600082614579577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561459057614590614391565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81036145da576145da614391565b60010192915050565b6000602082840312156145f557600080fd5b815161389d81613ef3565b6000821982111561461357614613614391565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156146685784516001600160a01b031683529383019391830191600101614643565b50506001600160a01b03969096166060850152505050608001529392505050565b600061ffff838116908316818110156146a4576146a4614391565b03939250505056fea2646970667358221220b3bc8dde47830b063a6f6d7c0ca7df9b73537fceaf10e75a9a0f26710b62827f64736f6c634300080f0033
0x60006003556103e8608081905260a081905260c08190526009805465ffffffffffff19166503e803e803e8179055606460e08190526101f46101005261012c6101205261014052610160819052600a80546001600160501b0319166903e80064012c01f400641781556101e060405273b66139c2471092740dcb7a17e2edb642638869396101808190527356aa41dda5400859ed9f1bd578f1ccde05e3f86b6101a08190527347de77bc10c2d424a090d0835be622ee466889706101c0819052600d80546001600160a01b03199081169094179055600e80548416909217909155600f80549092161790556010805461ff00191690556200010390601290620004d0565b62000113906359682f00620004e8565b62000120906003620004e8565b6200012c91906200050a565b6015556103e8620001406012600a620004d0565b62000150906359682f00620004e8565b6200015d906003620004e8565b6200016991906200050a565b6016556017805461ffff60ff60b01b01191690556200018b6012600a620004d0565b6200019b906359682f00620004e8565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001de6012600a620004d0565b620001ee906359682f00620004e8565b60405190815260200160405180910390a3600080546001600160a01b03191633179055466038036200024657600b80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000339565b466061036200027b57600b80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d117905562000339565b46600114806200028b5750466004145b80620002975750466003145b15620002c957600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000339565b4661a86a03620002ff57600b80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d417905562000339565b4660fa036200033457600b80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c2917905562000339565b600080fd5b600080546001600160a01b0390811682526007602090815260408084208054600160ff19918216811790925530865282862080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054821683179055855490941685526005909252909220805490911690911790556200052d565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000412578160001904821115620003f657620003f6620003bb565b808516156200040457918102915b93841c9390800290620003d6565b509250929050565b6000826200042b57506001620004ca565b816200043a57506000620004ca565b81600181146200045357600281146200045e576200047e565b6001915050620004ca565b60ff841115620004725762000472620003bb565b50506001821b620004ca565b5060208310610133831016604e8410600b8410161715620004a3575081810a620004ca565b620004af8383620003d1565b8060001904821115620004c657620004c6620003bb565b0290505b92915050565b6000620004e160ff8416836200041a565b9392505050565b6000816000190483118215151615620005055762000505620003bb565b500290565b6000826200052857634e487b7160e01b600052601260045260246000fd5b500490565b6146e2806200053d6000396000f3fe60806040526004361061037a5760003560e01c80634fbee193116101d1578063a9059cbb11610102578063dd62ed3e116100a0578063fb78680d1161006f578063fb78680d14610b48578063fdb78c0e14610b68578063fe575a8714610b87578063feadde9c14610ba757600080fd5b8063dd62ed3e14610a76578063eafb5a3c14610abc578063ee5d9c2d14610adc578063f94aa1b414610af157600080fd5b8063b7df8b36116100dc578063b7df8b361461099a578063bfc2fc35146109b4578063c6a276c2146109d4578063cf847706146109f457600080fd5b8063a9059cbb14610964578063b1b08f7114610984578063b3d514fb1461098457600080fd5b8063715018a61161016f578063893d20e811610149578063893d20e8146108d65780638a63bd9b146108f45780638a8c523c1461090957806395d89b411461091e57600080fd5b8063715018a61461088157806375cb1bd11461089657806380c581d1146108b657600080fd5b80635c24b074116101ab5780635c24b074146107dd5780635cce86cd146107fd5780636ebd00781461083657806370a082311461084b57600080fd5b80634fbee1931461076557806350a8e0161461079e578063590ffdce146107bd57600080fd5b80632610eaca116102ab57806336fddb041161024957806346ea7ac81161022357806346ea7ac8146106f55780634ada218b1461070b5780634e718e48146107255780634fb2e45d1461074557600080fd5b806336fddb04146106955780633f3cf56c146106b5578063452ed4f1146106d557600080fd5b80632e8fa821116102855780632e8fa82114610623578063313ce5671461063957806332cde6641461065557806333251a0b1461067557600080fd5b80632610eaca146105d757806328577751146105f75780632b28fc7a1461060d57600080fd5b8063095ea7b3116103185780630fa604e4116102f25780630fa604e41461056d57806318160ddd1461058257806323b872dd1461059757806326003957146105b757600080fd5b8063095ea7b3146104e4578063098f8b02146105145780630dcbcf1c1461053457600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630712d165146104a45780630758d924146104c457600080fd5b806303fd2a45146103865780630445b667146103b9578063044df726146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60115481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f8366004613f01565b610bc7565b005b34801561040b57600080fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152600d81527f5343524f20486f6c64696e67730000000000000000000000000000000000000060208201525b6040516103b09190613f3a565b3480156104b057600080fd5b506103fd6104bf366004613fa6565b610ca4565b3480156104d057600080fd5b50600b5461039c906001600160a01b031681565b3480156104f057600080fd5b506105046104ff36600461400f565b610e95565b60405190151581526020016103b0565b34801561052057600080fd5b506103fd61052f36600461403b565b610eac565b34801561054057600080fd5b5061050461054f366004614054565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561057957600080fd5b506103cf611379565b34801561058e57600080fd5b506103cf611399565b3480156105a357600080fd5b506105046105b2366004614071565b6113b5565b3480156105c357600080fd5b506103fd6105d23660046140b2565b61142d565b3480156105e357600080fd5b506103fd6105f23660046141c3565b61157c565b34801561060357600080fd5b506103cf60145481565b34801561061957600080fd5b506103cf61076c81565b34801561062f57600080fd5b506103cf60125481565b34801561064557600080fd5b50604051601281526020016103b0565b34801561066157600080fd5b506103fd610670366004614285565b6116e9565b34801561068157600080fd5b506103fd610690366004614054565b611883565b3480156106a157600080fd5b506103fd6106b03660046142c8565b61194d565b3480156106c157600080fd5b506103fd6106d03660046140b2565b6119c6565b3480156106e157600080fd5b50600c5461039c906001600160a01b031681565b34801561070157600080fd5b506103cf610bb881565b34801561071757600080fd5b506017546105049060ff1681565b34801561073157600080fd5b506103fd61074036600461403b565b611b16565b34801561075157600080fd5b506103fd610760366004614054565b611bba565b34801561077157600080fd5b50610504610780366004614054565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107aa57600080fd5b5060175461050490610100900460ff1681565b3480156107c957600080fd5b506103fd6107d83660046142c8565b611dea565b3480156107e957600080fd5b506103fd6107f8366004614054565b611e63565b34801561080957600080fd5b50610504610818366004614054565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561084257600080fd5b506103cf611f59565b34801561085757600080fd5b506103cf610866366004614054565b6001600160a01b031660009081526001602052604090205490565b34801561088d57600080fd5b506103fd611f74565b3480156108a257600080fd5b506103fd6108b13660046142e6565b612033565b3480156108c257600080fd5b506103fd6108d13660046142c8565b6120cd565b3480156108e257600080fd5b506000546001600160a01b031661039c565b34801561090057600080fd5b50610504612277565b34801561091557600080fd5b506103fd6122e6565b34801561092a57600080fd5b5060408051808201909152600581527f5343524f480000000000000000000000000000000000000000000000000000006020820152610497565b34801561097057600080fd5b5061050461097f36600461400f565b61254e565b34801561099057600080fd5b506103cf6107d081565b3480156109a657600080fd5b506013546105049060ff1681565b3480156109c057600080fd5b506103fd6109cf366004613f01565b612565565b3480156109e057600080fd5b506103fd6109ef366004614054565b612612565b348015610a0057600080fd5b50600a54610a419061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103b0565b348015610a8257600080fd5b506103cf610a91366004614331565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610ac857600080fd5b506103fd610ad7366004614054565b6126b2565b348015610ae857600080fd5b506103fd612a61565b348015610afd57600080fd5b50600d54600e54600f54610b1e926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103b0565b348015610b5457600080fd5b506103fd610b6336600461435f565b612b41565b348015610b7457600080fd5b5060105461050490610100900460ff1681565b348015610b9357600080fd5b50610504610ba2366004614054565b612c74565b348015610bb357600080fd5b506103fd610bc23660046142c8565b612d02565b6000546001600160a01b03163314610c1a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6017546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c8857600080fd5b505af1158015610c9c573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cf25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600a805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610d9a85876143c0565b610da491906143c0565b610dae91906143c0565b600a80547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff166801000000000000000061ffff93841602179055600954600091610e0191620100008104821691166143c0565b600a5461ffff918216925068010000000000000000900416811015610e8e5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c11565b5050505050565b6000610ea2338484612d7b565b5060015b92915050565b6000546001600160a01b03163314610efa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b601754760100000000000000000000000000000000000000000000900460ff1615610f675760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610c11565b60004711610fb75760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d7573742068617665204554482e0000000000000000006044820152606401610c11565b610fc36012600a6144ca565b610fcd90826144d9565b33600090815260016020526040902054101561102b5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610c11565b600b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a291906144f8565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112791906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af91906144f8565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b54611209929182169116600019612d7b565b600b546112239030906001600160a01b0316600019612d7b565b601780547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556112706012600a6144ca565b61127a90826144d9565b905061128c3330836000806001612e88565b50600b546001600160a01b031663f305d71947306112bf816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af1158015611346573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061136b9190614515565b5050506113766122e6565b50565b60006113876012600a6144ca565b6016546113949190614543565b905090565b60006113a76012600a6144ca565b611394906359682f006144d9565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000191461141a576001600160a01b03841660009081526004602090815260408083203384529091528120805484929061141490849061457e565b90915550505b611425848484613167565b949350505050565b6000546001600160a01b0316331461147b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60646114896012600a6144ca565b611497906359682f006144d9565b6114a19190614543565b81836114af6012600a6144ca565b6114bd906359682f006144d9565b6114c791906144d9565b6114d19190614543565b10156115455760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c11565b80826115536012600a6144ca565b611561906359682f006144d9565b61156b91906144d9565b6115759190614543565b6016555050565b6000546001600160a01b031633146115ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b805182511461161b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c11565b60005b82518160ff1610156116e457818160ff168151811061163f5761163f614595565b6020026020010151611666336001600160a01b031660009081526001602052604090205490565b101561167157600080fd5b6116d133848360ff168151811061168a5761168a614595565b60200260200101516012600a6116a091906144ca565b858560ff16815181106116b5576116b5614595565b60200260200101516116c791906144d9565b6000806001612e88565b50806116dc816145c4565b91505061161e565b505050565b6000546001600160a01b031633146117375760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b61076c8361ffff161115801561175357506107d08261ffff1611155b801561176557506107d08161ffff1611155b6117b15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c11565b610bb86117be83856143c0565b61ffff1611156118105760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c11565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146118d15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6017546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561193957600080fd5b505af1158015610e8e573d6000803e3d6000fd5b6000546001600160a01b0316331461199b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a145760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6103e8611a236012600a6144ca565b611a31906359682f006144d9565b611a3b9190614543565b8183611a496012600a6144ca565b611a57906359682f006144d9565b611a6191906144d9565b611a6b9190614543565b1015611adf5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c11565b8082611aed6012600a6144ca565b611afb906359682f006144d9565b611b0591906144d9565b611b0f9190614543565b6015555050565b6000546001600160a01b03163314611b645760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60c8811115611bb55760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652032252e0000000000000000000000006044820152606401610c11565b601455565b6000546001600160a01b03163314611c085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b038116611c845760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c11565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611d225760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c11565b60008054611d3b916001600160a01b0390911690611dea565b611d46816001611dea565b600080546001600160a01b031681526001602052604090205415611d8d57600080546001600160a01b03168082526001602052604090912054611d8b919083906116c7565b505b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314611e385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611eb15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60175460ff1615611ec157600080fd5b306001600160a01b03821603611f195760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c11565b601780546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611f676012600a6144ca565b6015546113949190614543565b6000546001600160a01b03163314611fc25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60008054611fdb916001600160a01b0390911690611dea565b6000805473ffffffffffffffffffffffffffffffffffffffff19811682556040516001600160a01b03909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146120815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600d80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600e805493851693821693909317909255600f8054919093169116179055565b6000546001600160a01b0316331461211b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b80612192576001600160a01b03828116600081815260026020526040808220805460ff1916905560175490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c6e565b600354156121f9576203f480600354426121ac919061457e565b116121f95760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610c11565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560175491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c6e565b5050565b600080546001600160a01b031633146122c65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600b546122e09030906001600160a01b0316600019612d7b565b50600190565b6000546001600160a01b031633146123345760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60175460ff16156123875760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c11565b601754610100900460ff166123de5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c11565b6017546201000090046001600160a01b031661242457601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601754600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156124af57600080fd5b505af19250505080156124c0575060015b506017805460ff19166001179055600c54612710906124fd906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61250890600a6144d9565b6125129190614543565b601155600c546001600160a01b03166000908152600160205260409020546127109061253f90601e6144d9565b6125499190614543565b601255565b600061255b338484613167565b5060019392505050565b6000546001600160a01b031633146125b35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6000546001600160a01b031633146126605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6017546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c29060240161191f565b6000546001600160a01b031633146127005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612745573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276991906144f8565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127da91906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561283d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286191906144f8565b90506001600160a01b0381166129ff57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d391906144f8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612920573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294491906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156129a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cd91906144f8565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612a28565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556116e4903090600019612d7b565b6000546001600160a01b03163314612aaf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b601754610100900460ff1615612b075760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c11565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611376573d6000803e3d6000fd5b6000546001600160a01b03163314612b8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b8284612b9d6012600a6144ca565b612bab906359682f006144d9565b612bb591906144d9565b612bbf9190614543565b6011558082612bd06012600a6144ca565b612bde906359682f006144d9565b612be891906144d9565b612bf29190614543565b60128190556011541115612c6e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c11565b50505050565b6017546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea691906145e3565b6000546001600160a01b03163314612d505760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b038316612dd15760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c11565b6001600160a01b038216612e275760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c11565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601754600090610100900460ff16612f8857612ea4878761365f565b601754610100900460ff16158015612ec15750612ec187876137cf565b8015612ee657506001600160a01b03871660009081526006602052604090205460ff16155b8015612f0b57506001600160a01b03861660009081526006602052604090205460ff16155b8015612f15575081155b15612f885760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610c11565b612f9287876137cf565b15613045576017546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561302e575060408051601f3d908101601f1916820190925261302b918101906145e3565b60015b61303757600080fd5b90508061304357600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061308757506001600160a01b03871660009081526007602052604090205460ff165b15613090575060005b6001600160a01b038816600090815260016020526040812080548892906130b890849061457e565b9091555060009050816130cb57866130d7565b6130d78987878a6138a4565b6001600160a01b038916600090815260016020526040812080549293508392909190613104908490614600565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161315091815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166131e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c11565b6001600160a01b0383166132615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c11565b600082116132d75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c11565b601754760100000000000000000000000000000000000000000000900460ff166133435760405162461bcd60e51b815260206004820152601c60248201527f4c50206d75737420666972737420626520696e7469616c697a65642e000000006044820152606401610c11565b6001600160a01b0384166000908152600260205260408120548190819060ff1615613371576001925061339f565b6001600160a01b03861660009081526002602052604090205460ff161561339b576001915061339f565b5060015b6133a987876137cf565b156135af5760175460ff166134005760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c11565b82806134095750815b156134cd576001600160a01b03871660009081526008602052604090205460ff1615801561345057506001600160a01b03861660009081526008602052604090205460ff16155b156134cd576015548511156134cd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c11565b600b546001600160a01b038781169116148015906134e9575081155b156135af576001600160a01b03861660009081526008602052604090205460ff166135af5760165485613531886001600160a01b031660009081526001602052604090205490565b61353b9190614600565b11156135af5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c11565b81156136465760105460ff1661364657601054610100900460ff1615613646573060009081526001602052604090205460115481106136445760125460135460ff161561362e57601454600c546001600160a01b031660009081526001602052604090205461271091613621916144d9565b61362b9190614543565b90505b808210613639578091505b61364282613970565b505b505b613654878787868686612e88565b979650505050505050565b601754610100900460ff16156136dd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c11565b6136e782826137cf565b1580156137015750600c546001600160a01b038281169116145b15612273576001600160a01b038083166000908152600560209081526040808320805460ff19908116600190811790925560079093529220805490911690911790556017805461ff00191661010017908190556201000090041661378f57601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612606565b600080546001600160a01b038481169116148015906137fc57506000546001600160a01b03838116911614155b801561381357506000546001600160a01b03163214155b801561383857506001600160a01b03821660009081526005602052604090205460ff16155b801561385d57506001600160a01b03831660009081526005602052604090205460ff16155b801561387457506001600160a01b03821661dead14155b801561388857506001600160a01b03821615155b801561389d57506001600160a01b0383163014155b9392505050565b60008084156138ba575060095461ffff166138e4565b83156138d3575060095462010000900461ffff166138e4565b50600954640100000000900461ffff165b60006127106138f383866144d9565b6138fd9190614543565b30600090815260016020526040812080549293508392909190613921908490614600565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613654818561457e565b6010805460ff191660011790556040805160a081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000009004909116608082018190526000036139e45750613ee6565b306000908152600460209081526040808320600b546001600160a01b0316845290915290205460001914613a3d57306000908152600460209081526040808320600b546001600160a01b03168452909152902060001990555b60006002826080015161ffff16836000015161ffff1685613a5e91906144d9565b613a689190614543565b613a729190614543565b90506000613a80828561457e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613aba57613aba614595565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5091906144f8565b81600181518110613b6357613b63614595565b6001600160a01b039283166020918202929092010152600b546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613bc2908590600090869030904290600401614618565b600060405180830381600087803b158015613bdc57600080fd5b505af1158015613bf0573d6000803e3d6000fd5b5047925060009150849050613c0586846144d9565b613c0f9190614543565b90508415613d0057600b546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613c9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cc39190614515565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613d0a818361457e565b9150856000015186608001818151613d229190614689565b61ffff9081169091526080880151604089015160009350839291821691613d4a9116866144d9565b613d549190614543565b90506000886080015161ffff16896060015161ffff1686613d7591906144d9565b613d7f9190614543565b90506000613d8d8284614600565b613d97908761457e565b60608b015190915061ffff1615613e0557600f546040516001600160a01b03909116906188b89084906000818181858888f193505050503d8060008114613dfa576040519150601f19603f3d011682016040523d82523d6000602084013e613dff565b606091505b50909450505b60408a015161ffff1615613e7057600e546040516001600160a01b03909116906188b89085906000818181858888f193505050503d8060008114613e65576040519150601f19603f3d011682016040523d82523d6000602084013e613e6a565b606091505b50909450505b60208a015161ffff1615613edb57600d546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114613ed0576040519150601f19603f3d011682016040523d82523d6000602084013e613ed5565b606091505b50909450505b505050505050505050505b506010805460ff19169055565b801515811461137657600080fd5b60008060408385031215613f1457600080fd5b8235613f1f81613ef3565b91506020830135613f2f81613ef3565b809150509250929050565b600060208083528351808285015260005b81811015613f6757858101830151858201604001528201613f4b565b81811115613f79576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff81168114613fa157600080fd5b919050565b60008060008060808587031215613fbc57600080fd5b613fc585613f8f565b9350613fd360208601613f8f565b9250613fe160408601613f8f565b9150613fef60608601613f8f565b905092959194509250565b6001600160a01b038116811461137657600080fd5b6000806040838503121561402257600080fd5b823561402d81613ffa565b946020939093013593505050565b60006020828403121561404d57600080fd5b5035919050565b60006020828403121561406657600080fd5b813561389d81613ffa565b60008060006060848603121561408657600080fd5b833561409181613ffa565b925060208401356140a181613ffa565b929592945050506040919091013590565b600080604083850312156140c557600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561412c5761412c6140d4565b604052919050565b600067ffffffffffffffff82111561414e5761414e6140d4565b5060051b60200190565b600082601f83011261416957600080fd5b8135602061417e61417983614134565b614103565b82815260059290921b8401810191818101908684111561419d57600080fd5b8286015b848110156141b857803583529183019183016141a1565b509695505050505050565b600080604083850312156141d657600080fd5b823567ffffffffffffffff808211156141ee57600080fd5b818501915085601f83011261420257600080fd5b8135602061421261417983614134565b82815260059290921b8401810191818101908984111561423157600080fd5b948201945b8386101561425857853561424981613ffa565b82529482019490820190614236565b9650508601359250508082111561426e57600080fd5b5061427b85828601614158565b9150509250929050565b60008060006060848603121561429a57600080fd5b6142a384613f8f565b92506142b160208501613f8f565b91506142bf60408501613f8f565b90509250925092565b600080604083850312156142db57600080fd5b8235613f1f81613ffa565b6000806000606084860312156142fb57600080fd5b833561430681613ffa565b9250602084013561431681613ffa565b9150604084013561432681613ffa565b809150509250925092565b6000806040838503121561434457600080fd5b823561434f81613ffa565b91506020830135613f2f81613ffa565b6000806000806080858703121561437557600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff8083168185168083038211156143dd576143dd614391565b01949350505050565b600181815b8085111561442157816000190482111561440757614407614391565b8085161561441457918102915b93841c93908002906143eb565b509250929050565b60008261443857506001610ea6565b8161444557506000610ea6565b816001811461445b576002811461446557614481565b6001915050610ea6565b60ff84111561447657614476614391565b50506001821b610ea6565b5060208310610133831016604e8410600b84101617156144a4575081810a610ea6565b6144ae83836143e6565b80600019048211156144c2576144c2614391565b029392505050565b600061389d60ff841683614429565b60008160001904831182151516156144f3576144f3614391565b500290565b60006020828403121561450a57600080fd5b815161389d81613ffa565b60008060006060848603121561452a57600080fd5b8351925060208401519150604084015190509250925092565b600082614579577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561459057614590614391565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81036145da576145da614391565b60010192915050565b6000602082840312156145f557600080fd5b815161389d81613ef3565b6000821982111561461357614613614391565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156146685784516001600160a01b031683529383019391830191600101614643565b50506001600160a01b03969096166060850152505050608001529392505050565b600061ffff838116908316818110156146a4576146a4614391565b03939250505056fea2646970667358221220b3bc8dde47830b063a6f6d7c0ca7df9b73537fceaf10e75a9a0f26710b62827f64736f6c634300080f0033