6101e0604052602661018081815290620041f76101a03980516200002c91600c916020909101906200038f565b503480156200003a57600080fd5b506040516200421d3803806200421d8339810160408190526200005d916200044f565b6040518060400160405280600b81526020016a1c1a5958d95bd99cda1a5d60aa1b8152506040518060400160405280600481526020016314d2125560e21b8152508160049080519060200190620000b69291906200038f565b508051620000cc9060059060208401906200038f565b5050600060025550620000df33620001bb565b620000eb8486620004f1565b63ffffffff168663ffffffff1610156200010457600080fd5b63ffffffff8316846200011887896200051c565b6200012491906200051c565b63ffffffff1610156200013657600080fd5b6040516001600160601b03193060601b16602082015242603482015260540160408051601f19818403018152919052805160209091012060805260a087905263ffffffff80871660c05285811660e052848116610100528281166101405283811661012052811661016052620001ae6102ee6200020d565b5050505050505062000581565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b031633146200026d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6200028b62000284600a546001600160a01b031690565b826200028e565b50565b6127106001600160601b0382161115620002fe5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b606482015260840162000264565b6001600160a01b038216620003565760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000264565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600055565b8280546200039d9062000544565b90600052602060002090601f016020900481019282620003c157600085556200040c565b82601f10620003dc57805160ff19168380011785556200040c565b828001600101855582156200040c579182015b828111156200040c578251825591602001919060010190620003ef565b506200041a9291506200041e565b5090565b5b808211156200041a57600081556001016200041f565b805163ffffffff811681146200044a57600080fd5b919050565b600080600080600080600060e0888a0312156200046b57600080fd5b875196506200047d6020890162000435565b95506200048d6040890162000435565b94506200049d6060890162000435565b9350620004ad6080890162000435565b9250620004bd60a0890162000435565b9150620004cd60c0890162000435565b905092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818516808303821115620005135762000513620004db565b01949350505050565b600063ffffffff838116908316818110156200053c576200053c620004db565b039392505050565b600181811c908216806200055957607f821691505b602082108114156200057b57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161016051613b9262000665600039600081816103f8015281816116e801526119e80152600081816108e1015281816116bc0152611a680152600081816105db015281816116900152818161177c0152611b2c01526000818161051401528181611664015261173301526000818161033301528181610cd901528181611577015261205f0152600081816104ac015281816115980152818161162c01526120800152600081816104e0015281816116060152611d170152600081816105a70152611bc00152613b926000f3fe6080604052600436106102e75760003560e01c806370a0823111610184578063b88d4fde116100d6578063dd48f07d1161008a578063ef6b141a11610064578063ef6b141a1461094c578063f2fde38b1461096c578063f493c25f1461098c57600080fd5b8063dd48f07d1461089a578063df6bb5af146108cf578063e985e9c51461090357600080fd5b8063c87b56dd116100bb578063c87b56dd14610850578063ccd5f6a214610870578063d4a676231461088557600080fd5b8063b88d4fde14610803578063c23dc68f1461082357600080fd5b806395d89b4111610138578063a22cb46511610112578063a22cb465146107bb578063a71bbebe146107db578063aa073907146107ee57600080fd5b806395d89b411461075957806399a2557a1461076e5780639a7cfa4f1461078e57600080fd5b8063750521f511610169578063750521f5146106ee5780638462151c1461070e5780638da5cb5b1461073b57600080fd5b806370a08231146106b9578063715018a6146106d957600080fd5b80632372bb831161023d5780633ccfd60b116101f15780635bbb2177116101cb5780635bbb21771461064c5780636352211e14610679578063653a819e1461069957600080fd5b80633ccfd60b146105fd57806342842e0e146106125780634df22a541461063257600080fd5b80632a55205a116102225780632a55205a1461055657806333c5f0761461059557806337049add146105c957600080fd5b80632372bb831461050257806323b872dd1461053657600080fd5b80630e2351e21161029f5780631a3c4b73116102795780631a3c4b731461045d57806322f4596f1461049a578063235b6ea1146104ce57600080fd5b80630e2351e2146103e657806317a5aced1461041a57806318160ddd1461043a57600080fd5b806306fdde03116102d057806306fdde031461036a578063081812fc1461038c578063095ea7b3146103c457600080fd5b806301ffc9a7146102ec5780630517431e14610321575b600080fd5b3480156102f857600080fd5b5061030c6103073660046131b5565b6109c5565b60405190151581526020015b60405180910390f35b34801561032d57600080fd5b506103557f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610318565b34801561037657600080fd5b5061037f610a6d565b6040516103189190613248565b34801561039857600080fd5b506103ac6103a736600461325b565b610aff565b6040516001600160a01b039091168152602001610318565b3480156103d057600080fd5b506103e46103df366004613290565b610b5c565b005b3480156103f257600080fd5b506103557f000000000000000000000000000000000000000000000000000000000000000081565b34801561042657600080fd5b506103e46104353660046132ce565b610c39565b34801561044657600080fd5b50600354600254035b604051908152602001610318565b34801561046957600080fd5b50600a54610355907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681565b3480156104a657600080fd5b506103557f000000000000000000000000000000000000000000000000000000000000000081565b3480156104da57600080fd5b5061044f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050e57600080fd5b506103557f000000000000000000000000000000000000000000000000000000000000000081565b34801561054257600080fd5b506103e4610551366004613301565b610d79565b34801561056257600080fd5b5061057661057136600461333d565b610d84565b604080516001600160a01b039093168352602083019190915201610318565b3480156105a157600080fd5b5061044f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d557600080fd5b506103557f000000000000000000000000000000000000000000000000000000000000000081565b34801561060957600080fd5b506103e4610e61565b34801561061e57600080fd5b506103e461062d366004613301565b610ec7565b34801561063e57600080fd5b50600b5461030c9060ff1681565b34801561065857600080fd5b5061066c6106673660046133dd565b610ee2565b6040516103189190613483565b34801561068557600080fd5b506103ac61069436600461325b565b610fc7565b3480156106a557600080fd5b506103e46106b43660046134ee565b610fd9565b3480156106c557600080fd5b5061044f6106d436600461351c565b611051565b3480156106e557600080fd5b506103e46110b9565b3480156106fa57600080fd5b506103e46107093660046135ad565b61111d565b34801561071a57600080fd5b5061072e61072936600461351c565b61118a565b60405161031891906135f6565b34801561074757600080fd5b50600a546001600160a01b03166103ac565b34801561076557600080fd5b5061037f6112fb565b34801561077a57600080fd5b5061072e61078936600461362e565b61130a565b34801561079a57600080fd5b506107ae6107a936600461351c565b611509565b6040516103189190613661565b3480156107c757600080fd5b506103e46107d6366004613775565b611818565b6103e46107e936600461379f565b6118e5565b3480156107fa57600080fd5b50610355611dd7565b34801561080f57600080fd5b506103e461081e3660046137ba565b611e13565b34801561082f57600080fd5b5061084361083e36600461325b565b611e7d565b6040516103189190613836565b34801561085c57600080fd5b5061037f61086b36600461325b565b611f56565b34801561087c57600080fd5b50610355612058565b34801561089157600080fd5b5061037f6120a4565b3480156108a657600080fd5b50600a546103559074010000000000000000000000000000000000000000900463ffffffff1681565b3480156108db57600080fd5b506103557f000000000000000000000000000000000000000000000000000000000000000081565b34801561090f57600080fd5b5061030c61091e36600461386c565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b34801561095857600080fd5b506103e4610967366004613896565b612132565b34801561097857600080fd5b506103e461098736600461351c565b6121bd565b34801561099857600080fd5b50600a54610355907801000000000000000000000000000000000000000000000000900463ffffffff1681565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a000000000000000000000000000000000000000000000000000000001480610a5857507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b80610a675750610a678261229c565b92915050565b606060048054610a7c906138b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa8906138b1565b8015610af55780601f10610aca57610100808354040283529160200191610af5565b820191906000526020600020905b815481529060010190602001808311610ad857829003601f168201915b5050505050905090565b6000610b0a8261233e565b610b40576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000908152600860205260409020546001600160a01b031690565b6000610b6782610fc7565b9050806001600160a01b0316836001600160a01b03161415610bb5576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03821614801590610bf257506001600160a01b038116600090815260096020908152604080832033845290915290205460ff16155b15610c29576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c34838383612383565b505050565b600a546001600160a01b03163314610c985760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b80600a60148282829054906101000a900463ffffffff16610cb99190613934565b92506101000a81548163ffffffff021916908363ffffffff1602179055507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16600a60149054906101000a900463ffffffff1663ffffffff161115610d655760405162461bcd60e51b815260206004820152601e60248201527f50696563654f66536869743a20457863656564206d617820737570706c7900006044820152606401610c8f565b610d75828263ffffffff166123f7565b5050565b610c34838383612411565b60008281526001602090815260408083208151808301909252546001600160a01b038116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16928201929092528291610e255750604080518082019091526000546001600160a01b03811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b602081015160009061271090610e49906bffffffffffffffffffffffff168761395c565b610e5391906139c8565b915196919550909350505050565b600a546001600160a01b03163314610ebb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c8f565b610ec533476126f2565b565b610c3483838360405180602001604052806000815250611e13565b805160609060008167ffffffffffffffff811115610f0257610f0261335f565b604051908082528060200260200182016040528015610f6b57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610f205790505b50905060005b828114610fbf57610f9a858281518110610f8d57610f8d6139dc565b6020026020010151611e7d565b828281518110610fac57610fac6139dc565b6020908102919091010152600101610f71565b509392505050565b6000610fd28261280b565b5192915050565b600a546001600160a01b031633146110335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c8f565b61104e611048600a546001600160a01b031690565b826129b2565b50565b60006001600160a01b038216611093576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b031660009081526007602052604090205467ffffffffffffffff1690565b600a546001600160a01b031633146111135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c8f565b610ec56000612add565b600a546001600160a01b031633146111775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c8f565b8051610d7590600c9060208401906130ee565b6060600080600061119a85611051565b905060008167ffffffffffffffff8111156111b7576111b761335f565b6040519080825280602002602001820160405280156111e0578160200160208202803683370190505b50604080516060810182526000808252602082018190529181018290529192505b8386146112ef57600081815260066020908152604091829020825160608101845290546001600160a01b038116825274010000000000000000000000000000000000000000810467ffffffffffffffff16928201929092527c010000000000000000000000000000000000000000000000000000000090910460ff16158015928201929092529250611292576112e7565b81516001600160a01b0316156112a757815194505b876001600160a01b0316856001600160a01b031614156112e757808387806001019850815181106112da576112da6139dc565b6020026020010181815250505b600101611201565b50909695505050505050565b606060058054610a7c906138b1565b6060818310611345576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460009080841115611357578093505b600061136287611051565b905084861015611381578585038181101561137b578091505b50611385565b5060005b60008167ffffffffffffffff8111156113a0576113a061335f565b6040519080825280602002602001820160405280156113c9578160200160208202803683370190505b509050816113dc57935061150292505050565b60006113e788611e7d565b9050600081604001516113f8575080515b885b88811415801561140a5750848714155b156114f657600081815260066020908152604091829020825160608101845290546001600160a01b038116825274010000000000000000000000000000000000000000810467ffffffffffffffff16928201929092527c010000000000000000000000000000000000000000000000000000000090910460ff16158015928201929092529350611499576114ee565b82516001600160a01b0316156114ae57825191505b8a6001600160a01b0316826001600160a01b031614156114ee57808488806001019950815181106114e1576114e16139dc565b6020026020010181815250505b6001016113fa565b50505092835250909150505b9392505050565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081018290526101808101829052906115bc7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613a0b565b600a5490915060009074010000000000000000000000000000000000000000900463ffffffff166115ec60025490565b6115f69190613a0b565b9050604051806101a001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020018363ffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020018263ffffffff168152602001600a601c9054906101000a900463ffffffff167f000000000000000000000000000000000000000000000000000000000000000061175c9190613a0b565b63ffffffff168152602001600a60189054906101000a900463ffffffff167f00000000000000000000000000000000000000000000000000000000000000006117a59190613a0b565b63ffffffff1681526020016117e6866001600160a01b031660009081526007602052604090205467ffffffffffffffff680100000000000000009091041690565b63ffffffff90811682529384169290931691909110156020830152600b5460ff16151560409092019190915292915050565b6001600160a01b03821633141561185b576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526009602090815260408083206001600160a01b0387168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600b5460ff166119375760405162461bcd60e51b815260206004820181905260248201527f50696563654f66536869743a2053616c65206973206e6f7420737461727465646044820152606401610c8f565b6000611941611dd7565b9050600061194d612058565b9050611957612058565b63ffffffff166119678385613934565b63ffffffff1611156119bb5760405162461bcd60e51b815260206004820152601e60248201527f50696563654f66536869743a20457863656564206d617820737570706c7900006044820152606401610c8f565b3360009081526007602052604090205468010000000000000000900467ffffffffffffffff1663ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611a128286613934565b63ffffffff161115611a665760405162461bcd60e51b815260206004820181905260248201527f50696563654f66536869743a204578636565642077616c6c6574206c696d69746044820152606401610c8f565b7f0000000000000000000000000000000000000000000000000000000000000000600063ffffffff8083169084161015611ad1576000611aa68484613a0b565b90508663ffffffff168163ffffffff1611611ac15780611ac3565b865b611acd9083613934565b9150505b63ffffffff8216611ae28785613934565b63ffffffff161115611d13576000611afa8388613a0b565b600a549091506000907801000000000000000000000000000000000000000000000000900463ffffffff1681611b50827f0000000000000000000000000000000000000000000000000000000000000000613a0b565b905063ffffffff811615611d0e576040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e08b901b1660348201524460388201527f000000000000000000000000000000000000000000000000000000000000000060588201526000906078016040516020818303038152906040528051906020012060001c905060005b8563ffffffff1681108015611c23575060008363ffffffff16115b15611c79578263ffffffff168a63ffffffff168361ffff16611c459190613a30565b61ffff161015611c6a57611c5a600186613934565b9450611c67600184613a0b565b92505b60109190911c90600101611c08565b5063ffffffff841615611d0c57611c908487613934565b955083600a60188282829054906101000a900463ffffffff16611cb39190613934565b82546101009290920a63ffffffff8181021990931691831602179091556040805133815291871660208301527f5bec38cfe0a4f78d8e72f6a26f9a6a807d47bd425f5c02c05ebeb08ac73a629c92500160405180910390a15b505b505050505b60007f0000000000000000000000000000000000000000000000000000000000000000611d408389613a0b565b63ffffffff16611d50919061395c565b905080341015611da25760405162461bcd60e51b815260206004820152601e60248201527f50696563654f66536869743a20496e73756666696369656e742066756e6400006044820152606401610c8f565b611db2338863ffffffff166123f7565b80341115611dce57611dce611dc78234613a44565b33906126f2565b50505050505050565b600a5460009074010000000000000000000000000000000000000000900463ffffffff16611e0460025490565b611e0e9190613a0b565b905090565b611e1e848484612411565b6001600160a01b0383163b15158015611e405750611e3e84848484612b47565b155b15611e77576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6040805160608082018352600080835260208084018290528385018290528451928301855281835282018190529281018390529091506002548310611ec25792915050565b50600082815260066020908152604091829020825160608101845290546001600160a01b038116825274010000000000000000000000000000000000000000810467ffffffffffffffff16928201929092527c010000000000000000000000000000000000000000000000000000000090910460ff161580159282019290925290611f4d5792915050565b6115028361280b565b6060611f618261233e565b611f97576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600c8054611fa6906138b1565b80601f0160208091040260200160405190810160405280929190818152602001828054611fd2906138b1565b801561201f5780601f10611ff45761010080835404028352916020019161201f565b820191906000526020600020905b81548152906001019060200180831161200257829003601f168201915b505050505090508061203084612cb1565b604051602001612041929190613a5b565b604051602081830303815290604052915050919050565b6000611e0e7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613a0b565b600c80546120b1906138b1565b80601f01602080910402602001604051908101604052809291908181526020018280546120dd906138b1565b801561212a5780601f106120ff5761010080835404028352916020019161212a565b820191906000526020600020905b81548152906001019060200180831161210d57829003601f168201915b505050505081565b600a546001600160a01b0316331461218c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c8f565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600a546001600160a01b031633146122175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c8f565b6001600160a01b0381166122935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c8f565b61104e81612add565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061232f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610a675750610a6782612de3565b600060025482108015610a675750506000908152600660205260409020547c0100000000000000000000000000000000000000000000000000000000900460ff161590565b60008281526008602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610d75828260405180602001604052806000815250612e7a565b600061241c8261280b565b9050836001600160a01b031681600001516001600160a01b03161461246d576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000336001600160a01b03861614806124a957506001600160a01b038516600090815260096020908152604080832033845290915290205460ff165b806124c45750336124b984610aff565b6001600160a01b0316145b9050806124fd576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841661253d576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61254960008487612383565b6001600160a01b03858116600090815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000080821667ffffffffffffffff9283167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831617909255898616808652838620805493841693831660019081018416949094179055898652600690945282852080547fffffffff000000000000000000000000000000000000000000000000000000001690941774010000000000000000000000000000000000000000429092169190910217835587018084529220805491939091166126a65760025482146126a6578054602086015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b804710156127425760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610c8f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461278f576040519150601f19603f3d011682016040523d82523d6000602084013e612794565b606091505b5050905080610c345760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610c8f565b60408051606081018252600080825260208201819052918101919091528160025481101561298057600081815260066020908152604091829020825160608101845290546001600160a01b038116825274010000000000000000000000000000000000000000810467ffffffffffffffff16928201929092527c010000000000000000000000000000000000000000000000000000000090910460ff1615159181018290529061297e5780516001600160a01b0316156128cc579392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260066020908152604091829020825160608101845290546001600160a01b03811680835274010000000000000000000000000000000000000000820467ffffffffffffffff16938301939093527c0100000000000000000000000000000000000000000000000000000000900460ff1615159281019290925215612979579392505050565b6128cc565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127106bffffffffffffffffffffffff82161115612a385760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152608401610c8f565b6001600160a01b038216612a8e5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610c8f565b604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff90911660209092018290527401000000000000000000000000000000000000000090910217600055565b600a80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081526000906001600160a01b0385169063150b7a0290612b95903390899088908890600401613ab2565b6020604051808303816000875af1925050508015612bee575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612beb91810190613aee565b60015b612c62573d808015612c1c576040519150601f19603f3d011682016040523d82523d6000602084013e612c21565b606091505b508051612c5a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b606081612cf157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612d1b5780612d0581613b0b565b9150612d149050600a836139c8565b9150612cf5565b60008167ffffffffffffffff811115612d3657612d3661335f565b6040519080825280601f01601f191660200182016040528015612d60576020820181803683370190505b5090505b8415612ca957612d75600183613a44565b9150612d82600a86613a30565b612d8d906030613b44565b60f81b818381518110612da257612da26139dc565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612ddc600a866139c8565b9450612d64565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a000000000000000000000000000000000000000000000000000000001480610a6757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a67565b610c3483838360016002546001600160a01b038516612ec5576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83612efc576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516600081815260076020908152604080832080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811667ffffffffffffffff8083168c018116918217680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941690921783900481168c01811690920217909155858452600690925290912080547fffffffff000000000000000000000000000000000000000000000000000000001690921774010000000000000000000000000000000000000000429092169190910217905580808501838015612ffd57506001600160a01b0387163b15155b1561309f575b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461304e6000888480600101955088612b47565b613084576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082141561300357826002541461309a57600080fd5b6130e5565b5b6040516001830192906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808214156130a0575b506002556126eb565b8280546130fa906138b1565b90600052602060002090601f01602090048101928261311c5760008555613162565b82601f1061313557805160ff1916838001178555613162565b82800160010185558215613162579182015b82811115613162578251825591602001919060010190613147565b5061316e929150613172565b5090565b5b8082111561316e5760008155600101613173565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461104e57600080fd5b6000602082840312156131c757600080fd5b813561150281613187565b60005b838110156131ed5781810151838201526020016131d5565b83811115611e775750506000910152565b600081518084526132168160208601602086016131d2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061150260208301846131fe565b60006020828403121561326d57600080fd5b5035919050565b80356001600160a01b038116811461328b57600080fd5b919050565b600080604083850312156132a357600080fd5b6132ac83613274565b946020939093013593505050565b803563ffffffff8116811461328b57600080fd5b600080604083850312156132e157600080fd5b6132ea83613274565b91506132f8602084016132ba565b90509250929050565b60008060006060848603121561331657600080fd5b61331f84613274565b925061332d60208501613274565b9150604084013590509250925092565b6000806040838503121561335057600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156133d5576133d561335f565b604052919050565b600060208083850312156133f057600080fd5b823567ffffffffffffffff8082111561340857600080fd5b818501915085601f83011261341c57600080fd5b81358181111561342e5761342e61335f565b8060051b915061343f84830161338e565b818152918301840191848101908884111561345957600080fd5b938501935b838510156134775784358252938501939085019061345e565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156112ef576134db83855180516001600160a01b0316825260208082015167ffffffffffffffff16908301526040908101511515910152565b928401926060929092019160010161349f565b60006020828403121561350057600080fd5b81356bffffffffffffffffffffffff8116811461150257600080fd5b60006020828403121561352e57600080fd5b61150282613274565b600067ffffffffffffffff8311156135515761355161335f565b61358260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160161338e565b905082815283838301111561359657600080fd5b828260208301376000602084830101529392505050565b6000602082840312156135bf57600080fd5b813567ffffffffffffffff8111156135d657600080fd5b8201601f810184136135e757600080fd5b612ca984823560208401613537565b6020808252825182820181905260009190848201906040850190845b818110156112ef57835183529284019291840191600101613612565b60008060006060848603121561364357600080fd5b61364c84613274565b95602085013595506040909401359392505050565b815181526020808301516101a08301916136829084018263ffffffff169052565b50604083015161369a604084018263ffffffff169052565b5060608301516136b2606084018263ffffffff169052565b5060808301516136ca608084018263ffffffff169052565b5060a08301516136e260a084018263ffffffff169052565b5060c08301516136fa60c084018263ffffffff169052565b5060e083015161371260e084018263ffffffff169052565b506101008381015163ffffffff9081169184019190915261012080850151821690840152610140808501519091169083015261016080840151151590830152610180928301511515929091019190915290565b8035801515811461328b57600080fd5b6000806040838503121561378857600080fd5b61379183613274565b91506132f860208401613765565b6000602082840312156137b157600080fd5b611502826132ba565b600080600080608085870312156137d057600080fd5b6137d985613274565b93506137e760208601613274565b925060408501359150606085013567ffffffffffffffff81111561380a57600080fd5b8501601f8101871361381b57600080fd5b61382a87823560208401613537565b91505092959194509250565b81516001600160a01b0316815260208083015167ffffffffffffffff169082015260408083015115159082015260608101610a67565b6000806040838503121561387f57600080fd5b61388883613274565b91506132f860208401613274565b6000602082840312156138a857600080fd5b61150282613765565b600181811c908216806138c557607f821691505b602082108114156138ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff80831681851680830382111561395357613953613905565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561399457613994613905565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826139d7576139d7613999565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600063ffffffff83811690831681811015613a2857613a28613905565b039392505050565b600082613a3f57613a3f613999565b500690565b600082821015613a5657613a56613905565b500390565b60008351613a6d8184602088016131d2565b835190830190613a818183602088016131d2565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613ae460808301846131fe565b9695505050505050565b600060208284031215613b0057600080fd5b815161150281613187565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b3d57613b3d613905565b5060010190565b60008219821115613b5757613b57613905565b50019056fea2646970667358221220b74cac44fae86d48f6ab0923789a241be6a248ca21ee28bbbe206c493893b8cd64736f6c634300080b003368747470733a2f2f6d657461646174612e70696563656f66736869742e7774662f6a736f6e2f000000000000000000000000000000000000000000000000001b9ac619e7a000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000003090000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a