0x6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620000a990620003fe565b604051809103906000f080158015620000c6573d6000803e3d6000fd5b50600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600781526020017f4e45535245454e00000000000000000000000000000000000000000000000000815250600790816200014d919062000686565b506040518060400160405280600781526020017f4e45535245454e000000000000000000000000000000000000000000000000008152506008908162000194919062000686565b5060098060006101000a81548160ff021916908360ff160217905550600960009054906101000a900460ff16600a620001ce9190620008fd565b633b9aca00620001df91906200094e565b600a5567058d15e176280000600c556001600d60146101000a81548160ff0219169083151502179055503480156200021657600080fd5b50600062000229620003cd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200031d620003d560201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003bf9190620009aa565b60405180910390a3620009c7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b08806200474b83390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200048e57607f821691505b602082108103620004a457620004a362000446565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200050e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004cf565b6200051a8683620004cf565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000567620005616200055b8462000532565b6200053c565b62000532565b9050919050565b6000819050919050565b620005838362000546565b6200059b62000592826200056e565b848454620004dc565b825550505050565b600090565b620005b2620005a3565b620005bf81848462000578565b505050565b5b81811015620005e757620005db600082620005a8565b600181019050620005c5565b5050565b601f82111562000636576200060081620004aa565b6200060b84620004bf565b810160208510156200061b578190505b620006336200062a85620004bf565b830182620005c4565b50505b505050565b600082821c905092915050565b60006200065b600019846008026200063b565b1980831691505092915050565b600062000676838362000648565b9150826002028217905092915050565b62000691826200040c565b67ffffffffffffffff811115620006ad57620006ac62000417565b5b620006b9825462000475565b620006c6828285620005eb565b600060209050601f831160018114620006fe5760008415620006e9578287015190505b620006f5858262000668565b86555062000765565b601f1984166200070e86620004aa565b60005b82811015620007385784890151825560018201915060208501945060208101905062000711565b8683101562000758578489015162000754601f89168262000648565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007fb57808604811115620007d357620007d26200076d565b5b6001851615620007e35780820291505b8081029050620007f3856200079c565b9450620007b3565b94509492505050565b600082620008165760019050620008e9565b81620008265760009050620008e9565b81600181146200083f57600281146200084a5762000880565b6001915050620008e9565b60ff8411156200085f576200085e6200076d565b5b8360020a9150848211156200087957620008786200076d565b5b50620008e9565b5060208310610133831016604e8410600b8410161715620008ba5782820a905083811115620008b457620008b36200076d565b5b620008e9565b620008c98484846001620007a9565b92509050818404811115620008e357620008e26200076d565b5b81810290505b9392505050565b600060ff82169050919050565b60006200090a8262000532565b91506200091783620008f0565b9250620009467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000804565b905092915050565b60006200095b8262000532565b9150620009688362000532565b9250828202620009788162000532565b915082820484148315176200099257620009916200076d565b5b5092915050565b620009a48162000532565b82525050565b6000602082019050620009c1600083018462000999565b92915050565b613d7480620009d76000396000f3fe6080604052600436106101a05760003560e01c8063748eb3a5116100ec578063ce03c9a41161008a578063ec11ba3411610064578063ec11ba34146105c5578063f28cd374146105dc578063f2fde38b146105f3578063ff186b2e1461061c576101a7565b8063ce03c9a414610548578063dd62ed3e14610571578063e9ac0e59146105ae576101a7565b806395d89b41116100c657806395d89b411461048c578063a457c2d7146104b7578063a9059cbb146104f4578063c9567bf914610531576101a7565b8063748eb3a51461040d57806384afff9b146104385780638da5cb5b14610461576101a7565b8063313ce5671161015957806350faa48f1161013357806350faa48f1461037757806351bc3c85146103a257806370a08231146103b9578063715018a6146103f6576101a7565b8063313ce567146102e4578063378ec23b1461030f578063395093511461033a576101a7565b806306fdde03146101ac578063095ea7b3146101d757806314f944bd146102145780631694505e1461025157806318160ddd1461027c57806323b872dd146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610647565b6040516101ce9190612cbe565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612d88565b6106d9565b60405161020b9190612de3565b60405180910390f35b34801561022057600080fd5b5061023b60048036038101906102369190612dfe565b6106f7565b6040516102489190612e3a565b60405180910390f35b34801561025d57600080fd5b5061026661093a565b6040516102739190612eb4565b60405180910390f35b34801561028857600080fd5b50610291610960565b60405161029e9190612e3a565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612ecf565b61096a565b6040516102db9190612de3565b60405180910390f35b3480156102f057600080fd5b506102f9610a43565b6040516103069190612f3e565b60405180910390f35b34801561031b57600080fd5b50610324610a5a565b6040516103319190612e3a565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190612d88565b610a60565b60405161036e9190612de3565b60405180910390f35b34801561038357600080fd5b5061038c610b13565b6040516103999190612f68565b60405180910390f35b3480156103ae57600080fd5b506103b7610b39565b005b3480156103c557600080fd5b506103e060048036038101906103db9190612f83565b610b71565b6040516103ed9190612e3a565b60405180910390f35b34801561040257600080fd5b5061040b610bba565b005b34801561041957600080fd5b50610422610d0d565b60405161042f9190612de3565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a9190612f83565b610d20565b005b34801561046d57600080fd5b50610476610e49565b6040516104839190612f68565b60405180910390f35b34801561049857600080fd5b506104a1610e72565b6040516104ae9190612cbe565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d99190612d88565b610f04565b6040516104eb9190612de3565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190612d88565b610fd1565b6040516105289190612de3565b60405180910390f35b34801561053d57600080fd5b50610546610fef565b005b34801561055457600080fd5b5061056f600480360381019061056a9190612dfe565b61162f565b005b34801561057d57600080fd5b5061059860048036038101906105939190612fb0565b6116ce565b6040516105a59190612e3a565b60405180910390f35b3480156105ba57600080fd5b506105c3611755565b005b3480156105d157600080fd5b506105da6117c6565b005b3480156105e857600080fd5b506105f16118d7565b005b3480156105ff57600080fd5b5061061a60048036038101906106159190612f83565b6118e9565b005b34801561062857600080fd5b50610631611aaa565b60405161063e9190612e3a565b60405180910390f35b6060600780546106569061301f565b80601f01602080910402602001604051908101604052809291908181526020018280546106829061301f565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b5050505050905090565b60006106ed6106e6611ab0565b8484611ab8565b6001905092915050565b600080600267ffffffffffffffff81111561071557610714613050565b5b6040519080825280602002602001820160405280156107435781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190613094565b816000815181106107eb576107ea6130c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061083a576108396130c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484836040518363ffffffff1660e01b81526004016108d19291906131ae565b600060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610917919061330c565b60008151811061092a576109296130c1565b5b6020026020010151915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54905090565b6000610977848484611c81565b610a3884610983611ab0565b610a3385604051806060016040528060288152602001613cf260289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109e9611ab0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b59092919063ffffffff16565b611ab8565b600190509392505050565b6000600960009054906101000a900460ff16905090565b600e5481565b6000610b09610a6d611ab0565b84610b048560066000610a7e611ab0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241990919063ffffffff16565b611ab8565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b4430610b71565b90506000811115610b6e57600b60009054906101000a900460ff16610b6d57610b6c81612477565b5b5b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bc2611ab0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c46906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60149054906101000a900460ff1681565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d609190612f68565b602060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da191906133c1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e009291906133ee565b6020604051808303816000875af1158015610e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e439190613443565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610e819061301f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ead9061301f565b8015610efa5780601f10610ecf57610100808354040283529160200191610efa565b820191906000526020600020905b815481529060010190602001808311610edd57829003601f168201915b5050505050905090565b6000610fc7610f11611ab0565b84610fc285604051806060016040528060258152602001613d1a6025913960066000610f3b611ab0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123b59092919063ffffffff16565b611ab8565b6001905092915050565b6000610fe5610fde611ab0565b8484611c81565b6001905092915050565b610ff7611ab0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c906134e2565b60405180910390fd5b61114430600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54611ab8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190613094565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190613094565b6040518363ffffffff1660e01b815260040161129f929190613502565b6020604051808303816000875af11580156112be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e29190613094565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006113536064611345600a61133730610b71565b61273090919063ffffffff16565b6127aa90919063ffffffff16565b90506113a781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061144381600360006113fa610e49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241990919063ffffffff16565b6003600061144f610e49565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114d630610b71565b6000806114e1610e49565b426040518863ffffffff1660e01b815260040161150396959493929190613566565b60606040518083038185885af1158015611521573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154691906135c7565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115e89291906133ee565b6020604051808303816000875af1158015611607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162b9190613443565b5050565b611637611ab0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb906133a1565b60405180910390fd5b80600c8190555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117c2573d6000803e3d6000fd5b5050565b6117ce611ab0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611852906133a1565b60405180910390fd5b600d60149054906101000a900460ff166118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a19061368c565b60405180910390fd5b6118ba6118b5610e49565b61283e565b6000600d60146101000a81548160ff021916908315150217905550565b6118e76118e2611ab0565b61283e565b565b6118f1611ab0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611975906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e49061371e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1e906137b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d90613842565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c749190612e3a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce7906138d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5690613966565b60405180910390fd5b60008111611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d99906139f8565b60405180910390fd5b6000611dac610e49565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e1a5750611dea610e49565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e8a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ea25750600d60149054906101000a900460ff165b1561217357600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fb557600e54431115611f1757611f0f8361283e565b43600e819055505b6000611f22836106f7565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82885836040518363ffffffff1660e01b8152600401611f819291906133ee565b600060405180830381600087803b158015611f9b57600080fd5b505af1158015611faf573d6000803e3d6000fd5b50505050505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120605750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561217257600e54431115612080576120788461283e565b43600e819055505b600061208b836106f7565b90506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc876040518263ffffffff1660e01b81526004016120ea9190612f68565b602060405180830381865afa158015612107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212b91906133c1565b9050600c54821015806121405750600c548110155b1561216f5761216c606461215e605f8761273090919063ffffffff16565b6127aa90919063ffffffff16565b92505b50505b5b600061218882846127f490919063ffffffff16565b90506121dc83600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f490919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227181600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241990919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061230682600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123a69190612e3a565b60405180910390a35050505050565b60008383111582906123fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f49190612cbe565b60405180910390fd5b506000838561240c9190613a47565b9050809150509392505050565b60008082846124289190613a7b565b90508381101561246d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246490613afb565b60405180910390fd5b8091505092915050565b6000600267ffffffffffffffff81111561249457612493613050565b5b6040519080825280602002602001820160405280156124c25781602001602082028036833780820191505090505b50905030816000815181106124da576124d96130c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190613094565b816001815181106125b9576125b86130c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061262030600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ab8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612684959493929190613b1b565b600060405180830381600087803b15801561269e57600080fd5b505af11580156126b2573d6000803e3d6000fd5b50505050600047905043600e81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561272a573d6000803e3d6000fd5b50505050565b600080830361274257600090506127a4565b600082846127509190613b75565b905082848261275f9190613be6565b1461279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690613c89565b60405180910390fd5b809150505b92915050565b60006127ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bcb565b905092915050565b600061283683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123b5565b905092915050565b60005b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d291906133c1565b811015612bc7576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b81526004016129369190612e3a565b602060405180830381865afa158015612953573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129779190613094565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612bb3576000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115612b2457612a4b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f490919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b8152600401612b7f9190612f68565b600060405180830381600087803b158015612b9957600080fd5b505af1158015612bad573d6000803e3d6000fd5b50505050505b508080612bbf90613ca9565b915050612841565b5050565b60008083118290612c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c099190612cbe565b60405180910390fd5b5060008385612c219190613be6565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c68578082015181840152602081019050612c4d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c9082612c2e565b612c9a8185612c39565b9350612caa818560208601612c4a565b612cb381612c74565b840191505092915050565b60006020820190508181036000830152612cd88184612c85565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d1f82612cf4565b9050919050565b612d2f81612d14565b8114612d3a57600080fd5b50565b600081359050612d4c81612d26565b92915050565b6000819050919050565b612d6581612d52565b8114612d7057600080fd5b50565b600081359050612d8281612d5c565b92915050565b60008060408385031215612d9f57612d9e612cea565b5b6000612dad85828601612d3d565b9250506020612dbe85828601612d73565b9150509250929050565b60008115159050919050565b612ddd81612dc8565b82525050565b6000602082019050612df86000830184612dd4565b92915050565b600060208284031215612e1457612e13612cea565b5b6000612e2284828501612d73565b91505092915050565b612e3481612d52565b82525050565b6000602082019050612e4f6000830184612e2b565b92915050565b6000819050919050565b6000612e7a612e75612e7084612cf4565b612e55565b612cf4565b9050919050565b6000612e8c82612e5f565b9050919050565b6000612e9e82612e81565b9050919050565b612eae81612e93565b82525050565b6000602082019050612ec96000830184612ea5565b92915050565b600080600060608486031215612ee857612ee7612cea565b5b6000612ef686828701612d3d565b9350506020612f0786828701612d3d565b9250506040612f1886828701612d73565b9150509250925092565b600060ff82169050919050565b612f3881612f22565b82525050565b6000602082019050612f536000830184612f2f565b92915050565b612f6281612d14565b82525050565b6000602082019050612f7d6000830184612f59565b92915050565b600060208284031215612f9957612f98612cea565b5b6000612fa784828501612d3d565b91505092915050565b60008060408385031215612fc757612fc6612cea565b5b6000612fd585828601612d3d565b9250506020612fe685828601612d3d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061303757607f821691505b60208210810361304a57613049612ff0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061308e81612d26565b92915050565b6000602082840312156130aa576130a9612cea565b5b60006130b88482850161307f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61312581612d14565b82525050565b6000613137838361311c565b60208301905092915050565b6000602082019050919050565b600061315b826130f0565b61316581856130fb565b93506131708361310c565b8060005b838110156131a1578151613188888261312b565b975061319383613143565b925050600181019050613174565b5085935050505092915050565b60006040820190506131c36000830185612e2b565b81810360208301526131d58184613150565b90509392505050565b600080fd5b6131ec82612c74565b810181811067ffffffffffffffff8211171561320b5761320a613050565b5b80604052505050565b600061321e612ce0565b905061322a82826131e3565b919050565b600067ffffffffffffffff82111561324a57613249613050565b5b602082029050602081019050919050565b600080fd5b60008151905061326f81612d5c565b92915050565b60006132886132838461322f565b613214565b905080838252602082019050602084028301858111156132ab576132aa61325b565b5b835b818110156132d457806132c08882613260565b8452602084019350506020810190506132ad565b5050509392505050565b600082601f8301126132f3576132f26131de565b5b8151613303848260208601613275565b91505092915050565b60006020828403121561332257613321612cea565b5b600082015167ffffffffffffffff8111156133405761333f612cef565b5b61334c848285016132de565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061338b602083612c39565b915061339682613355565b602082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b6000602082840312156133d7576133d6612cea565b5b60006133e584828501613260565b91505092915050565b60006040820190506134036000830185612f59565b6134106020830184612e2b565b9392505050565b61342081612dc8565b811461342b57600080fd5b50565b60008151905061343d81613417565b92915050565b60006020828403121561345957613458612cea565b5b60006134678482850161342e565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b60006134cc602283612c39565b91506134d782613470565b604082019050919050565b600060208201905081810360008301526134fb816134bf565b9050919050565b60006040820190506135176000830185612f59565b6135246020830184612f59565b9392505050565b6000819050919050565b600061355061354b6135468461352b565b612e55565b612d52565b9050919050565b61356081613535565b82525050565b600060c08201905061357b6000830189612f59565b6135886020830188612e2b565b6135956040830187613557565b6135a26060830186613557565b6135af6080830185612f59565b6135bc60a0830184612e2b565b979650505050505050565b6000806000606084860312156135e0576135df612cea565b5b60006135ee86828701613260565b93505060206135ff86828701613260565b925050604061361086828701613260565b9150509250925092565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b6000613676602583612c39565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613708602683612c39565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061379a602483612c39565b91506137a58261373e565b604082019050919050565b600060208201905081810360008301526137c98161378d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061382c602283612c39565b9150613837826137d0565b604082019050919050565b6000602082019050818103600083015261385b8161381f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138be602583612c39565b91506138c982613862565b604082019050919050565b600060208201905081810360008301526138ed816138b1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613950602383612c39565b915061395b826138f4565b604082019050919050565b6000602082019050818103600083015261397f81613943565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006139e2602983612c39565b91506139ed82613986565b604082019050919050565b60006020820190508181036000830152613a11816139d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5282612d52565b9150613a5d83612d52565b9250828203905081811115613a7557613a74613a18565b5b92915050565b6000613a8682612d52565b9150613a9183612d52565b9250828201905080821115613aa957613aa8613a18565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ae5601b83612c39565b9150613af082613aaf565b602082019050919050565b60006020820190508181036000830152613b1481613ad8565b9050919050565b600060a082019050613b306000830188612e2b565b613b3d6020830187613557565b8181036040830152613b4f8186613150565b9050613b5e6060830185612f59565b613b6b6080830184612e2b565b9695505050505050565b6000613b8082612d52565b9150613b8b83612d52565b9250828202613b9981612d52565b91508282048414831517613bb057613baf613a18565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf182612d52565b9150613bfc83612d52565b925082613c0c57613c0b613bb7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c73602183612c39565b9150613c7e82613c17565b604082019050919050565b60006020820190508181036000830152613ca281613c66565b9050919050565b6000613cb482612d52565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ce657613ce5613a18565b5b60018201905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122032eb169f0961c240dee596c3a5b4792bffbfdc2d03aa61bd8649e728c0e38e9164736f6c63430008130033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b9250828203905081811115610a4e57610a4d6109f1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220fd39b922c287a843315e33cb5894d7482704dbba76b5ad0bdcb61801a005fb0564736f6c63430008130033