0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610fc1565b60405180910390f35b6100e660048036038101906100e19190610d2c565b610308565b6040516100f39190610fa6565b60405180910390f35b610104610326565b6040516101119190611083565b60405180910390f35b610134600480360381019061012f9190610cdd565b610330565b6040516101419190610fa6565b60405180910390f35b610152610409565b60405161015f919061109e565b60405180910390f35b610182600480360381019061017d9190610d2c565b610420565b60405161018f9190610fa6565b60405180910390f35b6101b260048036038101906101ad9190610c78565b6104d3565b6040516101bf9190611083565b60405180910390f35b6101d061051b565b6040516101dd9190610fc1565b60405180910390f35b61020060048036038101906101fb9190610d2c565b6105ad565b60405161020d9190610fa6565b60405180910390f35b610230600480360381019061022b9190610d2c565b61067a565b60405161023d9190610fa6565b60405180910390f35b610260600480360381019061025b9190610ca1565b610698565b60405161026d9190611083565b60405180910390f35b606060038054610285906111e7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b1906111e7565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c61031561077d565b8484610785565b6001905092915050565b6000600254905090565b600061033d848484610950565b6103fe8461034961077d565b6103f9856040518060600160405280602881526020016112dd60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103af61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006104c961042d61077d565b846104c4856001600061043e61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b610785565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461052a906111e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610556906111e7565b80156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b5050505050905090565b60006106706105ba61077d565b8461066b8560405180606001604052806025815260200161130560259139600160006105e461077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b6001905092915050565b600061068e61068761077d565b8484610950565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828461072e91906110d5565b905083811015610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076a90611023565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90611063565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90611003565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109439190611083565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790611043565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790610fe3565b60405180910390fd5b610a3b838383610c49565b610aa6816040518060600160405280602681526020016112b7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b39816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bd89190611083565b60405180910390a3505050565b6000838311158290610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c249190610fc1565b60405180910390fd5b5060008385610c3c919061112b565b9050809150509392505050565b505050565b600081359050610c5d81611288565b92915050565b600081359050610c728161129f565b92915050565b600060208284031215610c8a57600080fd5b6000610c9884828501610c4e565b91505092915050565b60008060408385031215610cb457600080fd5b6000610cc285828601610c4e565b9250506020610cd385828601610c4e565b9150509250929050565b600080600060608486031215610cf257600080fd5b6000610d0086828701610c4e565b9350506020610d1186828701610c4e565b9250506040610d2286828701610c63565b9150509250925092565b60008060408385031215610d3f57600080fd5b6000610d4d85828601610c4e565b9250506020610d5e85828601610c63565b9150509250929050565b610d7181611171565b82525050565b6000610d82826110b9565b610d8c81856110c4565b9350610d9c8185602086016111b4565b610da581611277565b840191505092915050565b6000610dbd6023836110c4565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e236022836110c4565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e89601b836110c4565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000610ec96025836110c4565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f2f6024836110c4565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b610f918161119d565b82525050565b610fa0816111a7565b82525050565b6000602082019050610fbb6000830184610d68565b92915050565b60006020820190508181036000830152610fdb8184610d77565b905092915050565b60006020820190508181036000830152610ffc81610db0565b9050919050565b6000602082019050818103600083015261101c81610e16565b9050919050565b6000602082019050818103600083015261103c81610e7c565b9050919050565b6000602082019050818103600083015261105c81610ebc565b9050919050565b6000602082019050818103600083015261107c81610f22565b9050919050565b60006020820190506110986000830184610f88565b92915050565b60006020820190506110b36000830184610f97565b92915050565b600081519050919050565b600082825260208201905092915050565b60006110e08261119d565b91506110eb8361119d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111205761111f611219565b5b828201905092915050565b60006111368261119d565b91506111418361119d565b92508282101561115457611153611219565b5b828203905092915050565b600061116a8261117d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156111d25780820151818401526020810190506111b7565b838111156111e1576000848401525b50505050565b600060028204905060018216806111ff57607f821691505b6020821081141561121357611212611248565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6112918161115f565b811461129c57600080fd5b50565b6112a88161119d565b81146112b357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b94f69d2b09c76665c7ef6a2fb5c700b9011ac0660163f9d32c0c0a0b83a37bc64736f6c63430008000033
0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f474d4200000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f474d42000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000309565b508060049080519060200190620000af92919062000309565b506012600560006101000a81548160ff021916908360ff1602179055505050620000ec336b1027e72f1f12813088000000620000f260201b60201c565b620005bb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000165576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015c9062000470565b60405180910390fd5b6200017960008383620002a160201b60201c565b6200019581600254620002a660201b6200071f1790919060201c565b600281905550620001f3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002a660201b6200071f1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000295919062000492565b60405180910390a35050565b505050565b6000808284620002b79190620004c0565b905083811015620002ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f6906200044e565b60405180910390fd5b8091505092915050565b828054620003179062000527565b90600052602060002090601f0160209004810192826200033b576000855562000387565b82601f106200035657805160ff191683800117855562000387565b8280016001018555821562000387579182015b828111156200038657825182559160200191906001019062000369565b5b5090506200039691906200039a565b5090565b5b80821115620003b55760008160009055506001016200039b565b5090565b6000620003c8601b83620004af565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006200040a601f83620004af565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000448816200051d565b82525050565b600060208201905081810360008301526200046981620003b9565b9050919050565b600060208201905081810360008301526200048b81620003fb565b9050919050565b6000602082019050620004a960008301846200043d565b92915050565b600082825260208201905092915050565b6000620004cd826200051d565b9150620004da836200051d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200051257620005116200055d565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200054057607f821691505b602082108114156200055757620005566200058c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61135f80620005cb6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610fc1565b60405180910390f35b6100e660048036038101906100e19190610d2c565b610308565b6040516100f39190610fa6565b60405180910390f35b610104610326565b6040516101119190611083565b60405180910390f35b610134600480360381019061012f9190610cdd565b610330565b6040516101419190610fa6565b60405180910390f35b610152610409565b60405161015f919061109e565b60405180910390f35b610182600480360381019061017d9190610d2c565b610420565b60405161018f9190610fa6565b60405180910390f35b6101b260048036038101906101ad9190610c78565b6104d3565b6040516101bf9190611083565b60405180910390f35b6101d061051b565b6040516101dd9190610fc1565b60405180910390f35b61020060048036038101906101fb9190610d2c565b6105ad565b60405161020d9190610fa6565b60405180910390f35b610230600480360381019061022b9190610d2c565b61067a565b60405161023d9190610fa6565b60405180910390f35b610260600480360381019061025b9190610ca1565b610698565b60405161026d9190611083565b60405180910390f35b606060038054610285906111e7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b1906111e7565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c61031561077d565b8484610785565b6001905092915050565b6000600254905090565b600061033d848484610950565b6103fe8461034961077d565b6103f9856040518060600160405280602881526020016112dd60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103af61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006104c961042d61077d565b846104c4856001600061043e61077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b610785565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461052a906111e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610556906111e7565b80156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b5050505050905090565b60006106706105ba61077d565b8461066b8560405180606001604052806025815260200161130560259139600160006105e461077d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b610785565b6001905092915050565b600061068e61068761077d565b8484610950565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080828461072e91906110d5565b905083811015610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076a90611023565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90611063565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90611003565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109439190611083565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790611043565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790610fe3565b60405180910390fd5b610a3b838383610c49565b610aa6816040518060600160405280602681526020016112b7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610be59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b39816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461071f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bd89190611083565b60405180910390a3505050565b6000838311158290610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c249190610fc1565b60405180910390fd5b5060008385610c3c919061112b565b9050809150509392505050565b505050565b600081359050610c5d81611288565b92915050565b600081359050610c728161129f565b92915050565b600060208284031215610c8a57600080fd5b6000610c9884828501610c4e565b91505092915050565b60008060408385031215610cb457600080fd5b6000610cc285828601610c4e565b9250506020610cd385828601610c4e565b9150509250929050565b600080600060608486031215610cf257600080fd5b6000610d0086828701610c4e565b9350506020610d1186828701610c4e565b9250506040610d2286828701610c63565b9150509250925092565b60008060408385031215610d3f57600080fd5b6000610d4d85828601610c4e565b9250506020610d5e85828601610c63565b9150509250929050565b610d7181611171565b82525050565b6000610d82826110b9565b610d8c81856110c4565b9350610d9c8185602086016111b4565b610da581611277565b840191505092915050565b6000610dbd6023836110c4565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e236022836110c4565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e89601b836110c4565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000610ec96025836110c4565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f2f6024836110c4565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b610f918161119d565b82525050565b610fa0816111a7565b82525050565b6000602082019050610fbb6000830184610d68565b92915050565b60006020820190508181036000830152610fdb8184610d77565b905092915050565b60006020820190508181036000830152610ffc81610db0565b9050919050565b6000602082019050818103600083015261101c81610e16565b9050919050565b6000602082019050818103600083015261103c81610e7c565b9050919050565b6000602082019050818103600083015261105c81610ebc565b9050919050565b6000602082019050818103600083015261107c81610f22565b9050919050565b60006020820190506110986000830184610f88565b92915050565b60006020820190506110b36000830184610f97565b92915050565b600081519050919050565b600082825260208201905092915050565b60006110e08261119d565b91506110eb8361119d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111205761111f611219565b5b828201905092915050565b60006111368261119d565b91506111418361119d565b92508282101561115457611153611219565b5b828203905092915050565b600061116a8261117d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156111d25780820151818401526020810190506111b7565b838111156111e1576000848401525b50505050565b600060028204905060018216806111ff57607f821691505b6020821081141561121357611212611248565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6112918161115f565b811461129c57600080fd5b50565b6112a88161119d565b81146112b357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b94f69d2b09c76665c7ef6a2fb5c700b9011ac0660163f9d32c0c0a0b83a37bc64736f6c63430008000033