6080604052662386f26fc100006000196200001b91906200073a565b6000196200002a9190620007a1565b600655600060085560136009556000600a556013600b55600a54600c55600b54600d55600c54600e55600d54600f557399acee4c4520a5f78c4a1c93d70723f4651b3676601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507399acee4c4520a5f78c4a1c93d70723f4651b3676601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550662386f26fc1000060165565b5e620f4800060175564e8d4a510006018553480156200016357600080fd5b50600062000176620006d060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022b620006d060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030a57600080fd5b505afa1580156200031f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000345919062000846565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a857600080fd5b505afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e3919062000846565b6040518363ffffffff1660e01b81526004016200040292919062000889565b602060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000458919062000846565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004ae620006d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065b620006d060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc10000604051620006c19190620008c7565b60405180910390a350620008e4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007478262000701565b9150620007548362000701565b9250826200076757620007666200070b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007ae8262000701565b9150620007bb8362000701565b925082821015620007d157620007d062000772565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200080e82620007e1565b9050919050565b620008208162000801565b81146200082c57600080fd5b50565b600081519050620008408162000815565b92915050565b6000602082840312156200085f576200085e620007dc565b5b60006200086f848285016200082f565b91505092915050565b620008838162000801565b82525050565b6000604082019050620008a0600083018562000878565b620008af602083018462000878565b9392505050565b620008c18162000701565b82525050565b6000602082019050620008de6000830184620008b6565b92915050565b613dec80620008f46000396000f3fe6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612d4b565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612e1c565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e74565b61087b565b6040516102649190612ecf565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612f49565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190612f73565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f8e565b6108ce565b6040516102f79190612ecf565b60405180910390f35b34801561030c57600080fd5b506103156109a7565b6040516103229190612f73565b60405180910390f35b34801561033757600080fd5b506103406109ad565b60405161034d9190612ffd565b60405180910390f35b34801561036257600080fd5b5061036b6109b6565b6040516103789190613027565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190613042565b6109dc565b005b3480156103b657600080fd5b506103d160048036038101906103cc919061309b565b610acc565b005b3480156103df57600080fd5b506103e8610b7e565b005b3480156103f657600080fd5b50610411600480360381019061040c9190613042565b610c4f565b60405161041e9190612f73565b60405180910390f35b34801561043357600080fd5b5061043c610ca0565b005b34801561044a57600080fd5b50610465600480360381019061046091906130c8565b610df3565b005b34801561047357600080fd5b5061047c610e92565b6040516104899190612f73565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190613042565b610e98565b6040516104c69190612f73565b60405180910390f35b3480156104db57600080fd5b506104e4610eb0565b6040516104f19190613027565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c919061309b565b610ed9565b005b34801561052f57600080fd5b50610538610f8b565b6040516105459190612f73565b60405180910390f35b34801561055a57600080fd5b50610563610f91565b6040516105709190612e1c565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b91906130c8565b610fb1565b005b3480156105ae57600080fd5b506105c960048036038101906105c491906130f5565b611050565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612e74565b611107565b6040516105ff9190612ecf565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613042565b611125565b60405161063c9190612ecf565b60405180910390f35b34801561065157600080fd5b5061065a611145565b005b34801561066857600080fd5b50610683600480360381019061067e91906131b7565b61121e565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613217565b611358565b6040516106b99190612f73565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906130c8565b6113df565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613042565b61147e565b005b61071c611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906132a3565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd6132c3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061083290613321565b9150506107ac565b5050565b60606040518060400160405280601681526020017f426f726564204c656e6e7920596163687420436c756200000000000000000000815250905090565b600061088f610888611640565b8484611648565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b60006108db848484611813565b61099c846108e7611640565b61099785604051806060016040528060288152602001613d8f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094d611640565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120989092919063ffffffff16565b611648565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e4611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a68906132a3565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad4611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58906132a3565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bbf611640565b73ffffffffffffffffffffffffffffffffffffffff161480610c355750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1d611640565b73ffffffffffffffffffffffffffffffffffffffff16145b610c3e57600080fd5b6000479050610c4c816120fc565b50565b6000610c99600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612168565b9050919050565b610ca8611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c906132a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dfb611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f906132a3565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ee1611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f65906132a3565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060600160405280602d8152602001613d62602d9139905090565b610fb9611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d906132a3565b60405180910390fd5b8060188190555050565b611058611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc906132a3565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061111b611114611640565b8484611813565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611186611640565b73ffffffffffffffffffffffffffffffffffffffff1614806111fc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111e4611640565b73ffffffffffffffffffffffffffffffffffffffff16145b61120557600080fd5b600061121030610c4f565b905061121b816121d6565b50565b611226611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa906132a3565b60405180910390fd5b60005b838390508110156113525781600560008686858181106112d9576112d86132c3565b5b90506020020160208101906112ee9190613042565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061134a90613321565b9150506112b6565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e7611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b906132a3565b60405180910390fd5b8060178190555050565b611486611640565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906132a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a906133dc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af9061346e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90613500565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118069190612f73565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a90613592565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90613624565b60405180910390fd5b60008111611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d906136b6565b60405180910390fd5b61193e610eb0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ac575061197c610eb0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d9757601560149054906101000a900460ff16611a3b576119cd610eb0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613748565b60405180910390fd5b5b601654811115611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a77906137b4565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b245750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5a90613846565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c105760175481611bc584610c4f565b611bcf9190613866565b10611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c069061392e565b60405180910390fd5b5b6000611c1b30610c4f565b9050600060185482101590506016548210611c365760165491505b808015611c4e575060158054906101000a900460ff16155b8015611ca85750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc05750601560169054906101000a900460ff165b8015611d165750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d6c5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d9457611d7a826121d6565b60004790506000811115611d9257611d91476120fc565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e3e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ef15750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ef05750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611eff5760009050612086565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611faa5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fc257600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561206d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561208557600a54600c81905550600b54600d819055505b5b6120928484848461245c565b50505050565b60008383111582906120e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d79190612e1c565b60405180910390fd5b50600083856120ef919061394e565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612164573d6000803e3d6000fd5b5050565b60006006548211156121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a6906139f4565b60405180910390fd5b60006121b9612489565b90506121ce81846124b490919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561220d5761220c612baa565b5b60405190808252806020026020018201604052801561223b5781602001602082028036833780820191505090505b5090503081600081518110612253576122526132c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122f557600080fd5b505afa158015612309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232d9190613a29565b81600181518110612341576123406132c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123a830601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611648565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161240c959493929190613b4f565b600060405180830381600087803b15801561242657600080fd5b505af115801561243a573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061246a576124696124fe565b5b612475848484612541565b806124835761248261270c565b5b50505050565b6000806000612496612720565b915091506124ad81836124b490919063ffffffff16565b9250505090565b60006124f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061277c565b905092915050565b6000600c5414801561251257506000600d54145b1561251c5761253f565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612553876127df565b9550955095509550955095506125b186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612692816128ef565b61269c84836129ac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126f99190612f73565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000662386f26fc100009050612752662386f26fc100006006546124b490919063ffffffff16565b82101561276f57600654662386f26fc10000935093505050612778565b81819350935050505b9091565b600080831182906127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba9190612e1c565b60405180910390fd5b50600083856127d29190613bd8565b9050809150509392505050565b60008060008060008060008060006127fc8a600c54600d546129e6565b925092509250600061280c612489565b9050600080600061281f8e878787612a7c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061288983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612098565b905092915050565b60008082846128a09190613866565b9050838110156128e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dc90613c55565b60405180910390fd5b8091505092915050565b60006128f9612489565b905060006129108284612b0590919063ffffffff16565b905061296481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129c18260065461284790919063ffffffff16565b6006819055506129dc8160075461289190919063ffffffff16565b6007819055505050565b600080600080612a126064612a04888a612b0590919063ffffffff16565b6124b490919063ffffffff16565b90506000612a3c6064612a2e888b612b0590919063ffffffff16565b6124b490919063ffffffff16565b90506000612a6582612a57858c61284790919063ffffffff16565b61284790919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a958589612b0590919063ffffffff16565b90506000612aac8689612b0590919063ffffffff16565b90506000612ac38789612b0590919063ffffffff16565b90506000612aec82612ade858761284790919063ffffffff16565b61284790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612b185760009050612b7a565b60008284612b269190613c75565b9050828482612b359190613bd8565b14612b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6c90613d41565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612be282612b99565b810181811067ffffffffffffffff82111715612c0157612c00612baa565b5b80604052505050565b6000612c14612b80565b9050612c208282612bd9565b919050565b600067ffffffffffffffff821115612c4057612c3f612baa565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c8182612c56565b9050919050565b612c9181612c76565b8114612c9c57600080fd5b50565b600081359050612cae81612c88565b92915050565b6000612cc7612cc284612c25565b612c0a565b90508083825260208201905060208402830185811115612cea57612ce9612c51565b5b835b81811015612d135780612cff8882612c9f565b845260208401935050602081019050612cec565b5050509392505050565b600082601f830112612d3257612d31612b94565b5b8135612d42848260208601612cb4565b91505092915050565b600060208284031215612d6157612d60612b8a565b5b600082013567ffffffffffffffff811115612d7f57612d7e612b8f565b5b612d8b84828501612d1d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dce578082015181840152602081019050612db3565b83811115612ddd576000848401525b50505050565b6000612dee82612d94565b612df88185612d9f565b9350612e08818560208601612db0565b612e1181612b99565b840191505092915050565b60006020820190508181036000830152612e368184612de3565b905092915050565b6000819050919050565b612e5181612e3e565b8114612e5c57600080fd5b50565b600081359050612e6e81612e48565b92915050565b60008060408385031215612e8b57612e8a612b8a565b5b6000612e9985828601612c9f565b9250506020612eaa85828601612e5f565b9150509250929050565b60008115159050919050565b612ec981612eb4565b82525050565b6000602082019050612ee46000830184612ec0565b92915050565b6000819050919050565b6000612f0f612f0a612f0584612c56565b612eea565b612c56565b9050919050565b6000612f2182612ef4565b9050919050565b6000612f3382612f16565b9050919050565b612f4381612f28565b82525050565b6000602082019050612f5e6000830184612f3a565b92915050565b612f6d81612e3e565b82525050565b6000602082019050612f886000830184612f64565b92915050565b600080600060608486031215612fa757612fa6612b8a565b5b6000612fb586828701612c9f565b9350506020612fc686828701612c9f565b9250506040612fd786828701612e5f565b9150509250925092565b600060ff82169050919050565b612ff781612fe1565b82525050565b60006020820190506130126000830184612fee565b92915050565b61302181612c76565b82525050565b600060208201905061303c6000830184613018565b92915050565b60006020828403121561305857613057612b8a565b5b600061306684828501612c9f565b91505092915050565b61307881612eb4565b811461308357600080fd5b50565b6000813590506130958161306f565b92915050565b6000602082840312156130b1576130b0612b8a565b5b60006130bf84828501613086565b91505092915050565b6000602082840312156130de576130dd612b8a565b5b60006130ec84828501612e5f565b91505092915050565b6000806000806080858703121561310f5761310e612b8a565b5b600061311d87828801612e5f565b945050602061312e87828801612e5f565b935050604061313f87828801612e5f565b925050606061315087828801612e5f565b91505092959194509250565b600080fd5b60008083601f84011261317757613176612b94565b5b8235905067ffffffffffffffff8111156131945761319361315c565b5b6020830191508360208202830111156131b0576131af612c51565b5b9250929050565b6000806000604084860312156131d0576131cf612b8a565b5b600084013567ffffffffffffffff8111156131ee576131ed612b8f565b5b6131fa86828701613161565b9350935050602061320d86828701613086565b9150509250925092565b6000806040838503121561322e5761322d612b8a565b5b600061323c85828601612c9f565b925050602061324d85828601612c9f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061328d602083612d9f565b915061329882613257565b602082019050919050565b600060208201905081810360008301526132bc81613280565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061332c82612e3e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561335f5761335e6132f2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133c6602683612d9f565b91506133d18261336a565b604082019050919050565b600060208201905081810360008301526133f5816133b9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613458602483612d9f565b9150613463826133fc565b604082019050919050565b600060208201905081810360008301526134878161344b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134ea602283612d9f565b91506134f58261348e565b604082019050919050565b60006020820190508181036000830152613519816134dd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061357c602583612d9f565b915061358782613520565b604082019050919050565b600060208201905081810360008301526135ab8161356f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061360e602383612d9f565b9150613619826135b2565b604082019050919050565b6000602082019050818103600083015261363d81613601565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136a0602983612d9f565b91506136ab82613644565b604082019050919050565b600060208201905081810360008301526136cf81613693565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613732603f83612d9f565b915061373d826136d6565b604082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061379e601c83612d9f565b91506137a982613768565b602082019050919050565b600060208201905081810360008301526137cd81613791565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613830602383612d9f565b915061383b826137d4565b604082019050919050565b6000602082019050818103600083015261385f81613823565b9050919050565b600061387182612e3e565b915061387c83612e3e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138b1576138b06132f2565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613918602383612d9f565b9150613923826138bc565b604082019050919050565b600060208201905081810360008301526139478161390b565b9050919050565b600061395982612e3e565b915061396483612e3e565b925082821015613977576139766132f2565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139de602a83612d9f565b91506139e982613982565b604082019050919050565b60006020820190508181036000830152613a0d816139d1565b9050919050565b600081519050613a2381612c88565b92915050565b600060208284031215613a3f57613a3e612b8a565b5b6000613a4d84828501613a14565b91505092915050565b6000819050919050565b6000613a7b613a76613a7184613a56565b612eea565b612e3e565b9050919050565b613a8b81613a60565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ac681612c76565b82525050565b6000613ad88383613abd565b60208301905092915050565b6000602082019050919050565b6000613afc82613a91565b613b068185613a9c565b9350613b1183613aad565b8060005b83811015613b42578151613b298882613acc565b9750613b3483613ae4565b925050600181019050613b15565b5085935050505092915050565b600060a082019050613b646000830188612f64565b613b716020830187613a82565b8181036040830152613b838186613af1565b9050613b926060830185613018565b613b9f6080830184612f64565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613be382612e3e565b9150613bee83612e3e565b925082613bfe57613bfd613ba9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c3f601b83612d9f565b9150613c4a82613c09565b602082019050919050565b60006020820190508181036000830152613c6e81613c32565b9050919050565b6000613c8082612e3e565b9150613c8b83612e3e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cc457613cc36132f2565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d2b602183612d9f565b9150613d3682613ccf565b604082019050919050565b60006020820190508181036000830152613d5a81613d1e565b905091905056fef0938a9d28e297955fe297952928e0b2a55fe0b2a52928e0ba88d984cd9ce0ba882928c2ac5fc2ac29f0938a9d45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200103eabda315fc5d715a6e76170abfc316b2c735082f3d0cf104f1044931d56c64736f6c63430008090033