6080604052670de0b6b3a76400006000196200001c91906200070f565b6000196200002b919062000776565b600655600060085560056009556000600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f557392c7e02f8ed0682afd1cba8cb8894460688e8598601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732324f2f722857ca215f17ecdf37bfd173898b69e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df820000601755662386f26fc100006018553480156200016757600080fd5b5060006200017a620006a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033991906200081b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c791906200081b565b6040518363ffffffff1660e01b8152600401620003e69291906200085e565b6020604051808303816000875af115801562000406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042c91906200081b565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000482620006ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200069691906200089c565b60405180910390a350620008b9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071c82620006d6565b91506200072983620006d6565b9250826200073c576200073b620006e0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078382620006d6565b91506200079083620006d6565b9250828203905081811115620007ab57620007aa62000747565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e382620007b6565b9050919050565b620007f581620007d6565b81146200080157600080fd5b50565b6000815190506200081581620007ea565b92915050565b600060208284031215620008345762000833620007b1565b5b6000620008448482850162000804565b91505092915050565b6200085881620007d6565b82525050565b60006040820190506200087560008301856200084d565b6200088460208301846200084d565b9392505050565b6200089681620006d6565b82525050565b6000602082019050620008b360008301846200088b565b92915050565b61418e80620008c96000396000f3fe6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e1461065c578063ea1644d514610699578063f275f64b146106c2578063f2fde38b146106eb576101d7565b8063a9059cbb146105a2578063bfd79284146105df578063c3c8cd801461061c578063c492f04614610633576101d7565b80638f9a55c0116100d15780638f9a55c0146104fa57806395d89b411461052557806398a5c31514610550578063a2a957bb14610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612f16565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612fde565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190613036565b61087b565b6040516102649190613091565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f919061310b565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190613135565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613150565b6108cf565b6040516102f79190613091565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b6040516103229190613135565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d91906131bf565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b60405161037891906131e9565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190613204565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc919061325d565b610acd565b005b3480156103df57600080fd5b506103e8610b7f565b005b3480156103f657600080fd5b50610411600480360381019061040c9190613204565b610c50565b60405161041e9190613135565b60405180910390f35b34801561043357600080fd5b5061043c610ca1565b005b34801561044a57600080fd5b506104656004803603810190610460919061328a565b610df4565b005b34801561047357600080fd5b5061047c610e93565b6040516104899190613135565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190613204565b610e99565b6040516104c69190613135565b60405180910390f35b3480156104db57600080fd5b506104e4610eb1565b6040516104f191906131e9565b60405180910390f35b34801561050657600080fd5b5061050f610eda565b60405161051c9190613135565b60405180910390f35b34801561053157600080fd5b5061053a610ee0565b6040516105479190612fde565b60405180910390f35b34801561055c57600080fd5b506105776004803603810190610572919061328a565b610f1d565b005b34801561058557600080fd5b506105a0600480360381019061059b91906132b7565b610fbc565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613036565b6111b7565b6040516105d69190613091565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190613204565b6111d5565b6040516106139190613091565b60405180910390f35b34801561062857600080fd5b506106316111f5565b005b34801561063f57600080fd5b5061065a60048036038101906106559190613379565b6112ce565b005b34801561066857600080fd5b50610683600480360381019061067e91906133d9565b611408565b6040516106909190613135565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb919061328a565b61148f565b005b3480156106ce57600080fd5b506106e960048036038101906106e4919061325d565b61152e565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613204565b6115e0565b005b61071c6117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613465565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd613485565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906134e3565b9150506107ac565b5050565b60606040518060400160405280600781526020017f546f77656c696500000000000000000000000000000000000000000000000000815250905090565b600061088f6108886117a1565b84846117a9565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108dc848484611972565b61099d846108e86117a1565b6109988560405180606001604052806028815260200161413160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e6117a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f59092919063ffffffff16565b6117a9565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e56117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6990613465565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad56117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5990613465565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc06117a1565b73ffffffffffffffffffffffffffffffffffffffff161480610c365750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1e6117a1565b73ffffffffffffffffffffffffffffffffffffffff16145b610c3f57600080fd5b6000479050610c4d81612259565b50565b6000610c9a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612346565b9050919050565b610ca96117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90613465565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dfc6117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090613465565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f546f77656c690000000000000000000000000000000000000000000000000000815250905090565b610f256117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990613465565b60405180910390fd5b8060188190555050565b610fc46117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890613465565b60405180910390fd5b60008410158015611063575060048411155b6110a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110999061359d565b60405180910390fd5b600082101580156110b4575060628211155b6110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea9061362f565b60405180910390fd5b60008310158015611105575060048311155b611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b906136c1565b60405180910390fd5b60008110158015611156575060628111155b611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90613753565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006111cb6111c46117a1565b8484611972565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112366117a1565b73ffffffffffffffffffffffffffffffffffffffff1614806112ac5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112946117a1565b73ffffffffffffffffffffffffffffffffffffffff16145b6112b557600080fd5b60006112c030610c50565b90506112cb816123b4565b50565b6112d66117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a90613465565b60405180910390fd5b60005b8383905081101561140257816005600086868581811061138957611388613485565b5b905060200201602081019061139e9190613204565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113fa906134e3565b915050611366565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114976117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613465565b60405180910390fd5b8060178190555050565b6115366117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90613465565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6115e86117a1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90613465565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db906137e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90613877565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e90613909565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119659190613135565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d89061399b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790613a2d565b60405180910390fd5b60008111611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90613abf565b60405180910390fd5b611a9b610eb1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b095750611ad9610eb1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ef457601560149054906101000a900460ff16611b9857611b2a610eb1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e90613b51565b60405180910390fd5b5b601654811115611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490613bbd565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c815750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790613c4f565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d6d5760175481611d2284610c50565b611d2c9190613c6f565b10611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6390613d15565b60405180910390fd5b5b6000611d7830610c50565b9050600060185482101590506018548210611d935760185491505b808015611dab575060158054906101000a900460ff16155b8015611e055750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e1d5750601560169054906101000a900460ff165b8015611e735750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ef157611ed7826123b4565b60004790506000811115611eef57611eee47612259565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f9b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061204e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561204d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561205c57600090506121e3565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121075750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561211f57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121ca5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121e257600a54600c81905550600b54600d819055505b5b6121ef8484848461262b565b50505050565b600083831115829061223d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122349190612fde565b60405180910390fd5b506000838561224c9190613d35565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6002836122a29190613d98565b9081150290604051600060405180830381858888f193505050501580156122cd573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6002836123179190613d98565b9081150290604051600060405180830381858888f19350505050158015612342573d6000803e3d6000fd5b5050565b600060065482111561238d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238490613e3b565b60405180910390fd5b6000612397612658565b90506123ac818461268390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123eb576123ea612d75565b5b6040519080825280602002602001820160405280156124195781602001602082028036833780820191505090505b509050308160008151811061243157612430613485565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fc9190613e70565b816001815181106125105761250f613485565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a9565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125db959493929190613f96565b600060405180830381600087803b1580156125f557600080fd5b505af1158015612609573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612639576126386126cd565b5b61264484848461270a565b80612652576126516128d5565b5b50505050565b60008060006126656128e9565b9150915061267c818361268390919063ffffffff16565b9250505090565b60006126c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612948565b905092915050565b6000600c541480156126e157506000600d54145b61270857600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061271c876129ab565b95509550955095509550955061277a86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061280f85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285b81612abb565b6128658483612b78565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128c29190613135565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061291d670de0b6b3a764000060065461268390919063ffffffff16565b82101561293b57600654670de0b6b3a7640000935093505050612944565b81819350935050505b9091565b6000808311829061298f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129869190612fde565b60405180910390fd5b506000838561299e9190613d98565b9050809150509392505050565b60008060008060008060008060006129c88a600c54600d54612bb2565b92509250925060006129d8612658565b905060008060006129eb8e878787612c48565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a5583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121f5565b905092915050565b6000808284612a6c9190613c6f565b905083811015612ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa89061403c565b60405180910390fd5b8091505092915050565b6000612ac5612658565b90506000612adc8284612cd190919063ffffffff16565b9050612b3081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b8d82600654612a1390919063ffffffff16565b600681905550612ba881600754612a5d90919063ffffffff16565b6007819055505050565b600080600080612bde6064612bd0888a612cd190919063ffffffff16565b61268390919063ffffffff16565b90506000612c086064612bfa888b612cd190919063ffffffff16565b61268390919063ffffffff16565b90506000612c3182612c23858c612a1390919063ffffffff16565b612a1390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c618589612cd190919063ffffffff16565b90506000612c788689612cd190919063ffffffff16565b90506000612c8f8789612cd190919063ffffffff16565b90506000612cb882612caa8587612a1390919063ffffffff16565b612a1390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612ce35760009050612d45565b60008284612cf1919061405c565b9050828482612d009190613d98565b14612d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3790614110565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dad82612d64565b810181811067ffffffffffffffff82111715612dcc57612dcb612d75565b5b80604052505050565b6000612ddf612d4b565b9050612deb8282612da4565b919050565b600067ffffffffffffffff821115612e0b57612e0a612d75565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e4c82612e21565b9050919050565b612e5c81612e41565b8114612e6757600080fd5b50565b600081359050612e7981612e53565b92915050565b6000612e92612e8d84612df0565b612dd5565b90508083825260208201905060208402830185811115612eb557612eb4612e1c565b5b835b81811015612ede5780612eca8882612e6a565b845260208401935050602081019050612eb7565b5050509392505050565b600082601f830112612efd57612efc612d5f565b5b8135612f0d848260208601612e7f565b91505092915050565b600060208284031215612f2c57612f2b612d55565b5b600082013567ffffffffffffffff811115612f4a57612f49612d5a565b5b612f5684828501612ee8565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f99578082015181840152602081019050612f7e565b60008484015250505050565b6000612fb082612f5f565b612fba8185612f6a565b9350612fca818560208601612f7b565b612fd381612d64565b840191505092915050565b60006020820190508181036000830152612ff88184612fa5565b905092915050565b6000819050919050565b61301381613000565b811461301e57600080fd5b50565b6000813590506130308161300a565b92915050565b6000806040838503121561304d5761304c612d55565b5b600061305b85828601612e6a565b925050602061306c85828601613021565b9150509250929050565b60008115159050919050565b61308b81613076565b82525050565b60006020820190506130a66000830184613082565b92915050565b6000819050919050565b60006130d16130cc6130c784612e21565b6130ac565b612e21565b9050919050565b60006130e3826130b6565b9050919050565b60006130f5826130d8565b9050919050565b613105816130ea565b82525050565b600060208201905061312060008301846130fc565b92915050565b61312f81613000565b82525050565b600060208201905061314a6000830184613126565b92915050565b60008060006060848603121561316957613168612d55565b5b600061317786828701612e6a565b935050602061318886828701612e6a565b925050604061319986828701613021565b9150509250925092565b600060ff82169050919050565b6131b9816131a3565b82525050565b60006020820190506131d460008301846131b0565b92915050565b6131e381612e41565b82525050565b60006020820190506131fe60008301846131da565b92915050565b60006020828403121561321a57613219612d55565b5b600061322884828501612e6a565b91505092915050565b61323a81613076565b811461324557600080fd5b50565b60008135905061325781613231565b92915050565b60006020828403121561327357613272612d55565b5b600061328184828501613248565b91505092915050565b6000602082840312156132a05761329f612d55565b5b60006132ae84828501613021565b91505092915050565b600080600080608085870312156132d1576132d0612d55565b5b60006132df87828801613021565b94505060206132f087828801613021565b935050604061330187828801613021565b925050606061331287828801613021565b91505092959194509250565b600080fd5b60008083601f84011261333957613338612d5f565b5b8235905067ffffffffffffffff8111156133565761335561331e565b5b60208301915083602082028301111561337257613371612e1c565b5b9250929050565b60008060006040848603121561339257613391612d55565b5b600084013567ffffffffffffffff8111156133b0576133af612d5a565b5b6133bc86828701613323565b935093505060206133cf86828701613248565b9150509250925092565b600080604083850312156133f0576133ef612d55565b5b60006133fe85828601612e6a565b925050602061340f85828601612e6a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061344f602083612f6a565b915061345a82613419565b602082019050919050565b6000602082019050818103600083015261347e81613442565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134ee82613000565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135205761351f6134b4565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613587602583612f6a565b91506135928261352b565b604082019050919050565b600060208201905081810360008301526135b68161357a565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3825000000000000000000000000000000000000000000000000000000000000602082015250565b6000613619602283612f6a565b9150613624826135bd565b604082019050919050565b600060208201905081810360008301526136488161360c565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b60006136ab602683612f6a565b91506136b68261364f565b604082019050919050565b600060208201905081810360008301526136da8161369e565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3938250000000000000000000000000000000000000000000000000000000000602082015250565b600061373d602383612f6a565b9150613748826136e1565b604082019050919050565b6000602082019050818103600083015261376c81613730565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137cf602683612f6a565b91506137da82613773565b604082019050919050565b600060208201905081810360008301526137fe816137c2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613861602483612f6a565b915061386c82613805565b604082019050919050565b6000602082019050818103600083015261389081613854565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138f3602283612f6a565b91506138fe82613897565b604082019050919050565b60006020820190508181036000830152613922816138e6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613985602583612f6a565b915061399082613929565b604082019050919050565b600060208201905081810360008301526139b481613978565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a17602383612f6a565b9150613a22826139bb565b604082019050919050565b60006020820190508181036000830152613a4681613a0a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613aa9602983612f6a565b9150613ab482613a4d565b604082019050919050565b60006020820190508181036000830152613ad881613a9c565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613b3b603f83612f6a565b9150613b4682613adf565b604082019050919050565b60006020820190508181036000830152613b6a81613b2e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613ba7601c83612f6a565b9150613bb282613b71565b602082019050919050565b60006020820190508181036000830152613bd681613b9a565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c39602383612f6a565b9150613c4482613bdd565b604082019050919050565b60006020820190508181036000830152613c6881613c2c565b9050919050565b6000613c7a82613000565b9150613c8583613000565b9250828201905080821115613c9d57613c9c6134b4565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613cff602383612f6a565b9150613d0a82613ca3565b604082019050919050565b60006020820190508181036000830152613d2e81613cf2565b9050919050565b6000613d4082613000565b9150613d4b83613000565b9250828203905081811115613d6357613d626134b4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613da382613000565b9150613dae83613000565b925082613dbe57613dbd613d69565b5b828204905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613e25602a83612f6a565b9150613e3082613dc9565b604082019050919050565b60006020820190508181036000830152613e5481613e18565b9050919050565b600081519050613e6a81612e53565b92915050565b600060208284031215613e8657613e85612d55565b5b6000613e9484828501613e5b565b91505092915050565b6000819050919050565b6000613ec2613ebd613eb884613e9d565b6130ac565b613000565b9050919050565b613ed281613ea7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f0d81612e41565b82525050565b6000613f1f8383613f04565b60208301905092915050565b6000602082019050919050565b6000613f4382613ed8565b613f4d8185613ee3565b9350613f5883613ef4565b8060005b83811015613f89578151613f708882613f13565b9750613f7b83613f2b565b925050600181019050613f5c565b5085935050505092915050565b600060a082019050613fab6000830188613126565b613fb86020830187613ec9565b8181036040830152613fca8186613f38565b9050613fd960608301856131da565b613fe66080830184613126565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614026601b83612f6a565b915061403182613ff0565b602082019050919050565b6000602082019050818103600083015261405581614019565b9050919050565b600061406782613000565b915061407283613000565b925082820261408081613000565b91508282048414831517614097576140966134b4565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140fa602183612f6a565b91506141058261409e565b604082019050919050565b60006020820190508181036000830152614129816140ed565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fc4eadd5b590b394ec5d741738b7adee14f955f7196549b80ad9ab9bed6ac6e364736f6c63430008120033