0x60806040526000600a60186101000a81548160ff02191690831515021790555060405162004018380380620040188339818101604052810190620000449190620009eb565b858584848433600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000bf5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000b6919062000ad6565b60405180910390fd5b620000d0816200053460201b60201c565b508460089081620000e2919062000d34565b508360099081620000f4919062000d34565b5082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60146101000a81548161ffff021916908361ffff16021790555080600a60166101000a81548161ffff021916908361ffff16021790555060384603620002945766b1a2bc2ec50000341015620001c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001bd9062000ea2565b60405180910390fd5b600073df77caf33d10a18fd4ac3cade46b49ed646cd33773ffffffffffffffffffffffffffffffffffffffff1634604051620002029062000ef9565b60006040518083038185875af1925050503d806000811462000241576040519150601f19603f3d011682016040523d82523d6000602084013e62000246565b606091505b50509050806200028d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002849062000f86565b60405180910390fd5b50620004e7565b6001461480620002a45750600546145b15620003c5576618de76816d8000341015620002f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ee906200101e565b60405180910390fd5b600073df77caf33d10a18fd4ac3cade46b49ed646cd33773ffffffffffffffffffffffffffffffffffffffff1634604051620003339062000ef9565b60006040518083038185875af1925050503d806000811462000372576040519150601f19603f3d011682016040523d82523d6000602084013e62000377565b606091505b5050905080620003be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003b59062000f86565b60405180910390fd5b50620004e6565b6121054603620004e5576618de76816d80003410156200041c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000413906200101e565b60405180910390fd5b600073df77caf33d10a18fd4ac3cade46b49ed646cd33773ffffffffffffffffffffffffffffffffffffffff1634604051620004589062000ef9565b60006040518083038185875af1925050503d806000811462000497576040519150601f19603f3d011682016040523d82523d6000602084013e6200049c565b606091505b5050905080620004e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004da9062000f86565b60405180910390fd5b505b5b5b5050505050620005283062000501620005f860201b60201c565b600a6200050f9190620011d0565b866200051c919062001221565b6200060160201b60201c565b50505050505062001347565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000673576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066a90620012bc565b60405180910390fd5b62000687600083836200076f60201b60201c565b80600360008282546200069b9190620012de565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200074f91906200132a565b60405180910390a36200076b600083836200077460201b60201c565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620007e28262000797565b810181811067ffffffffffffffff82111715620008045762000803620007a8565b5b80604052505050565b60006200081962000779565b9050620008278282620007d7565b919050565b600067ffffffffffffffff8211156200084a5762000849620007a8565b5b620008558262000797565b9050602081019050919050565b60005b838110156200088257808201518184015260208101905062000865565b60008484015250505050565b6000620008a56200089f846200082c565b6200080d565b905082815260208101848484011115620008c457620008c362000792565b5b620008d184828562000862565b509392505050565b600082601f830112620008f157620008f06200078d565b5b8151620009038482602086016200088e565b91505092915050565b6000819050919050565b62000921816200090c565b81146200092d57600080fd5b50565b600081519050620009418162000916565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009748262000947565b9050919050565b620009868162000967565b81146200099257600080fd5b50565b600081519050620009a6816200097b565b92915050565b600061ffff82169050919050565b620009c581620009ac565b8114620009d157600080fd5b50565b600081519050620009e581620009ba565b92915050565b60008060008060008060c0878903121562000a0b5762000a0a62000783565b5b600087015167ffffffffffffffff81111562000a2c5762000a2b62000788565b5b62000a3a89828a01620008d9565b965050602087015167ffffffffffffffff81111562000a5e5762000a5d62000788565b5b62000a6c89828a01620008d9565b955050604062000a7f89828a0162000930565b945050606062000a9289828a0162000995565b935050608062000aa589828a01620009d4565b92505060a062000ab889828a01620009d4565b9150509295509295509295565b62000ad08162000967565b82525050565b600060208201905062000aed600083018462000ac5565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b4657607f821691505b60208210810362000b5c5762000b5b62000afe565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b87565b62000bd2868362000b87565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000c1562000c0f62000c09846200090c565b62000bea565b6200090c565b9050919050565b6000819050919050565b62000c318362000bf4565b62000c4962000c408262000c1c565b84845462000b94565b825550505050565b600090565b62000c6062000c51565b62000c6d81848462000c26565b505050565b5b8181101562000c955762000c8960008262000c56565b60018101905062000c73565b5050565b601f82111562000ce45762000cae8162000b62565b62000cb98462000b77565b8101602085101562000cc9578190505b62000ce162000cd88562000b77565b83018262000c72565b50505b505050565b600082821c905092915050565b600062000d096000198460080262000ce9565b1980831691505092915050565b600062000d24838362000cf6565b9150826002028217905092915050565b62000d3f8262000af3565b67ffffffffffffffff81111562000d5b5762000d5a620007a8565b5b62000d67825462000b2d565b62000d7482828562000c99565b600060209050601f83116001811462000dac576000841562000d97578287015190505b62000da3858262000d16565b86555062000e13565b601f19841662000dbc8662000b62565b60005b8281101562000de65784890151825560018201915060208501945060208101905062000dbf565b8683101562000e06578489015162000e02601f89168262000cf6565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f546f207061792074686520636f6d6d697373696f6e20796f75206e656564207460008201527f6f2068616e64206f76657220302e303520424e42000000000000000000000000602082015250565b600062000e8a60348362000e1b565b915062000e978262000e2c565b604082019050919050565b6000602082019050818103600083015262000ebd8162000e7b565b9050919050565b600081905092915050565b50565b600062000ee160008362000ec4565b915062000eee8262000ecf565b600082019050919050565b600062000f068262000ed2565b9150819050919050565b7f5061796d656e74206f662074686520636f6d6d697373696f6e20686173206e6f60008201527f74206265656e207375636365737366756c6c7920636f6d706c65746564000000602082015250565b600062000f6e603d8362000e1b565b915062000f7b8262000f10565b604082019050919050565b6000602082019050818103600083015262000fa18162000f5f565b9050919050565b7f546f207061792074686520636f6d6d697373696f6e20796f75206e656564207460008201527f6f2068616e64206f76657220302e303037204554480000000000000000000000602082015250565b60006200100660358362000e1b565b9150620010138262000fa8565b604082019050919050565b60006020820190508181036000830152620010398162000ff7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010ce57808604811115620010a657620010a562001040565b5b6001851615620010b65780820291505b8081029050620010c6856200106f565b945062001086565b94509492505050565b600082620010e95760019050620011bc565b81620010f95760009050620011bc565b81600181146200111257600281146200111d5762001153565b6001915050620011bc565b60ff84111562001132576200113162001040565b5b8360020a9150848211156200114c576200114b62001040565b5b50620011bc565b5060208310610133831016604e8410600b84101617156200118d5782820a90508381111562001187576200118662001040565b5b620011bc565b6200119c84848460016200107c565b92509050818404811115620011b657620011b562001040565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011dd826200090c565b9150620011ea83620011c3565b9250620012197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620010d7565b905092915050565b60006200122e826200090c565b91506200123b836200090c565b92508282026200124b816200090c565b9150828204841483151762001265576200126462001040565b5b5092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620012a4601f8362000e1b565b9150620012b1826200126c565b602082019050919050565b60006020820190508181036000830152620012d78162001295565b9050919050565b6000620012eb826200090c565b9150620012f8836200090c565b925082820190508082111562001313576200131262001040565b5b92915050565b62001324816200090c565b82525050565b600060208201905062001341600083018462001319565b92915050565b612cc180620013576000396000f3fe6080604052600436106101235760003560e01c806370a08231116100a0578063a81b612511610064578063a81b612514610397578063a9059cbb146103c2578063caac7934146103ff578063dd62ed3e1461042a578063f2fde38b146104675761012a565b806370a08231146102b0578063715018a6146102ed5780638da5cb5b1461030457806395d89b411461032f578063a457c2d71461035a5761012a565b806323b872dd116100e757806323b872dd146101f7578063313ce567146102345780633609ead31461025f57806339509351146102695780636ab2d1c2146102a65761012a565b806306a510071461012f57806306fdde0314610139578063095ea7b31461016457806318160ddd146101a157806318252339146101cc5761012a565b3661012a57005b600080fd5b610137610490565b005b34801561014557600080fd5b5061014e610956565b60405161015b919061216c565b60405180910390f35b34801561017057600080fd5b5061018b60048036038101906101869190612227565b6109e8565b6040516101989190612282565b60405180910390f35b3480156101ad57600080fd5b506101b6610a0b565b6040516101c391906122ac565b60405180910390f35b3480156101d857600080fd5b506101e1610a15565b6040516101ee91906122e4565b60405180910390f35b34801561020357600080fd5b5061021e600480360381019061021991906122ff565b610a29565b60405161022b9190612282565b60405180910390f35b34801561024057600080fd5b50610249610a58565b604051610256919061236e565b60405180910390f35b610267610a61565b005b34801561027557600080fd5b50610290600480360381019061028b9190612227565b610f27565b60405161029d9190612282565b60405180910390f35b6102ae610f5e565b005b3480156102bc57600080fd5b506102d760048036038101906102d29190612389565b611424565b6040516102e491906122ac565b60405180910390f35b3480156102f957600080fd5b5061030261146d565b005b34801561031057600080fd5b50610319611481565b60405161032691906123c5565b60405180910390f35b34801561033b57600080fd5b506103446114aa565b604051610351919061216c565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612227565b61153c565b60405161038e9190612282565b60405180910390f35b3480156103a357600080fd5b506103ac6115b3565b6040516103b991906122e4565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190612227565b6115c7565b6040516103f69190612282565b60405180910390f35b34801561040b57600080fd5b506104146115ea565b60405161042191906123c5565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906123e0565b611610565b60405161045e91906122ac565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190612389565b611697565b005b61049861171d565b600a60189054906101000a900460ff16156104e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104df9061246c565b60405180910390fd5b6000341161052b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610522906124d8565b60405180910390fd5b7310ed43c718714eb63d5aa57b78b54704e256024e600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105b530600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105b030611424565b6117a4565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610646919061250d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f3919061250d565b6040518363ffffffff1660e01b815260040161071092919061253a565b6020604051808303816000875af115801561072f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610753919061250d565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934306107dc30611424565b6107e530611424565b346107ee611481565b426040518863ffffffff1660e01b815260040161081096959493929190612563565b60606040518083038185885af115801561082e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061085391906125d9565b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016108f592919061262c565b6020604051808303816000875af1158015610914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109389190612681565b506001600a60186101000a81548160ff021916908315150217905550565b606060088054610965906126dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610991906126dd565b80156109de5780601f106109b3576101008083540402835291602001916109de565b820191906000526020600020905b8154815290600101906020018083116109c157829003601f168201915b5050505050905090565b6000806109f361196d565b9050610a008185856117a4565b600191505092915050565b6000600354905090565b600a60149054906101000a900461ffff1681565b600080610a3461196d565b9050610a41858285611975565b610a4c858585611a01565b60019150509392505050565b60006012905090565b610a6961171d565b600a60189054906101000a900460ff1615610ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab09061246c565b60405180910390fd5b60003411610afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af39061275a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b8630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b8130611424565b6117a4565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c17919061250d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc4919061250d565b6040518363ffffffff1660e01b8152600401610ce192919061253a565b6020604051808303816000875af1158015610d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d24919061250d565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610dad30611424565b610db630611424565b34610dbf611481565b426040518863ffffffff1660e01b8152600401610de196959493929190612563565b60606040518083038185885af1158015610dff573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e2491906125d9565b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ec692919061262c565b6020604051808303816000875af1158015610ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f099190612681565b506001600a60186101000a81548160ff021916908315150217905550565b600080610f3261196d565b9050610f53818585610f448589611610565b610f4e91906127a9565b6117a4565b600191505092915050565b610f6661171d565b600a60189054906101000a900460ff1615610fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fad9061246c565b60405180910390fd5b60003411610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff09061275a565b60405180910390fd5b734752ba5dbc23f44d87826276bf6fd6b1c372ad24600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061108330600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661107e30611424565b6117a4565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061250d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561119d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c1919061250d565b6040518363ffffffff1660e01b81526004016111de92919061253a565b6020604051808303816000875af11580156111fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611221919061250d565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934306112aa30611424565b6112b330611424565b346112bc611481565b426040518863ffffffff1660e01b81526004016112de96959493929190612563565b60606040518083038185885af11580156112fc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061132191906125d9565b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113c392919061262c565b6020604051808303816000875af11580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114069190612681565b506001600a60186101000a81548160ff021916908315150217905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61147561171d565b61147f6000611c93565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546114b9906126dd565b80601f01602080910402602001604051908101604052809291908181526020018280546114e5906126dd565b80156115325780601f1061150757610100808354040283529160200191611532565b820191906000526020600020905b81548152906001019060200180831161151557829003601f168201915b5050505050905090565b60008061154761196d565b905060006115558286611610565b90508381101561159a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115919061284f565b60405180910390fd5b6115a782868684036117a4565b60019250505092915050565b600a60169054906101000a900461ffff1681565b6000806115d261196d565b90506115df818585611a01565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61169f61171d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117115760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161170891906123c5565b60405180910390fd5b61171a81611c93565b50565b61172561196d565b73ffffffffffffffffffffffffffffffffffffffff16611743611481565b73ffffffffffffffffffffffffffffffffffffffff16146117a25761176661196d565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161179991906123c5565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a906128e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187990612973565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161196091906122ac565b60405180910390a3505050565b600033905090565b60006119818484611610565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119fb57818110156119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e4906129df565b60405180910390fd5b6119fa84848484036117a4565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790612a71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690612b03565b60405180910390fd5b611aea838383611d57565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6890612b95565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bc4858585611d5c565b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c1591906127a9565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c7991906122ac565b60405180910390a3611c8c8585856120d7565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b6000611d66611481565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611dd15750611da2611481565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611e0757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80611e3d57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611e4a578190506120d0565b60008373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611ef557508373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611f2d576064600a60169054906101000a900461ffff1661ffff1684611f1c9190612bb5565b611f269190612c26565b905061203e565b8473ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611fd657508473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561200e576064600a60149054906101000a900461ffff1661ffff1684611ffd9190612bb5565b6120079190612c26565b905061203d565b6064600a60169054906101000a900461ffff1661ffff16846120309190612bb5565b61203a9190612c26565b90505b5b60008111156120c0578060016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120b891906127a9565b925050819055505b80836120cc9190612c57565b9150505b9392505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121165780820151818401526020810190506120fb565b60008484015250505050565b6000601f19601f8301169050919050565b600061213e826120dc565b61214881856120e7565b93506121588185602086016120f8565b61216181612122565b840191505092915050565b600060208201905081810360008301526121868184612133565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121be82612193565b9050919050565b6121ce816121b3565b81146121d957600080fd5b50565b6000813590506121eb816121c5565b92915050565b6000819050919050565b612204816121f1565b811461220f57600080fd5b50565b600081359050612221816121fb565b92915050565b6000806040838503121561223e5761223d61218e565b5b600061224c858286016121dc565b925050602061225d85828601612212565b9150509250929050565b60008115159050919050565b61227c81612267565b82525050565b60006020820190506122976000830184612273565b92915050565b6122a6816121f1565b82525050565b60006020820190506122c1600083018461229d565b92915050565b600061ffff82169050919050565b6122de816122c7565b82525050565b60006020820190506122f960008301846122d5565b92915050565b6000806000606084860312156123185761231761218e565b5b6000612326868287016121dc565b9350506020612337868287016121dc565b925050604061234886828701612212565b9150509250925092565b600060ff82169050919050565b61236881612352565b82525050565b6000602082019050612383600083018461235f565b92915050565b60006020828403121561239f5761239e61218e565b5b60006123ad848285016121dc565b91505092915050565b6123bf816121b3565b82525050565b60006020820190506123da60008301846123b6565b92915050565b600080604083850312156123f7576123f661218e565b5b6000612405858286016121dc565b9250506020612416858286016121dc565b9150509250929050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006124566017836120e7565b915061246182612420565b602082019050919050565b6000602082019050818103600083015261248581612449565b9050919050565b7f4d7573742073656e6420736f6d6520424e420000000000000000000000000000600082015250565b60006124c26012836120e7565b91506124cd8261248c565b602082019050919050565b600060208201905081810360008301526124f1816124b5565b9050919050565b600081519050612507816121c5565b92915050565b6000602082840312156125235761252261218e565b5b6000612531848285016124f8565b91505092915050565b600060408201905061254f60008301856123b6565b61255c60208301846123b6565b9392505050565b600060c08201905061257860008301896123b6565b612585602083018861229d565b612592604083018761229d565b61259f606083018661229d565b6125ac60808301856123b6565b6125b960a083018461229d565b979650505050505050565b6000815190506125d3816121fb565b92915050565b6000806000606084860312156125f2576125f161218e565b5b6000612600868287016125c4565b9350506020612611868287016125c4565b9250506040612622868287016125c4565b9150509250925092565b600060408201905061264160008301856123b6565b61264e602083018461229d565b9392505050565b61265e81612267565b811461266957600080fd5b50565b60008151905061267b81612655565b92915050565b6000602082840312156126975761269661218e565b5b60006126a58482850161266c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806126f557607f821691505b602082108103612708576127076126ae565b5b50919050565b7f4d7573742073656e6420736f6d65204554480000000000000000000000000000600082015250565b60006127446012836120e7565b915061274f8261270e565b602082019050919050565b6000602082019050818103600083015261277381612737565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127b4826121f1565b91506127bf836121f1565b92508282019050808211156127d7576127d661277a565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006128396025836120e7565b9150612844826127dd565b604082019050919050565b600060208201905081810360008301526128688161282c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128cb6024836120e7565b91506128d68261286f565b604082019050919050565b600060208201905081810360008301526128fa816128be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061295d6022836120e7565b915061296882612901565b604082019050919050565b6000602082019050818103600083015261298c81612950565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006129c9601d836120e7565b91506129d482612993565b602082019050919050565b600060208201905081810360008301526129f8816129bc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a5b6025836120e7565b9150612a66826129ff565b604082019050919050565b60006020820190508181036000830152612a8a81612a4e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612aed6023836120e7565b9150612af882612a91565b604082019050919050565b60006020820190508181036000830152612b1c81612ae0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612b7f6026836120e7565b9150612b8a82612b23565b604082019050919050565b60006020820190508181036000830152612bae81612b72565b9050919050565b6000612bc0826121f1565b9150612bcb836121f1565b9250828202612bd9816121f1565b91508282048414831517612bf057612bef61277a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c31826121f1565b9150612c3c836121f1565b925082612c4c57612c4b612bf7565b5b828204905092915050565b6000612c62826121f1565b9150612c6d836121f1565b9250828203905081811115612c8557612c8461277a565b5b9291505056fea2646970667358221220f79e637ed78c4d662e6a2cc34826d2d5f422261ca4a7148d32d1703a4d88952a64736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000e8990a4600000000000000000000000000ae10269172c4dfb85c35ce9a790d7cdad827a37100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a50657065205472756d70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009506570655472756d700000000000000000000000000000000000000000000000