60806040523480156200001157600080fd5b506040518060400160405280600981526020017f74657374207765746800000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f77657468000000000000000000000000000000000000000000000000000000008152506012826003908162000091919062000508565b508160049081620000a3919062000508565b5080600560006101000a81548160ff021916908360ff160217905550505050620000d333620000da60201b60201c565b5062000687565b6000620000f88269021e19e0c9bab24000006200010160201b60201c565b60019050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200013b57600080fd5b62000157816002546200026360201b620007c21790919060201c565b600281905550620001b5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200026360201b620007c21790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000257919062000600565b60405180910390a35050565b60008082846200027491906200064c565b9050838110156200028457600080fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200031057607f821691505b602082108103620003265762000325620002c8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000351565b6200039c868362000351565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003e9620003e3620003dd84620003b4565b620003be565b620003b4565b9050919050565b6000819050919050565b6200040583620003c8565b6200041d6200041482620003f0565b8484546200035e565b825550505050565b600090565b6200043462000425565b62000441818484620003fa565b505050565b5b8181101562000469576200045d6000826200042a565b60018101905062000447565b5050565b601f821115620004b85762000482816200032c565b6200048d8462000341565b810160208510156200049d578190505b620004b5620004ac8562000341565b83018262000446565b50505b505050565b600082821c905092915050565b6000620004dd60001984600802620004bd565b1980831691505092915050565b6000620004f88383620004ca565b9150826002028217905092915050565b62000513826200028e565b67ffffffffffffffff8111156200052f576200052e62000299565b5b6200053b8254620002f7565b620005488282856200046d565b600060209050601f8311600181146200058057600084156200056b578287015190505b620005778582620004ea565b865550620005e7565b601f19841662000590866200032c565b60005b82811015620005ba5784890151825560018201915060208501945060208101905062000593565b86831015620005da5784890151620005d6601f891682620004ca565b8355505b6001600288020188555050505b505050505050565b620005fa81620003b4565b82525050565b6000602082019050620006176000830184620005ef565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200065982620003b4565b91506200066683620003b4565b92508282019050808211156200068157620006806200061d565b5b92915050565b61121780620006976000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c5780639ed93318116100665780639ed933181461025f578063a457c2d71461028f578063a9059cbb146102bf578063dd62ed3e146102ef576100ea565b806370a08231146101f557806379cc67901461022557806395d89b4114610241576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806342966c68146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761031f565b6040516101049190610e6b565b60405180910390f35b61012760048036038101906101229190610f26565b6103b1565b6040516101349190610f81565b60405180910390f35b6101456103c8565b6040516101529190610fab565b60405180910390f35b61017560048036038101906101709190610fc6565b6103d2565b6040516101829190610f81565b60405180910390f35b610193610483565b6040516101a09190611035565b60405180910390f35b6101c360048036038101906101be9190610f26565b61049a565b6040516101d09190610f81565b60405180910390f35b6101f360048036038101906101ee9190611050565b61053f565b005b61020f600480360381019061020a919061107d565b61054c565b60405161021c9190610fab565b60405180910390f35b61023f600480360381019061023a9190610f26565b610594565b005b6102496105ce565b6040516102569190610e6b565b60405180910390f35b6102796004803603810190610274919061107d565b610660565b6040516102869190610f81565b60405180910390f35b6102a960048036038101906102a49190610f26565b61067f565b6040516102b69190610f81565b60405180910390f35b6102d960048036038101906102d49190610f26565b610724565b6040516102e69190610f81565b60405180910390f35b610309600480360381019061030491906110aa565b61073b565b6040516103169190610fab565b60405180910390f35b60606003805461032e90611119565b80601f016020809104026020016040519081016040528092919081815260200182805461035a90611119565b80156103a75780601f1061037c576101008083540402835291602001916103a7565b820191906000526020600020905b81548152906001019060200180831161038a57829003601f168201915b5050505050905090565b60006103be3384846107ea565b6001905092915050565b6000600254905090565b60006103df848484610947565b610478843361047385600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1090919063ffffffff16565b6107ea565b600190509392505050565b6000600560009054906101000a900460ff16905090565b6000610535338461053085600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c290919063ffffffff16565b6107ea565b6001905092915050565b6105493382610b39565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006105b2826105a4853361073b565b610b1090919063ffffffff16565b90506105bf8333836107ea565b6105c98383610b39565b505050565b6060600480546105dd90611119565b80601f016020809104026020016040519081016040528092919081815260200182805461060990611119565b80156106565780601f1061062b57610100808354040283529160200191610656565b820191906000526020600020905b81548152906001019060200180831161063957829003601f168201915b5050505050905090565b60006106768269021e19e0c9bab2400000610c8a565b60019050919050565b600061071a338461071585600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1090919063ffffffff16565b6107ea565b6001905092915050565b6000610731338484610947565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008082846107d19190611179565b9050838110156107e057600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361082357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361085c57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161093a9190610fab565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361098057600080fd5b6109d1816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a64816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b039190610fab565b60405180910390a3505050565b600082821115610b1f57600080fd5b60008284610b2d91906111ad565b90508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7257600080fd5b610b8781600254610b1090919063ffffffff16565b600281905550610bde816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c7e9190610fab565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cc357600080fd5b610cd8816002546107c290919063ffffffff16565b600281905550610d2f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dcf9190610fab565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e15578082015181840152602081019050610dfa565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e3d82610ddb565b610e478185610de6565b9350610e57818560208601610df7565b610e6081610e21565b840191505092915050565b60006020820190508181036000830152610e858184610e32565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ebd82610e92565b9050919050565b610ecd81610eb2565b8114610ed857600080fd5b50565b600081359050610eea81610ec4565b92915050565b6000819050919050565b610f0381610ef0565b8114610f0e57600080fd5b50565b600081359050610f2081610efa565b92915050565b60008060408385031215610f3d57610f3c610e8d565b5b6000610f4b85828601610edb565b9250506020610f5c85828601610f11565b9150509250929050565b60008115159050919050565b610f7b81610f66565b82525050565b6000602082019050610f966000830184610f72565b92915050565b610fa581610ef0565b82525050565b6000602082019050610fc06000830184610f9c565b92915050565b600080600060608486031215610fdf57610fde610e8d565b5b6000610fed86828701610edb565b9350506020610ffe86828701610edb565b925050604061100f86828701610f11565b9150509250925092565b600060ff82169050919050565b61102f81611019565b82525050565b600060208201905061104a6000830184611026565b92915050565b60006020828403121561106657611065610e8d565b5b600061107484828501610f11565b91505092915050565b60006020828403121561109357611092610e8d565b5b60006110a184828501610edb565b91505092915050565b600080604083850312156110c1576110c0610e8d565b5b60006110cf85828601610edb565b92505060206110e085828601610edb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061113157607f821691505b602082108103611144576111436110ea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061118482610ef0565b915061118f83610ef0565b92508282019050808211156111a7576111a661114a565b5b92915050565b60006111b882610ef0565b91506111c383610ef0565b92508282039050818111156111db576111da61114a565b5b9291505056fea26469706673582212205c637d4d9dc1d9f527cc84249a6c95db190e29e48fd774270d02ab4ac8a67b4064736f6c63430008120033