6080604052641ac688be0060055564012a05f20060065534801562000022575f80fd5b506040518060400160405280601b81526020017f4520542048202d2042204f204e2055205320cbb3204e204520542000000000008152506040518060400160405280600181526020017f24000000000000000000000000000000000000000000000000000000000000008152508160039081620000a09190620005e9565b508060049081620000b29190620005e9565b505050620000d13369d3c21bcecceda1000000620000d760201b60201c565b620007f9565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200014a575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000141919062000710565b60405180910390fd5b6200015d5f83836200016160201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001b5578060025f828254620001a8919062000758565b9250508190555062000286565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000241578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200023893929190620007a3565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002cf578060025f828254039250508190555062000319565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003789190620007de565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200040157607f821691505b602082108103620004175762000416620003bc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200047b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200043e565b6200048786836200043e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004d1620004cb620004c5846200049f565b620004a8565b6200049f565b9050919050565b5f819050919050565b620004ec83620004b1565b62000504620004fb82620004d8565b8484546200044a565b825550505050565b5f90565b6200051a6200050c565b62000527818484620004e1565b505050565b5b818110156200054e57620005425f8262000510565b6001810190506200052d565b5050565b601f8211156200059d5762000567816200041d565b62000572846200042f565b8101602085101562000582578190505b6200059a62000591856200042f565b8301826200052c565b50505b505050565b5f82821c905092915050565b5f620005bf5f1984600802620005a2565b1980831691505092915050565b5f620005d98383620005ae565b9150826002028217905092915050565b620005f48262000385565b67ffffffffffffffff81111562000610576200060f6200038f565b5b6200061c8254620003e9565b6200062982828562000552565b5f60209050601f8311600181146200065f575f84156200064a578287015190505b620006568582620005cc565b865550620006c5565b601f1984166200066f866200041d565b5f5b82811015620006985784890151825560018201915060208501945060208101905062000671565b86831015620006b85784890151620006b4601f891682620005ae565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006f882620006cd565b9050919050565b6200070a81620006ec565b82525050565b5f602082019050620007255f830184620006ff565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000764826200049f565b915062000771836200049f565b92508282019050808211156200078c576200078b6200072b565b5b92915050565b6200079d816200049f565b82525050565b5f606082019050620007b85f830186620006ff565b620007c7602083018562000792565b620007d6604083018462000792565b949350505050565b5f602082019050620007f35f83018462000792565b92915050565b61123180620008075f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806370a082311161008a578063a9059cbb11610064578063a9059cbb14610215578063c67bbc2414610245578063d67b06c114610263578063dd62ed3e1461027f576100cd565b806370a08231146101a957806390825c28146101d957806395d89b41146101f7576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d57806325e6f5161461016d578063313ce5671461018b575b5f80fd5b6100d96102af565b6040516100e69190610c81565b60405180910390f35b61010960048036038101906101049190610d3f565b61033f565b6040516101169190610d97565b60405180910390f35b610127610361565b6040516101349190610dbf565b60405180910390f35b61015760048036038101906101529190610dd8565b61036a565b6040516101649190610d97565b60405180910390f35b610175610398565b6040516101829190610c81565b60405180910390f35b6101936103d5565b6040516101a09190610e43565b60405180910390f35b6101c360048036038101906101be9190610e5c565b6103dd565b6040516101d09190610dbf565b60405180910390f35b6101e1610422565b6040516101ee9190610dbf565b60405180910390f35b6101ff61042b565b60405161020c9190610c81565b60405180910390f35b61022f600480360381019061022a9190610d3f565b6104bb565b60405161023c9190610d97565b60405180910390f35b61024d6104dd565b60405161025a9190610dbf565b60405180910390f35b61027d60048036038101906102789190610fc7565b6104e6565b005b6102996004803603810190610294919061100e565b610573565b6040516102a69190610dbf565b60405180910390f35b6060600380546102be90611079565b80601f01602080910402602001604051908101604052809291908181526020018280546102ea90611079565b80156103355780601f1061030c57610100808354040283529160200191610335565b820191905f5260205f20905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b5f806103496105f5565b90506103568185856105fc565b600191505092915050565b5f600254905090565b5f806103746105f5565b905061038185828561060e565b61038c8585856106a0565b60019150509392505050565b60606040518060400160405280600b81526020017f737461626c6520636f696e000000000000000000000000000000000000000000815250905090565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600654905090565b60606004805461043a90611079565b80601f016020809104026020016040519081016040528092919081815260200182805461046690611079565b80156104b15780601f10610488576101008083540402835291602001916104b1565b820191905f5260205f20905b81548152906001019060200180831161049457829003601f168201915b5050505050905090565b5f806104c56105f5565b90506104d28185856106a0565b600191505092915050565b5f600554905090565b5f815111610529576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610520906110f3565b60405180910390fd5b5f5b815181101561056f5761056282828151811061054a57610549611111565b5b602002602001015169021e19e0c9bab2400000610790565b808060010191505061052b565b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610609838383600161080f565b505050565b5f6106198484610573565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461069a578181101561068b578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106829392919061114d565b60405180910390fd5b61069984848484035f61080f565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610710575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107079190611182565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610780575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107779190611182565b60405180910390fd5b61078b8383836109de565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610800575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107f79190611182565b60405180910390fd5b61080b5f83836109de565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361087f575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108769190611182565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ef575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016108e69190611182565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156109d8578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109cf9190610dbf565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a2e578060025f828254610a2291906111c8565b92505081905550610afc565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610ab7578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610aae9392919061114d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b43578060025f8282540392505081905550610b8d565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610dbf565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c2e578082015181840152602081019050610c13565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610c5382610bf7565b610c5d8185610c01565b9350610c6d818560208601610c11565b610c7681610c39565b840191505092915050565b5f6020820190508181035f830152610c998184610c49565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610cdb82610cb2565b9050919050565b610ceb81610cd1565b8114610cf5575f80fd5b50565b5f81359050610d0681610ce2565b92915050565b5f819050919050565b610d1e81610d0c565b8114610d28575f80fd5b50565b5f81359050610d3981610d15565b92915050565b5f8060408385031215610d5557610d54610caa565b5b5f610d6285828601610cf8565b9250506020610d7385828601610d2b565b9150509250929050565b5f8115159050919050565b610d9181610d7d565b82525050565b5f602082019050610daa5f830184610d88565b92915050565b610db981610d0c565b82525050565b5f602082019050610dd25f830184610db0565b92915050565b5f805f60608486031215610def57610dee610caa565b5b5f610dfc86828701610cf8565b9350506020610e0d86828701610cf8565b9250506040610e1e86828701610d2b565b9150509250925092565b5f60ff82169050919050565b610e3d81610e28565b82525050565b5f602082019050610e565f830184610e34565b92915050565b5f60208284031215610e7157610e70610caa565b5b5f610e7e84828501610cf8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610ec182610c39565b810181811067ffffffffffffffff82111715610ee057610edf610e8b565b5b80604052505050565b5f610ef2610ca1565b9050610efe8282610eb8565b919050565b5f67ffffffffffffffff821115610f1d57610f1c610e8b565b5b602082029050602081019050919050565b5f80fd5b5f610f44610f3f84610f03565b610ee9565b90508083825260208201905060208402830185811115610f6757610f66610f2e565b5b835b81811015610f905780610f7c8882610cf8565b845260208401935050602081019050610f69565b5050509392505050565b5f82601f830112610fae57610fad610e87565b5b8135610fbe848260208601610f32565b91505092915050565b5f60208284031215610fdc57610fdb610caa565b5b5f82013567ffffffffffffffff811115610ff957610ff8610cae565b5b61100584828501610f9a565b91505092915050565b5f806040838503121561102457611023610caa565b5b5f61103185828601610cf8565b925050602061104285828601610cf8565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061109057607f821691505b6020821081036110a3576110a261104c565b5b50919050565b7f4e6f20726563697069656e74732070726f7669646564000000000000000000005f82015250565b5f6110dd601683610c01565b91506110e8826110a9565b602082019050919050565b5f6020820190508181035f83015261110a816110d1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61114781610cd1565b82525050565b5f6060820190506111605f83018661113e565b61116d6020830185610db0565b61117a6040830184610db0565b949350505050565b5f6020820190506111955f83018461113e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111d282610d0c565b91506111dd83610d0c565b92508282019050808211156111f5576111f461119b565b5b9291505056fea2646970667358221220755e22c2cce07790f39fc4bf741a46c908fdd9a0d558f7834e31c5da6a83478a64736f6c63430008180033