0x60806040526a52b7d2dcc80cd2e40000006002556040518060400160405280600581526020017f74657374310000000000000000000000000000000000000000000000000000008152506003908162000059919062000379565b506040518060400160405280600581526020017f746573743100000000000000000000000000000000000000000000000000000081525060049081620000a0919062000379565b506012600555348015620000b357600080fd5b506002546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000460565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200018157607f821691505b60208210810362000197576200019662000139565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001c2565b6200020d8683620001c2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200025a620002546200024e8462000225565b6200022f565b62000225565b9050919050565b6000819050919050565b620002768362000239565b6200028e620002858262000261565b848454620001cf565b825550505050565b600090565b620002a562000296565b620002b28184846200026b565b505050565b5b81811015620002da57620002ce6000826200029b565b600181019050620002b8565b5050565b601f8211156200032957620002f3816200019d565b620002fe84620001b2565b810160208510156200030e578190505b620003266200031d85620001b2565b830182620002b7565b50505b505050565b600082821c905092915050565b60006200034e600019846008026200032e565b1980831691505092915050565b60006200036983836200033b565b9150826002028217905092915050565b6200038482620000ff565b67ffffffffffffffff811115620003a0576200039f6200010a565b5b620003ac825462000168565b620003b9828285620002de565b600060209050601f831160018114620003f15760008415620003dc578287015190505b620003e885826200035b565b86555062000458565b601f19841662000401866200019d565b60005b828110156200042b5784890151825560018201915060208501945060208101905062000404565b868310156200044b578489015162000447601f8916826200033b565b8355505b6001600288020188555050505b505050505050565b610d1680620004706000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063313ce56711610066578063313ce5671461016f57806370a082311461018d57806395d89b41146101bd578063a9059cbb146101db578063dd62ed3e1461020b5761009e565b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100f157806323b872dd1461010f57806327e235e31461013f575b600080fd5b6100ab61023b565b6040516100b891906108f6565b60405180910390f35b6100db60048036038101906100d691906109b1565b6102c9565b6040516100e89190610a0c565b60405180910390f35b6100f96103bb565b6040516101069190610a36565b60405180910390f35b61012960048036038101906101249190610a51565b6103c1565b6040516101369190610a0c565b60405180910390f35b61015960048036038101906101549190610aa4565b6105e7565b6040516101669190610a36565b60405180910390f35b6101776105ff565b6040516101849190610a36565b60405180910390f35b6101a760048036038101906101a29190610aa4565b610605565b6040516101b49190610a36565b60405180910390f35b6101c561064d565b6040516101d291906108f6565b60405180910390f35b6101f560048036038101906101f091906109b1565b6106db565b6040516102029190610a0c565b60405180910390f35b61022560048036038101906102209190610ad1565b610841565b6040516102329190610a36565b60405180910390f35b6003805461024890610b40565b80601f016020809104026020016040519081016040528092919081815260200182805461027490610b40565b80156102c15780601f10610296576101008083540402835291602001916102c1565b820191906000526020600020905b8154815290600101906020018083116102a457829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103a99190610a36565b60405180910390a36001905092915050565b60025481565b6000816103cd85610605565b101561040e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040590610bbd565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c490610c29565b60405180910390fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461051b9190610c78565b92505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105709190610cac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105d49190610a36565b60405180910390a3600190509392505050565b60006020528060005260406000206000915090505481565b60055481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6004805461065a90610b40565b80601f016020809104026020016040519081016040528092919081815260200182805461068690610b40565b80156106d35780601f106106a8576101008083540402835291602001916106d3565b820191906000526020600020905b8154815290600101906020018083116106b657829003601f168201915b505050505081565b6000816106e733610605565b1015610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90610bbd565b60405180910390fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107769190610c78565b92505081905550816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107cb9190610cac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161082f9190610a36565b60405180910390a36001905092915050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600081519050919050565b600082825260208201905092915050565b60005b838110156108a0578082015181840152602081019050610885565b60008484015250505050565b6000601f19601f8301169050919050565b60006108c882610866565b6108d28185610871565b93506108e2818560208601610882565b6108eb816108ac565b840191505092915050565b6000602082019050818103600083015261091081846108bd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109488261091d565b9050919050565b6109588161093d565b811461096357600080fd5b50565b6000813590506109758161094f565b92915050565b6000819050919050565b61098e8161097b565b811461099957600080fd5b50565b6000813590506109ab81610985565b92915050565b600080604083850312156109c8576109c7610918565b5b60006109d685828601610966565b92505060206109e78582860161099c565b9150509250929050565b60008115159050919050565b610a06816109f1565b82525050565b6000602082019050610a2160008301846109fd565b92915050565b610a308161097b565b82525050565b6000602082019050610a4b6000830184610a27565b92915050565b600080600060608486031215610a6a57610a69610918565b5b6000610a7886828701610966565b9350506020610a8986828701610966565b9250506040610a9a8682870161099c565b9150509250925092565b600060208284031215610aba57610ab9610918565b5b6000610ac884828501610966565b91505092915050565b60008060408385031215610ae857610ae7610918565b5b6000610af685828601610966565b9250506020610b0785828601610966565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610b5857607f821691505b602082108103610b6b57610b6a610b11565b5b50919050565b7f62616c616e636520746f6f206c6f770000000000000000000000000000000000600082015250565b6000610ba7600f83610871565b9150610bb282610b71565b602082019050919050565b60006020820190508181036000830152610bd681610b9a565b9050919050565b7f616c6c6f77616e636520746f6f206c6f77000000000000000000000000000000600082015250565b6000610c13601183610871565b9150610c1e82610bdd565b602082019050919050565b60006020820190508181036000830152610c4281610c06565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c838261097b565b9150610c8e8361097b565b9250828201905080821115610ca657610ca5610c49565b5b92915050565b6000610cb78261097b565b9150610cc28361097b565b9250828203905081811115610cda57610cd9610c49565b5b9291505056fea2646970667358221220a704128e7047fab44394f3a5172b46a96338f03436970ec3377dc3be6931c62564736f6c63430008120033