60806040523480156200001157600080fd5b5062000032336d12aade6eb497b56e5fa1480000006200009160201b60201c565b60005b60648173ffffffffffffffffffffffffffffffffffffffff1610156200008a5762000074816c054f529ca52576bc68920000006200009160201b60201c565b80806200008190620001be565b91505062000035565b5062000272565b80600080828254620000a4919062000209565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620000fc919062000209565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000163919062000255565b60405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001cb826200019e565b915073ffffffffffffffffffffffffffffffffffffffff8203620001f457620001f36200016f565b5b600182019050919050565b6000819050919050565b60006200021682620001ff565b91506200022383620001ff565b92508282019050808211156200023e576200023d6200016f565b5b92915050565b6200024f81620001ff565b82525050565b60006020820190506200026c600083018462000244565b92915050565b61108680620002826000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806342966c681161007157806342966c68146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610af2565b60405180910390f35b6100f160048036038101906100ec9190610bad565b6102da565b6040516100fe9190610c08565b60405180910390f35b61010f6102f1565b60405161011c9190610c32565b60405180910390f35b61013f600480360381019061013a9190610c4d565b6102fa565b60405161014c9190610c08565b60405180910390f35b61015d6103e4565b60405161016a9190610cbc565b60405180910390f35b61018d60048036038101906101889190610bad565b6103ed565b60405161019a9190610c08565b60405180910390f35b6101bd60048036038101906101b89190610cd7565b61048b565b005b6101d960048036038101906101d49190610d04565b610498565b6040516101e69190610c32565b60405180910390f35b6101f76104e1565b6040516102049190610af2565b60405180910390f35b61022760048036038101906102229190610bad565b61051e565b6040516102349190610c08565b60405180910390f35b61025760048036038101906102529190610bad565b6105fb565b6040516102649190610c08565b60405180910390f35b61028760048036038101906102829190610d31565b610612565b6040516102949190610c32565b60405180910390f35b60606040518060400160405280600781526020017f506f6b656d6f6e00000000000000000000000000000000000000000000000000815250905090565b60006102e7338484610699565b6001905092915050565b60008054905090565b6000610307848484610784565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156103cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c290610de3565b60405180910390fd5b6103d88533858403610699565b60019150509392505050565b60006012905090565b6000610481338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461047c9190610e32565b610699565b6001905092915050565b6104953382610912565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606040518060400160405280600481526020017f504f4b4500000000000000000000000000000000000000000000000000000000815250905090565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105da90610ed8565b60405180910390fd5b6105f03385858403610699565b600191505092915050565b6000610608338484610784565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107779190610c32565b60405180910390a3505050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561080b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080290610f6a565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108a09190610e32565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109049190610c32565b60405180910390a350505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099090610ffc565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808282546109f0919061101c565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a559190610c32565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a9c578082015181840152602081019050610a81565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ac482610a62565b610ace8185610a6d565b9350610ade818560208601610a7e565b610ae781610aa8565b840191505092915050565b60006020820190508181036000830152610b0c8184610ab9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b4482610b19565b9050919050565b610b5481610b39565b8114610b5f57600080fd5b50565b600081359050610b7181610b4b565b92915050565b6000819050919050565b610b8a81610b77565b8114610b9557600080fd5b50565b600081359050610ba781610b81565b92915050565b60008060408385031215610bc457610bc3610b14565b5b6000610bd285828601610b62565b9250506020610be385828601610b98565b9150509250929050565b60008115159050919050565b610c0281610bed565b82525050565b6000602082019050610c1d6000830184610bf9565b92915050565b610c2c81610b77565b82525050565b6000602082019050610c476000830184610c23565b92915050565b600080600060608486031215610c6657610c65610b14565b5b6000610c7486828701610b62565b9350506020610c8586828701610b62565b9250506040610c9686828701610b98565b9150509250925092565b600060ff82169050919050565b610cb681610ca0565b82525050565b6000602082019050610cd16000830184610cad565b92915050565b600060208284031215610ced57610cec610b14565b5b6000610cfb84828501610b98565b91505092915050565b600060208284031215610d1a57610d19610b14565b5b6000610d2884828501610b62565b91505092915050565b60008060408385031215610d4857610d47610b14565b5b6000610d5685828601610b62565b9250506020610d6785828601610b62565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000610dcd602883610a6d565b9150610dd882610d71565b604082019050919050565b60006020820190508181036000830152610dfc81610dc0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e3d82610b77565b9150610e4883610b77565b9250828201905080821115610e6057610e5f610e03565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610ec2602583610a6d565b9150610ecd82610e66565b604082019050919050565b60006020820190508181036000830152610ef181610eb5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000610f54602683610a6d565b9150610f5f82610ef8565b604082019050919050565b60006020820190508181036000830152610f8381610f47565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fe6602283610a6d565b9150610ff182610f8a565b604082019050919050565b6000602082019050818103600083015261101581610fd9565b9050919050565b600061102782610b77565b915061103283610b77565b925082820390508181111561104a57611049610e03565b5b9291505056fea26469706673582212204ee45339878a31085da482201c154ea8714a5954df25fc7c6ae3099ab617b77f64736f6c63430008120033