60806040523480156200001157600080fd5b5060405162001d0b38038062001d0b8339818101604052810190620000379190620007a7565b6060336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600581908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190620000b69291906200071f565b5060056001600580549050620000cd9190620008ce565b8154811062000105577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001434090806001815401808255809150506001900390600052602060002001600090919091909150556200015233836200015b640100000000026401000000009004565b50505062000a5f565b600080606060006200017d3387620003c5640100000000026401000000009004565b92506002600084815260200190815260200160002054905060008114156200031e57600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906200027c9291906200071f565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050620003329190620008ce565b90508060026000858152602001908152602001600020819055506005818154811062000387577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000806000602867ffffffffffffffff8111156200040c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156200043f5781602001600182028036833780820191505090505b50905060008560405160200162000457919062000825565b604051602081830303815290604052905060005b60148110156200057857818181518110620004af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811062000533577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200056f9062000987565b9150506200046b565b50846040516020016200058c919062000825565b604051602081830303815290604052905060005b6014811015620006bb57818181518110620005e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014836200063e919062000871565b8151811062000676577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620006b29062000987565b915050620005a0565b50600282604051620006ce919062000842565b602060405180830381855afa158015620006ec573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620007119190620007a7565b925082935050505092915050565b8280548282559060005260206000209081019282156200075e579160200282015b828111156200075d57825182559160200191906001019062000740565b5b5090506200076d919062000771565b5090565b5b808211156200078c57600081600090555060010162000772565b5090565b600081519050620007a18162000a45565b92915050565b600060208284031215620007ba57600080fd5b6000620007ca8482850162000790565b91505092915050565b620007e8620007e28262000909565b620009d5565b82525050565b6000620007fb826200085b565b62000807818562000866565b93506200081981856020860162000951565b80840191505092915050565b6000620008338284620007d3565b60148201915081905092915050565b6000620008508284620007ee565b915081905092915050565b600081519050919050565b600081905092915050565b60006200087e8262000947565b91506200088b8362000947565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008c357620008c2620009fd565b5b828201905092915050565b6000620008db8262000947565b9150620008e88362000947565b925082821015620008fe57620008fd620009fd565b5b828203905092915050565b6000620009168262000927565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200097157808201518184015260208101905062000954565b8381111562000981576000848401525b50505050565b6000620009948262000947565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620009ca57620009c9620009fd565b5b600182019050919050565b6000620009e282620009e9565b9050919050565b6000620009f68262000a2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006c0100000000000000000000000082029050919050565b62000a50816200091d565b811462000a5c57600080fd5b50565b61129c8062000a6f6000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b361461018a5780638da5cb5b146101ba578063ae47ece0146101d8578063d0e95db114610208578063ff7496b414610238576100bb565b806301ffc9a7146100c057806322168e4f146100f057806350e0c6d3146101205780637d64bf1d14610150578063880ad0af14610180575b600080fd5b6100da60048036038101906100d59190610d2c565b610268565b6040516100e79190610f49565b60405180910390f35b61010a60048036038101906101059190610cc7565b61026f565b6040516101179190610f0c565b60405180910390f35b61013a60048036038101906101359190610c26565b61031b565b6040516101479190610f9f565b60405180910390f35b61016a60048036038101906101659190610cc7565b610367565b6040516101779190610f0c565b60405180910390f35b610188610413565b005b6101a4600480360381019061019f9190610c4f565b61044e565b6040516101b19190610f27565b60405180910390f35b6101c2610512565b6040516101cf9190610f0c565b60405180910390f35b6101f260048036038101906101ed9190610c8b565b610536565b6040516101ff9190610f49565b60405180910390f35b610222600480360381019061021d9190610c26565b610789565b60405161022f9190610f9f565b60405180910390f35b610252600480360381019061024d9190610d55565b6107d5565b60405161025f9190610f64565b60405180910390f35b6000919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106102e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106103e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044590610f7f565b60405180910390fd5b606060008061045d8585610812565b915060026000838152602001908152602001600020549050600581815481106104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561050357602002820191906000526020600020905b8154815260200190600101908083116104ef575b50505050509250505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080606060006105473387610812565b92506002600084815260200190815260200160002054905060008114156106e557600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610643929190610b53565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60016005805490506106f79190611070565b90508060026000858152602001908152602001600020819055506005818154811061074b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600582815481106107e557600080fd5b9060005260206000200181815481106107fd57600080fd5b90600052602060002001600091509150505481565b6000806000602867ffffffffffffffff811115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561088a5781602001600182028036833780820191505090505b5090506000856040516020016108a09190610eda565b604051602081830303815290604052905060005b60148110156109bb578181815181106108f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110610979577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806109b390611155565b9150506108b4565b50846040516020016109cd9190610eda565b604051602081830303815290604052905060005b6014811015610af457818181518110610a23577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283601483610a7b919061101a565b81518110610ab2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610aec90611155565b9150506109e1565b50600282604051610b059190610ef5565b602060405180830381855afa158015610b22573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b459190610d03565b925082935050505092915050565b828054828255906000526020600020908101928215610b8f579160200282015b82811115610b8e578251825591602001919060010190610b73565b5b509050610b9c9190610ba0565b5090565b5b80821115610bb9576000816000905550600101610ba1565b5090565b600081359050610bcc8161120a565b92915050565b600081359050610be181611221565b92915050565b600081519050610bf681611221565b92915050565b600081359050610c0b81611238565b92915050565b600081359050610c208161124f565b92915050565b600060208284031215610c3857600080fd5b6000610c4684828501610bbd565b91505092915050565b60008060408385031215610c6257600080fd5b6000610c7085828601610bbd565b9250506020610c8185828601610bbd565b9150509250929050565b60008060408385031215610c9e57600080fd5b6000610cac85828601610bbd565b9250506020610cbd85828601610bd2565b9150509250929050565b60008060408385031215610cda57600080fd5b6000610ce885828601610bbd565b9250506020610cf985828601610c11565b9150509250929050565b600060208284031215610d1557600080fd5b6000610d2384828501610be7565b91505092915050565b600060208284031215610d3e57600080fd5b6000610d4c84828501610bfc565b91505092915050565b60008060408385031215610d6857600080fd5b6000610d7685828601610c11565b9250506020610d8785828601610c11565b9150509250929050565b6000610d9d8383610e3c565b60208301905092915050565b610db2816110a4565b82525050565b610dc9610dc4826110a4565b61119e565b82525050565b6000610dda82610fca565b610de48185610fed565b9350610def83610fba565b8060005b83811015610e20578151610e078882610d91565b9750610e1283610fe0565b925050600181019050610df3565b5085935050505092915050565b610e36816110b6565b82525050565b610e45816110c2565b82525050565b610e54816110c2565b82525050565b6000610e6582610fd5565b610e6f8185610ffe565b9350610e7f818560208601611122565b80840191505092915050565b6000610e98601783611009565b91507f6f776e65722063616e6e6f74206265206368616e6765640000000000000000006000830152602082019050919050565b610ed481611118565b82525050565b6000610ee68284610db8565b60148201915081905092915050565b6000610f018284610e5a565b915081905092915050565b6000602082019050610f216000830184610da9565b92915050565b60006020820190508181036000830152610f418184610dcf565b905092915050565b6000602082019050610f5e6000830184610e2d565b92915050565b6000602082019050610f796000830184610e4b565b92915050565b60006020820190508181036000830152610f9881610e8b565b9050919050565b6000602082019050610fb46000830184610ecb565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061102582611118565b915061103083611118565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611065576110646111c2565b5b828201905092915050565b600061107b82611118565b915061108683611118565b925082821015611099576110986111c2565b5b828203905092915050565b60006110af826110f8565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611140578082015181840152602081019050611125565b8381111561114f576000848401525b50505050565b600061116082611118565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611193576111926111c2565b5b600182019050919050565b60006111a9826111b0565b9050919050565b60006111bb826111f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006c0100000000000000000000000082029050919050565b611213816110a4565b811461121e57600080fd5b50565b61122a816110c2565b811461123557600080fd5b50565b611241816110cc565b811461124c57600080fd5b50565b61125881611118565b811461126357600080fd5b5056fea2646970667358221220b195c41e2015a9efebdf328e034692ad6acccbfaf91d54c68ca396942282058664736f6c63430008000033