608060405234801561000f575f80fd5b50336040518060400160405280600f81526020017f55534443205465737420546f6b656e00000000000000000000000000000000008152506040518060400160405280600481526020017f5553444300000000000000000000000000000000000000000000000000000000815250816003908161008c91906106fe565b50806004908161009c91906106fe565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361010f575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610106919061080c565b60405180910390fd5b61011e8161015b60201b60201c565b506101563361013161021e60201b60201c565b600a61013d919061098d565b620f424061014b91906109d7565b61022660201b60201c565b610aa8565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6006905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610296575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161028d919061080c565b60405180910390fd5b6102a75f83836102ab60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102fb578060025f8282546102ef9190610a18565b925050819055506103c9565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610384578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161037b93929190610a5a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610410578060025f828254039250508190555061045a565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516104b79190610a8f565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061053f57607f821691505b602082108103610552576105516104fb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610579565b6105be8683610579565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6106026105fd6105f8846105d6565b6105df565b6105d6565b9050919050565b5f819050919050565b61061b836105e8565b61062f61062782610609565b848454610585565b825550505050565b5f90565b610643610637565b61064e818484610612565b505050565b5b81811015610671576106665f8261063b565b600181019050610654565b5050565b601f8211156106b65761068781610558565b6106908461056a565b8101602085101561069f578190505b6106b36106ab8561056a565b830182610653565b50505b505050565b5f82821c905092915050565b5f6106d65f19846008026106bb565b1980831691505092915050565b5f6106ee83836106c7565b9150826002028217905092915050565b610707826104c4565b67ffffffffffffffff8111156107205761071f6104ce565b5b61072a8254610528565b610735828285610675565b5f60209050601f831160018114610766575f8415610754578287015190505b61075e85826106e3565b8655506107c5565b601f19841661077486610558565b5f5b8281101561079b57848901518255600182019150602085019450602081019050610776565b868310156107b857848901516107b4601f8916826106c7565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107f6826107cd565b9050919050565b610806816107ec565b82525050565b5f60208201905061081f5f8301846107fd565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156108a75780860481111561088357610882610825565b5b60018516156108925780820291505b80810290506108a085610852565b9450610867565b94509492505050565b5f826108bf576001905061097a565b816108cc575f905061097a565b81600181146108e257600281146108ec5761091b565b600191505061097a565b60ff8411156108fe576108fd610825565b5b8360020a91508482111561091557610914610825565b5b5061097a565b5060208310610133831016604e8410600b84101617156109505782820a90508381111561094b5761094a610825565b5b61097a565b61095d848484600161085e565b9250905081840481111561097457610973610825565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610997826105d6565b91506109a283610981565b92506109cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846108b0565b905092915050565b5f6109e1826105d6565b91506109ec836105d6565b92508282026109fa816105d6565b91508282048414831517610a1157610a10610825565b5b5092915050565b5f610a22826105d6565b9150610a2d836105d6565b9250828201905080821115610a4557610a44610825565b5b92915050565b610a54816105d6565b82525050565b5f606082019050610a6d5f8301866107fd565b610a7a6020830185610a4b565b610a876040830184610a4b565b949350505050565b5f602082019050610aa25f830184610a4b565b92915050565b61111380610ab55f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b41146101ff578063a9059cbb1461021d578063dd62ed3e1461024d578063f2fde38b1461027d576100cd565b806370a08231146101a7578063715018a6146101d75780638da5cb5b146101e1576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d57806340c10f191461018b575b5f80fd5b6100d9610299565b6040516100e69190610d8c565b60405180910390f35b61010960048036038101906101049190610e3d565b610329565b6040516101169190610e95565b60405180910390f35b61012761034b565b6040516101349190610ebd565b60405180910390f35b61015760048036038101906101529190610ed6565b610354565b6040516101649190610e95565b60405180910390f35b610175610382565b6040516101829190610f41565b60405180910390f35b6101a560048036038101906101a09190610e3d565b61038a565b005b6101c160048036038101906101bc9190610f5a565b610398565b6040516101ce9190610ebd565b60405180910390f35b6101df6103dd565b005b6101e96103f0565b6040516101f69190610f94565b60405180910390f35b610207610418565b6040516102149190610d8c565b60405180910390f35b61023760048036038101906102329190610e3d565b6104a8565b6040516102449190610e95565b60405180910390f35b61026760048036038101906102629190610fad565b6104ca565b6040516102749190610ebd565b60405180910390f35b61029760048036038101906102929190610f5a565b61054c565b005b6060600380546102a890611018565b80601f01602080910402602001604051908101604052809291908181526020018280546102d490611018565b801561031f5780601f106102f65761010080835404028352916020019161031f565b820191905f5260205f20905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b5f806103336105d0565b90506103408185856105d7565b600191505092915050565b5f600254905090565b5f8061035e6105d0565b905061036b8582856105e9565b61037685858561067b565b60019150509392505050565b5f6006905090565b610394828261076b565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103e56107ea565b6103ee5f610871565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461042790611018565b80601f016020809104026020016040519081016040528092919081815260200182805461045390611018565b801561049e5780601f106104755761010080835404028352916020019161049e565b820191905f5260205f20905b81548152906001019060200180831161048157829003601f168201915b5050505050905090565b5f806104b26105d0565b90506104bf81858561067b565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105546107ea565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105c4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016105bb9190610f94565b60405180910390fd5b6105cd81610871565b50565b5f33905090565b6105e48383836001610934565b505050565b5f6105f484846104ca565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106755781811015610666578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161065d93929190611048565b60405180910390fd5b61067484848484035f610934565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106eb575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106e29190610f94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361075b575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107529190610f94565b60405180910390fd5b610766838383610b03565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107db575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107d29190610f94565b60405180910390fd5b6107e65f8383610b03565b5050565b6107f26105d0565b73ffffffffffffffffffffffffffffffffffffffff166108106103f0565b73ffffffffffffffffffffffffffffffffffffffff161461086f576108336105d0565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108669190610f94565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109a4575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161099b9190610f94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a14575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a0b9190610f94565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610afd578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610af49190610ebd565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b53578060025f828254610b4791906110aa565b92505081905550610c21565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610bdc578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610bd393929190611048565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c68578060025f8282540392505081905550610cb2565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d0f9190610ebd565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610d5e82610d1c565b610d688185610d26565b9350610d78818560208601610d36565b610d8181610d44565b840191505092915050565b5f6020820190508181035f830152610da48184610d54565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610dd982610db0565b9050919050565b610de981610dcf565b8114610df3575f80fd5b50565b5f81359050610e0481610de0565b92915050565b5f819050919050565b610e1c81610e0a565b8114610e26575f80fd5b50565b5f81359050610e3781610e13565b92915050565b5f8060408385031215610e5357610e52610dac565b5b5f610e6085828601610df6565b9250506020610e7185828601610e29565b9150509250929050565b5f8115159050919050565b610e8f81610e7b565b82525050565b5f602082019050610ea85f830184610e86565b92915050565b610eb781610e0a565b82525050565b5f602082019050610ed05f830184610eae565b92915050565b5f805f60608486031215610eed57610eec610dac565b5b5f610efa86828701610df6565b9350506020610f0b86828701610df6565b9250506040610f1c86828701610e29565b9150509250925092565b5f60ff82169050919050565b610f3b81610f26565b82525050565b5f602082019050610f545f830184610f32565b92915050565b5f60208284031215610f6f57610f6e610dac565b5b5f610f7c84828501610df6565b91505092915050565b610f8e81610dcf565b82525050565b5f602082019050610fa75f830184610f85565b92915050565b5f8060408385031215610fc357610fc2610dac565b5b5f610fd085828601610df6565b9250506020610fe185828601610df6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061102f57607f821691505b60208210810361104257611041610feb565b5b50919050565b5f60608201905061105b5f830186610f85565b6110686020830185610eae565b6110756040830184610eae565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110b482610e0a565b91506110bf83610e0a565b92508282019050808211156110d7576110d661107d565b5b9291505056fea26469706673582212209cd296949b952c773dafb785196d67c80a433b87dd6f2cd95b2cde1193ecbddb64736f6c634300081a0033