6080604052670de0b6b3a76400006000196200001c919062000744565b6000196200002b9190620007ab565b6006556000600855600f6009556000600a55600f600b55600a54600c55600b54600d55600c54600e55600d54600f5573a26211eb0517f3b71d190a31b07290b73c2218ce601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a26211eb0517f3b71d190a31b07290b73c2218ce601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018556000601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055503480156200019c57600080fd5b506000620001af620006da60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000264620006da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000348573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036e919062000850565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fc919062000850565b6040518363ffffffff1660e01b81526004016200041b92919062000893565b6020604051808303816000875af11580156200043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000461919062000850565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b7620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000664620006da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006cb9190620008d1565b60405180910390a350620008ee565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000751826200070b565b91506200075e836200070b565b92508262000771576200077062000715565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b8826200070b565b9150620007c5836200070b565b9250828203905081811115620007e057620007df6200077c565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081882620007eb565b9050919050565b6200082a816200080b565b81146200083657600080fd5b50565b6000815190506200084a816200081f565b92915050565b600060208284031215620008695762000868620007e6565b5b6000620008798482850162000839565b91505092915050565b6200088d816200080b565b82525050565b6000604082019050620008aa600083018562000882565b620008b9602083018462000882565b9392505050565b620008cb816200070b565b82525050565b6000602082019050620008e86000830184620008c0565b92915050565b61411180620008fe6000396000f3fe6080604052600436106101d05760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd801461066e578063c492f04614610685578063dd62ed3e146106ae578063f2fde38b146106eb576101d7565b806398a5c315146105a2578063a2a957bb146105cb578063a9059cbb146105f4578063bfd7928414610631576101d7565b80638da5cb5b116100d15780638da5cb5b146104f85780638f70ccf7146105235780638f9a55c01461054c57806395d89b4114610577576101d7565b8063715018a6146104795780637d1db4a5146104905780637f2feddc146104bb576101d7565b80632fd689e31161016f5780636b9990531161013e5780636b999053146103d35780636d8aa8f8146103fc5780636fc3eaec1461042557806370a082311461043c576101d7565b80632fd689e314610329578063313ce567146103545780634022ad8e1461037f57806349bd5a5e146103a8576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632b11a48c14610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612ecb565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612f93565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612feb565b61087b565b6040516102649190613046565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f91906130c0565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba91906130ea565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613105565b6108cf565b6040516102f79190613046565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613184565b6109a8565b005b34801561033557600080fd5b5061033e610a62565b60405161034b91906130ea565b60405180910390f35b34801561036057600080fd5b50610369610a68565b60405161037691906131e0565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190613184565b610a71565b005b3480156103b457600080fd5b506103bd610b2b565b6040516103ca919061320a565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190613225565b610b51565b005b34801561040857600080fd5b50610423600480360381019061041e9190613252565b610c41565b005b34801561043157600080fd5b5061043a610cf3565b005b34801561044857600080fd5b50610463600480360381019061045e9190613225565b610dc4565b60405161047091906130ea565b60405180910390f35b34801561048557600080fd5b5061048e610e15565b005b34801561049c57600080fd5b506104a5610f68565b6040516104b291906130ea565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613225565b610f6e565b6040516104ef91906130ea565b60405180910390f35b34801561050457600080fd5b5061050d610f86565b60405161051a919061320a565b60405180910390f35b34801561052f57600080fd5b5061054a60048036038101906105459190613252565b610faf565b005b34801561055857600080fd5b50610561611061565b60405161056e91906130ea565b60405180910390f35b34801561058357600080fd5b5061058c611067565b6040516105999190612f93565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c4919061327f565b6110a4565b005b3480156105d757600080fd5b506105f260048036038101906105ed91906132ac565b611143565b005b34801561060057600080fd5b5061061b60048036038101906106169190612feb565b61133e565b6040516106289190613046565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190613225565b61135c565b6040516106659190613046565b60405180910390f35b34801561067a57600080fd5b5061068361137c565b005b34801561069157600080fd5b506106ac60048036038101906106a7919061336e565b611455565b005b3480156106ba57600080fd5b506106d560048036038101906106d091906133ce565b61158f565b6040516106e291906130ea565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190613225565b611616565b005b61071c6117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a09061345a565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd61347a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906134d8565b9150506107ac565b5050565b60606040518060400160405280600d81526020017f53686164696c6179205065706500000000000000000000000000000000000000815250905090565b600061088f6108886117d7565b84846117df565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108dc8484846119a8565b61099d846108e86117d7565b610998856040518060600160405280602881526020016140b460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e6117d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222b9092919063ffffffff16565b6117df565b600190509392505050565b6109b06117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a349061345a565b60405180910390fd5b8160178190555080601960016101000a81548160ff0219169083151502179055505050565b60185481565b60006009905090565b610a796117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd9061345a565b60405180910390fd5b8160168190555080601960006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b596117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd9061345a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c496117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd9061345a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d346117d7565b73ffffffffffffffffffffffffffffffffffffffff161480610daa5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d926117d7565b73ffffffffffffffffffffffffffffffffffffffff16145b610db357600080fd5b6000479050610dc18161228f565b50565b6000610e0e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122fb565b9050919050565b610e1d6117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea19061345a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fb76117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b9061345a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f5045504500000000000000000000000000000000000000000000000000000000815250905090565b6110ac6117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061345a565b60405180910390fd5b8060188190555050565b61114b6117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf9061345a565b60405180910390fd5b600084101580156111ea575060048411155b611229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122090613592565b60405180910390fd5b6000821015801561123b5750605f8211155b61127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127190613624565b60405180910390fd5b6000831015801561128c575060048311155b6112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c2906136b6565b60405180910390fd5b600081101580156112dd5750605f8111155b61131c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131390613748565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061135261134b6117d7565b84846119a8565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113bd6117d7565b73ffffffffffffffffffffffffffffffffffffffff1614806114335750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661141b6117d7565b73ffffffffffffffffffffffffffffffffffffffff16145b61143c57600080fd5b600061144730610dc4565b905061145281612369565b50565b61145d6117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e19061345a565b60405180910390fd5b60005b838390508110156115895781600560008686858181106115105761150f61347a565b5b90506020020160208101906115259190613225565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611581906134d8565b9150506114ed565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61161e6117d7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a29061345a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361171a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611711906137da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118459061386c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b4906138fe565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161199b91906130ea565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e90613990565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7d906139fc565b60405180910390fd5b60008111611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac090613a68565b60405180910390fd5b611ad1610f86565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b3f5750611b0f610f86565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f2a57601560149054906101000a900460ff16611bce57611b60610f86565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613afa565b60405180910390fd5b5b601654811115611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90613b66565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cb75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613bd2565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611da35760175481611d5884610dc4565b611d629190613bf2565b10611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9990613c98565b60405180910390fd5b5b6000611dae30610dc4565b9050600060185482101590506016548210611dc95760165491505b808015611de1575060158054906101000a900460ff16155b8015611e3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e535750601560169054906101000a900460ff165b8015611ea95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eff5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f2757611f0d82612369565b60004790506000811115611f2557611f244761228f565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fd15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120925760009050612219565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561213d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561215557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561221857600a54600c81905550600b54600d819055505b5b612225848484846125e0565b50505050565b6000838311158290612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a9190612f93565b60405180910390fd5b50600083856122829190613cb8565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122f7573d6000803e3d6000fd5b5050565b6000600654821115612342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233990613d5e565b60405180910390fd5b600061234c61260d565b9050612361818461263890919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123a05761239f612d2a565b5b6040519080825280602002602001820160405280156123ce5781602001602082028036833780820191505090505b50905030816000815181106123e6576123e561347a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b19190613d93565b816001815181106124c5576124c461347a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061252c30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117df565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612590959493929190613eb9565b600060405180830381600087803b1580156125aa57600080fd5b505af11580156125be573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806125ee576125ed612682565b5b6125f98484846126bf565b806126075761260661288a565b5b50505050565b600080600061261a61289e565b91509150612631818361263890919063ffffffff16565b9250505090565b600061267a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128fd565b905092915050565b6000600c5414801561269657506000600d54145b6126bd57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806126d187612960565b95509550955095509550955061272f86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061281081612a70565b61281a8483612b2d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161287791906130ea565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506128d2670de0b6b3a764000060065461263890919063ffffffff16565b8210156128f057600654670de0b6b3a76400009350935050506128f9565b81819350935050505b9091565b60008083118290612944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293b9190612f93565b60405180910390fd5b50600083856129539190613f42565b9050809150509392505050565b600080600080600080600080600061297d8a600c54600d54612b67565b925092509250600061298d61260d565b905060008060006129a08e878787612bfd565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a0a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061222b565b905092915050565b6000808284612a219190613bf2565b905083811015612a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5d90613fbf565b60405180910390fd5b8091505092915050565b6000612a7a61260d565b90506000612a918284612c8690919063ffffffff16565b9050612ae581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b42826006546129c890919063ffffffff16565b600681905550612b5d81600754612a1290919063ffffffff16565b6007819055505050565b600080600080612b936064612b85888a612c8690919063ffffffff16565b61263890919063ffffffff16565b90506000612bbd6064612baf888b612c8690919063ffffffff16565b61263890919063ffffffff16565b90506000612be682612bd8858c6129c890919063ffffffff16565b6129c890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c168589612c8690919063ffffffff16565b90506000612c2d8689612c8690919063ffffffff16565b90506000612c448789612c8690919063ffffffff16565b90506000612c6d82612c5f85876129c890919063ffffffff16565b6129c890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612c985760009050612cfa565b60008284612ca69190613fdf565b9050828482612cb59190613f42565b14612cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cec90614093565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d6282612d19565b810181811067ffffffffffffffff82111715612d8157612d80612d2a565b5b80604052505050565b6000612d94612d00565b9050612da08282612d59565b919050565b600067ffffffffffffffff821115612dc057612dbf612d2a565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e0182612dd6565b9050919050565b612e1181612df6565b8114612e1c57600080fd5b50565b600081359050612e2e81612e08565b92915050565b6000612e47612e4284612da5565b612d8a565b90508083825260208201905060208402830185811115612e6a57612e69612dd1565b5b835b81811015612e935780612e7f8882612e1f565b845260208401935050602081019050612e6c565b5050509392505050565b600082601f830112612eb257612eb1612d14565b5b8135612ec2848260208601612e34565b91505092915050565b600060208284031215612ee157612ee0612d0a565b5b600082013567ffffffffffffffff811115612eff57612efe612d0f565b5b612f0b84828501612e9d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f4e578082015181840152602081019050612f33565b60008484015250505050565b6000612f6582612f14565b612f6f8185612f1f565b9350612f7f818560208601612f30565b612f8881612d19565b840191505092915050565b60006020820190508181036000830152612fad8184612f5a565b905092915050565b6000819050919050565b612fc881612fb5565b8114612fd357600080fd5b50565b600081359050612fe581612fbf565b92915050565b6000806040838503121561300257613001612d0a565b5b600061301085828601612e1f565b925050602061302185828601612fd6565b9150509250929050565b60008115159050919050565b6130408161302b565b82525050565b600060208201905061305b6000830184613037565b92915050565b6000819050919050565b600061308661308161307c84612dd6565b613061565b612dd6565b9050919050565b60006130988261306b565b9050919050565b60006130aa8261308d565b9050919050565b6130ba8161309f565b82525050565b60006020820190506130d560008301846130b1565b92915050565b6130e481612fb5565b82525050565b60006020820190506130ff60008301846130db565b92915050565b60008060006060848603121561311e5761311d612d0a565b5b600061312c86828701612e1f565b935050602061313d86828701612e1f565b925050604061314e86828701612fd6565b9150509250925092565b6131618161302b565b811461316c57600080fd5b50565b60008135905061317e81613158565b92915050565b6000806040838503121561319b5761319a612d0a565b5b60006131a985828601612fd6565b92505060206131ba8582860161316f565b9150509250929050565b600060ff82169050919050565b6131da816131c4565b82525050565b60006020820190506131f560008301846131d1565b92915050565b61320481612df6565b82525050565b600060208201905061321f60008301846131fb565b92915050565b60006020828403121561323b5761323a612d0a565b5b600061324984828501612e1f565b91505092915050565b60006020828403121561326857613267612d0a565b5b60006132768482850161316f565b91505092915050565b60006020828403121561329557613294612d0a565b5b60006132a384828501612fd6565b91505092915050565b600080600080608085870312156132c6576132c5612d0a565b5b60006132d487828801612fd6565b94505060206132e587828801612fd6565b93505060406132f687828801612fd6565b925050606061330787828801612fd6565b91505092959194509250565b600080fd5b60008083601f84011261332e5761332d612d14565b5b8235905067ffffffffffffffff81111561334b5761334a613313565b5b60208301915083602082028301111561336757613366612dd1565b5b9250929050565b60008060006040848603121561338757613386612d0a565b5b600084013567ffffffffffffffff8111156133a5576133a4612d0f565b5b6133b186828701613318565b935093505060206133c48682870161316f565b9150509250925092565b600080604083850312156133e5576133e4612d0a565b5b60006133f385828601612e1f565b925050602061340485828601612e1f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613444602083612f1f565b915061344f8261340e565b602082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134e382612fb5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613515576135146134a9565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b600061357c602583612f1f565b915061358782613520565b604082019050919050565b600060208201905081810360008301526135ab8161356f565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b600061360e602283612f1f565b9150613619826135b2565b604082019050919050565b6000602082019050818103600083015261363d81613601565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b60006136a0602683612f1f565b91506136ab82613644565b604082019050919050565b600060208201905081810360008301526136cf81613693565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b6000613732602383612f1f565b915061373d826136d6565b604082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137c4602683612f1f565b91506137cf82613768565b604082019050919050565b600060208201905081810360008301526137f3816137b7565b9050919050565b7f417070726f76616c206e6f7420616c6c6f7765642066726f6d207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613856602683612f1f565b9150613861826137fa565b604082019050919050565b6000602082019050818103600083015261388581613849565b9050919050565b7f417070726f76616c206e6f7420616c6c6f77656420746f207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138e8602483612f1f565b91506138f38261388c565b604082019050919050565b60006020820190508181036000830152613917816138db565b9050919050565b7f43616e6e6f74207472616e736665722066726f6d2061646472657373207a657260008201527f6f00000000000000000000000000000000000000000000000000000000000000602082015250565b600061397a602183612f1f565b91506139858261391e565b604082019050919050565b600060208201905081810360008301526139a98161396d565b9050919050565b7f43616e6e6f74207472616e7366657220746f2061646472657373207a65726f00600082015250565b60006139e6601f83612f1f565b91506139f1826139b0565b602082019050919050565b60006020820190508181036000830152613a15816139d9565b9050919050565b7f416d6f756e74206d7573742062652061626f7665207a65726f00000000000000600082015250565b6000613a52601983612f1f565b9150613a5d82613a1c565b602082019050919050565b60006020820190508181036000830152613a8181613a45565b9050919050565b7f4f6e6c79206f776e65722063616e20696e697469617465207472616e7366657260008201527f73206265666f72652074726164696e672061637469766174696f6e0000000000602082015250565b6000613ae4603b83612f1f565b9150613aef82613a88565b604082019050919050565b60006020820190508181036000830152613b1381613ad7565b9050919050565b7f45786365656473206d6178207472616e73616374696f6e206c696d6974000000600082015250565b6000613b50601d83612f1f565b9150613b5b82613b1a565b602082019050919050565b60006020820190508181036000830152613b7f81613b43565b9050919050565b7f4163636f756e74206973206f6e2074686520626c61636b6c6973740000000000600082015250565b6000613bbc601b83612f1f565b9150613bc782613b86565b602082019050919050565b60006020820190508181036000830152613beb81613baf565b9050919050565b6000613bfd82612fb5565b9150613c0883612fb5565b9250828201905080821115613c2057613c1f6134a9565b5b92915050565b7f457863656564696e67206d6178696d756d20616c6c6f7765642077616c6c657460008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c82602883612f1f565b9150613c8d82613c26565b604082019050919050565b60006020820190508181036000830152613cb181613c75565b9050919050565b6000613cc382612fb5565b9150613cce83612fb5565b9250828203905081811115613ce657613ce56134a9565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d48602a83612f1f565b9150613d5382613cec565b604082019050919050565b60006020820190508181036000830152613d7781613d3b565b9050919050565b600081519050613d8d81612e08565b92915050565b600060208284031215613da957613da8612d0a565b5b6000613db784828501613d7e565b91505092915050565b6000819050919050565b6000613de5613de0613ddb84613dc0565b613061565b612fb5565b9050919050565b613df581613dca565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e3081612df6565b82525050565b6000613e428383613e27565b60208301905092915050565b6000602082019050919050565b6000613e6682613dfb565b613e708185613e06565b9350613e7b83613e17565b8060005b83811015613eac578151613e938882613e36565b9750613e9e83613e4e565b925050600181019050613e7f565b5085935050505092915050565b600060a082019050613ece60008301886130db565b613edb6020830187613dec565b8181036040830152613eed8186613e5b565b9050613efc60608301856131fb565b613f0960808301846130db565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f4d82612fb5565b9150613f5883612fb5565b925082613f6857613f67613f13565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613fa9601b83612f1f565b9150613fb482613f73565b602082019050919050565b60006020820190508181036000830152613fd881613f9c565b9050919050565b6000613fea82612fb5565b9150613ff583612fb5565b925082820261400381612fb5565b9150828204841483151761401a576140196134a9565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061407d602183612f1f565b915061408882614021565b604082019050919050565b600060208201905081810360008301526140ac81614070565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f0df702c601982cad321dba8fb334af6ece4fa7311efd6b34e7079cd5e211cdb64736f6c63430008120033